Python Scikit-Learn ワークフロー
有効化
- キーワードトリガー: タスクが実質的に scikit-learn のモデル選択、
KFold、StratifiedKFold、GroupKFold、TimeSeriesSplit、cross_validate、GridSearchCV、RandomizedSearchCV、学習/検証曲線、PCA、sklearn.inspection、ColumnTransformer、またはPipelineを含む場合。 - 意図トリガー: ユーザーがリークなしで scikit-learn モデルを分割、前処理、チューニング、診断、または解釈する方法を尋ねた場合。
- 開示: 該当する作業を開始する際に、一度だけ簡潔に次のように述べます:
$python-sklearn-workflow を使用しています。このタスクは scikit-learn の評価または前処理を含むためです。 - 終了: 分割、交差検証、前処理、探索、診断の契約が確定した時点でこのスキルの適用を停止します。
- トリガーしない場合: 依存関係の更新、分割/チューニングが既に確定している実験追跡、既に適合した推定器に対する通常の
predict呼び出し、既に計算された予測からの報告のみのプロット、孤立した推定器 API の質問、深層学習パイプライン、または偶発的なインポートは不十分です。プロットは、タスクがスコアリング、評価設計、診断方法論、またはモデル検査を変更する場合にのみここに属します。
評価単位から開始する
分割器を選択する前に、トレーニングと評価の間で独立を保つ必要があるものを特定します:
- 個々の IID 観測;
- 稀な結果を持つクラスラベル;
- ユーザー、患者、デバイス、セッション、場所、またはその他のグループ;
- 時系列の将来の観測; または
- クラスのバランスと重複しないグループの組み合わせ。
テストセットと交差検証戦略は、好みのデフォルトパーセンテージからではなく、その単位から選択します。分割器と探索の選択については references/model-selection-guide.md を参照してください。
前処理をフォールド内に保持する
- スケーラー、インプター、エンコーダー、特徴量選択、PCA、またはその他の学習済み変換を適用する前に、最終テストセットを分割しておきます。
- 学習済み前処理と推定器を
Pipelineに配置し、各交差検証フォールドがトレーニング分割に対してのみ変換を適合させるようにします。 - 数値、カテゴリ、テキスト、またはその他の列サブセットに異なる変換が必要な場合は
ColumnTransformerを使用します。 preprocess__numeric__scalerやmodel__Cのようなパイプライン名を通じてネストされたパラメータを探索します。cross_val_score、cross_validate、グリッドサーチ、またはランダムサーチの前に、データセット全体を手動で前処理しないでください。
PCA、検査、異種混合カラムについては references/preprocessing-inspection.md を参照してください。
評価ツールと探索ツールを意図的に選択する
- 1つのメトリックと単純なフォールドスコアには
cross_val_scoreを使用します。 - 複数のメトリック、トレインスコア、適合/スコアリング時間、または返される推定器が本当に必要な場合には
cross_validateを使用します。 - 小さく離散的で正当性のあるパラメータグリッドで、総当たり組み合わせが計算予算に収まる場合には
GridSearchCVを使用します。 - より大きな空間、分布、または固定の候補予算には
RandomizedSearchCVを使用します。n_iterとパラメータ分布を意図的に設定します。 - モデル比較全体で同じ交差検証セマンティクスとスコアリング契約を維持します。分割器が必要とする場合は、グループ/メタデータを正しく渡します。
- 未評価のテストセットを保持するか、モデル選択がすべての開発フォールドを消費する場合は適切なネスト評価を使用します。
質問に答えるために曲線と検査を追加する
learning_curveを使用して、さらにトレーニングデータを追加することでトレイン/検証ギャップが減少する可能性があるか、または両方のスコアが横ばいになっているかを尋ねます。validation_curveを使用して、1つのハイパーパラメータのトレイン/検証動作を検査します。これは複数パラメータの探索や最終テストの代わりにはなりません。sklearn.inspection.permutation_importanceを使用して、適合済みモデルのスコアが特徴量に依存する度合いを測定します。理想的には、モデルが有用な予測性能を持っていることを確認した後、保持しておいたデータで行います。- 部分依存またはICEは、その仮定と特徴量分布が結果を解釈可能にする場合にのみ使用します。
- 検査プロットを機械的に追加しないでください。最初にデバッグ、信頼性、または解釈可能性の質問を定義します。
必要な出力
独立した評価単位を述べます; ホールドアウト比率の根拠; 選択された交差検証分割器とスコアリング; 前処理/PCAの配置; グリッドまたはランダムサーチの予算; 学習/検証曲線が具体的な質問に答えるかどうか; 検査方法とデータセット; リーク制御; そして最終的な未評価の評価パス。