科学の箱

科学・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

ラテン方格

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

no image

手書き数字のデータセットについてイメージを確認

sklearnには手書き数字のデータが用意されている。このデータはイメージの分類モデルを学ぶためによいスタートである。今回はこのバイナリデータを読み込み、イメージとして確認する。 内容 load_di …

no image

線形回帰とリッジ回帰を比較する

リッジ回帰はL2ノルムの正則項を導入することで、過学習を防ぐ。この場合過学習を防ぐとは、重みを0の方向に動かすという意味である。実際に線形回帰とリッジ回帰を比べてみて、どのようにモデルが変わるかを確認 …

no image

Core Concept in Data Analysis – Week 2

1D analysis summary ヒストグラム ヒストグラムのタイプ:gaussian/power law 中心極限定理 確率分布 ブートストラップによる検証 gaussian 測定誤差もしくは …

no image

dataanalysis-002-week4

クラスタリング SVDと組み合わせることでよりクラスに分かれているクラスタリングを実行できる。 散布図でクラスタリングする変数を探す クラスタリング SVDを実行する SVDの結果をクラスタリングに取 …

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

side bar top



アーカイブ

カテゴリー