過学習せずに反復する

Python で設計する Machine Learning ワークフロー

Dr. Chris Anagnostopoulos

Honorary Associate Professor

本番投入後も機械学習パイプラインをさらに調整できることを示す模式図。

Python で設計する Machine Learning ワークフロー

同じ模式図で、本番からより多くのデータを抽出して、モデルのさらなる調整に活用できることを示す。

Python で設計する Machine Learning ワークフロー

同じ模式図で、ドメイン専門家からの新たな知見(例: 新しい損失関数)がモデル変更につながることを示す。

Python で設計する Machine Learning ワークフロー

同じ模式図で、本番に出ているモデルをチャンピオン、開発中のモデルをチャレンジャーとラベル付けしている。

Python で設計する Machine Learning ワークフロー

交差検証の結果

grid_search = GridSearchCV(pipe, params, cv=3, return_train_score=True)
gs = grid_search.fit(X_train, y_train)
results = pd.DataFrame(gs.cv_results_)
results[['mean_train_score', 'std_train_score', 
   'mean_test_score', 'std_test_score']]
   mean_train_score  std_train_score  mean_test_score  std_test_score
0             0.829            0.006            0.735           0.009
1             0.829            0.006            0.725           0.009
2             0.961            0.008            0.716           0.019
3             0.981            0.005            0.749           0.024
...
Python で設計する Machine Learning ワークフロー

交差検証の結果

   mean_train_score  std_train_score  mean_test_score  std_test_score
0             0.829            0.006            0.735           0.009
1             0.829            0.006            0.725           0.009
2             0.961            0.008            0.716           0.019
3             0.981            0.005            0.749           0.024
4             0.986            0.003            0.728           0.009
5             0.995            0.002            0.751           0.008

観察:

  • 訓練スコアがテストより大幅に高い。
  • テストスコアの標準偏差が大きい。
Python で設計する Machine Learning ワークフロー

データセットを訓練とテストに分割し、訓練をさらに交差検証で分割した図。

Python で設計する Machine Learning ワークフロー

データセットを訓練と検証に分割し、訓練をさらに交差検証で分割した図。

Python で設計する Machine Learning ワークフロー

過学習の検知

  • CV訓練スコア >> CVテストスコア
    • モデル学習段階での過学習
    • 分類器の複雑さを下げる
    • 訓練データを増やす
    • CVの分割数を増やす
  • CVテストスコア >> 検証スコア
    • ハイパーパラメータ調整段階での過学習
    • CVの分割数を減らす
    • パラメータグリッドを小さくする

データセットを訓練と検証に分割し、訓練をさらに交差検証で分割した図。

Python で設計する Machine Learning ワークフロー

データセットを訓練と検証に分割し、訓練をさらに交差検証で分割した図。

Python で設計する Machine Learning ワークフロー

データセットを訓練・検証・本番データに分割し、訓練をさらに交差検証で分割した図。

Python で設計する Machine Learning ワークフロー

履歴書に「CVの達人」を!

Python で設計する Machine Learning ワークフロー

Preparing Video For Download...