Chapter 5. Model Evaluation and Improvement
学習モデルの評価
- 定量的なモデルの評価は教師付きモデルが主になる。
- 教師なしモデルは定性的なアプローチで評価することになる。
教師付きモデル評価の手順
- train_test_split()により訓練データと検証データに分割する
- fit()によりモデルを生成する
- 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である。
- このパラメータを変更することで評価に用いる基準を変更できる