なぜ交差検証を使うか?
1 回だけの train/test 分割では、たまたま難しい症例がテスト側に偏ることがある。交差検証では検証データを入れ替えて複数回評価するため、性能評価が特定の分割に左右されにくくなる。
— Interactive k-fold Cross-Validation Demo
交差検証(k-fold cross-validation)は、データを k 個のグループ(fold) に分け、1 つを検証用、残りを学習用として使う手順を k 回繰り返し、検証データの役割を入れ替えていく方法です。1 回だけの train/test 分割では「たまたま難しい症例が test に偏る」リスクがある一方、交差検証では全症例を一度は検証に使うため、特定の分割に依存しない性能評価ができます(理論的背景は 09·01 過学習と正則化 も参照)。本デモでは、fold が入れ替わるたびに検証データが切り替わる様子を可視化します。
右の操作パネルから「NEXT FOLD」を押して、緑の検証データ(現在 fold)が順番に入れ替わっていく様子を確認してください。「ALL FOLDS」で自動アニメーション。下の棒グラフは fold ごとの検証 MSE のばらつき を示します。複雑さ(次数)を上げると、fold 間のばらつきが大きくなる(=不安定)のが見えるはずです。
緑の点が現在 fold の検証データ、青の点が学習データ。
// TIP 次数を上げる → fold 間の検証 MSE のばらつきが大きくなる(モデル不安定)。
交差検証のアルゴリズム全体像。
症例データを、なるべく同じ大きさの k 個のグループ(fold)にランダム分割。
現在の fold だけを検証データに、残りを学習データに。学習 → 検証で MSE を計算。
検証データの役割を順番に入れ替え、すべての症例を一度は検証に使う。
各 fold の性能を平均し、特定の分割に依存しない汎化性能の推定値とする。
1 回だけの train/test 分割では、たまたま難しい症例がテスト側に偏ることがある。交差検証では検証データを入れ替えて複数回評価するため、性能評価が特定の分割に左右されにくくなる。
退院時 FIM や歩行自立の予測では、症例数が限られることが多い。単一分割の AUC や RMSE だけでなく、交差検証で性能の平均とばらつき(分散)を確認することが重要。
本デモの姉妹編。多項式の次数を変えて、訓練誤差とテスト誤差の乖離を体感する。
前処理を fold 外で行うとリーケージ。Pipeline で fold 内に閉じる重要性。
交差検証はハイパーパラメータ λ の最適化にも使う。LassoCV / RidgeCV の中身。