科学の箱

科学・IT・登山の話題

機械学習

Pythonではじめる機械学習 – Chap05 – Model Evaluation and Improvement

投稿日:2019年12月21日 更新日:

Chapter 5. Model Evaluation and Improvement

学習モデルの評価

  • 定量的なモデルの評価は教師付きモデルが主になる。
  • 教師なしモデルは定性的なアプローチで評価することになる。

教師付きモデル評価の手順

  1. train_test_split()により訓練データと検証データに分割する
  2. fit()によりモデルを生成する
  3. scoreを確認する→高いほどよいが過学習にならないように注意する

モデル評価

  • 訓練データのスコアを高くすることが目的ではない。モデルを一般化させることが重要である。
  • クロスバリデーション
  • scoreにより提供される正解率及びR2
  • グリッドサーチ

5.1 Cross-Validation

クロスバリデーションとは

  • 生成されたモデルについて一般化したときの性能を評価する
  • k-fold クロスバリデーションが有名

5.1.1 Cross-Validation in scikit-learn

cross validationの手順

  • モデルの生成
  • cross_val_score()で各foldのスコアを確認する
  • 各scoreの平均および分散を確認する

cross validationスコアの分散が高い理由

  • 分割されたデータに偏りがある→実際にデータを見てみてどのような偏りがあるかを確認する
  • サンプルされたデータ量が少ない→小さいFoldで試してみる

5.1.2 Benefits of Cross-Validation

Cross validationのメリット

  • ランダムの結果として学習データ→分類難しい、テストデータ→分類簡単の場合、テストデータの正解度はかなり高くなる。
  • ランダムの結果として学習データ→分類簡単、テストデータ→分類難しい場合、テストデータの正解度はかなり低くなる。
  • Cross validationにより上記のランダムデータにより正解度は平均化される。
  • one time の検証だと75%のみが学習に用いられる。foldを増やすと、例えば10回では90%まで上げることができる。

Cross validationのデメリット

  • コストが高い

Cross Validationで注意すべきこと

  • CVはモデルを生成するわけではない。
  • 内部的にはモデルが生成される。しかし目的は学習データに対して生成されたモデルがどの程度適合するかを確認するだけである。

5.1.3 Stratified k-Fold Cross-Validation and Other Strategies

KFoldはデータがソートされたままで分割される

  • あらかじめデータがソートされていると正しい割合を反映しない
  • Stratified Cross Validationを用いるか、KFoldでShuffle = Trueとする。

Leave one out

  • 一件を除きすべてを学習データにする。一件はテストデータになる。
  • テストデータの一件をランダムに変えながら交差検証を実行する
  • 計算コストは高くなるが、検証結果はホールドアウト、交差検証よりよくなる?

交差検証におけるグループ分割の方法は多種ある

  • ただし一般的に使われるのはKFold, StratifiedFold, GroupKFoldである。

5.2 Grid Search

モデル構築の手順

  • モデルが一般化できるかを評価=交差検証
  • モデルのパラメータを改善

5.2.2 The Danger of Overfitting the Parameters and the Validation Set

Grid Search

  • パラメータの評価にテストデータを用いる→新しいデータに対して同じ正解率が出るかは不明、過学習になっている可能性が高い。
  • 学習データによるモデルの生成→テストデータによる評価→選択→これによりテストデータに対して最適化されたモデルが選択される。モデルはテストデータの情報を含んでいるために、新しいデータに対しての適合はよくわからない。

5.2.3 Grid Search with Cross-Validation

Grid SearchとCVを組み合わせる

  • 複数モデルを構築するので検証データのスコアを平均できる
  • データに極端に依存した結果とはならない

Grid SearchとCVは同じ文脈で使われることが多い

  • 「交差検証」という用語をGrid Searchも含めて使うことが多い
  • CVはあくまでも別データに対してモデルを評価する手法である
  • CVではパラメータの探索は行わない

5.3 Evaluation Metrics and Scoring

confused matrixにより評価する

  • accuracyのみではモデルに対する正しい評価ができない
  • accuracy, recall, precision, f1を含めた評価が重要である。

threshholdを変更して分類を調整する

  • がん患者の発見ではrecallを上げる、つまりFalse Positiveを受け入れることが重要である。
  • この調整はthreshholdで実施する
  • 正しいthreshholdを見つける定量的な方法はない

Operating point

  • ビジネス要件に従ってrecallを決定する
  • ただし新しいモデルにおいてrecallおよびprecisionのトレードオフがどのようになっているかはわからない
  • そこでprecision recall curveを利用する

Receiver operating characteristics curve(ROC)

  • Recall = True Positive Ratio
  • ROC = True Positive Ratio against False Positive Ration

5.3.3 Metrics for Multiclass Classification

多クラス分類の評価は基本はバイナリ分類と同じ

  • 正解率
  • 混同行列

5.3.4 Regression Metrics

線形モデルの評価は分類に比べると単純である

  • score関数を利用する
  • R2を利用する

5.3.5 Using Evaluation Metrics in Model Selection

GridSearchCVのcross_val_score()におけるモデル選択の基準

  • scoringパラメータのデフォルトはaccuracyである。
  • このパラメータを変更することで評価に用いる基準を変更できる

メタ情報

inarticle



メタ情報

inarticle



-機械学習

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

DictVectorizerを使ってカテゴリデータについて特徴抽出をする

都市における温度データを考える。 measure = [ {‘city’: ‘Dubai’, ‘temperature’: 33.}, {‘city’: ‘London’, ‘temperature’ …

no image

線形回帰とリッジ回帰とラッソ回帰の違い

用語 線形回帰 データから平均二乗誤差を最低にするパラメータΘを求めて、直線で回帰すること $$ y = Θ_0 + Θ_1 \times x $$ コスト関数 損失関数とも呼ばれる。実際のデータと予 …

no image

ラテン方格

ラテン方格は1~nまでの数字についてn x nの正方行列に一回だけ現れるように並べたものである。ラテン方格を利用して実験の割り付けを行う実験計画法がラテン方格法である。 ラテン方格法と似た実験計画法に …

no image

条件付きでレコードを取得する

データフレームでは条件付きでレコードを取得できる。 以下のようなフォーマットのデータフレームを考える id name height vector1 <- c(1, 2, 3, 4, 5) vec …

no image

Pythonではじめる機械学習 – Chap03

3.1 Types of Unsupervised Learning 教師なし学習の例 次元削減: 重要な特徴量のみを使って元のデータを表現する トピック抽出: データを構成する部品を見つける クラス …

2019年12月
« 11月   4月 »
 1
2345678
9101112131415
16171819202122
23242526272829
3031  

side bar top



アーカイブ

カテゴリー