はじめに
単一のトレーニングとテストの分割により、モデルの品質について誤った認識が与えられる可能性があります。相互検証はより安定した評価を提供し、ハイパーパラメータ調整はデータ分割の運に頼ることなく合理的な構成を見つけるのに役立ちます。
レッスンの目標
- 単一の分裂を絶対に信じてはいけない理由を理解します。
- 相互検証を使用して、より安定したパフォーマンスを推定します。
- 制御されたプロセスに従ってハイパーパラメータを調整します。
相互検証とは何ですか?
データは多くの部分に分割されています。毎回、1 つのフォールドが検証を実行し、残りのフォールドがトレーニングを実行します。最終結果は複数の評価の平均です。
ハイパーパラメータとは何ですか?
ハイパーパラメータは、max_ Depth、n_estimators、C、learning_rate など、トレーニング前に選択する値です。これらは、モデルがデータから自ら学習するパラメーターとは異なります。
実践的なチューニング
- 単純なベースラインから始めます。
- 最も重要度の低いハイパーパラメータを選択します。
- GridSearchCV または RandomizedSearchCV を使用します。
- フォールド間の平均スコアと標準偏差の両方を追跡します。
サンプルコード
sklearn.model_selection からのインポート RandomizedSearchCV
sklearn.ensemble からのインポート RandomForestClassifier
よくある間違い
- ベースラインがまだ安定していない状態でチューニングが広すぎる。
- テスト セットを使用してハイパーパラメータを調整します。
- 多くのテストを実行しますが、結果を記録しません。
練習問題を練習する
- 3 つのハイパーパラメータを使用したツリーベースのモデルの調整。
- チューニング前とチューニング後のスコアを比較します。
- コメントの記録: チューニングは本当に改善されましたか、それともほんの少ししか改善されませんでしたか?
完了基準
- 完全なパイプラインで相互検証を使用できます。
- チューニングに使用される検証と、最終評価に使用されるテストを区別します。
- 実験を体系的に記録します。
段階的に練習する (上級)
- 標準的な分割でベースラインを実行します。
- KFold または StratifiedKFold を 5 回実行します。
- RandomizedSearchCV を使用し、重要なパラメータを 4 つ以下にしてチューニングします。
- 構成間の平均スコアと標準スコアを比較します。
- パフォーマンスと安定性に基づいて構成を最終決定します。
アーティファクトを送信する必要があります
- スコア別の上位 10 構成の表。
- フォールド別のスコア分布図。
- 過剰検索を避けるためにチューニングを停止するためのルール。
セルフテストの質問
- どのような場合に GridSearchCV よりも RandomizedSearchCV を優先する必要がありますか?
- 折り目間の標準偏差が高いとは何を意味しますか?
- テスト セットがチューニングに使用されないのはなぜですか?