検証戦略 II — CV-LB 相関・リーク検出
CV と LB の関係の読み方、リーケージの検出と防止、adversarial validation の入口を学びます。
CV と LB の関係を読む#
手元の交差検証スコアと Public リーダーボードの関係を観察すると、検証の健全性が分かります。
- CV と LB が連動して動く:検証は信頼できる。CV を主に判断材料にする
- CV は上がるが LB は動かない/下がる:検証設計かリークを疑う
ヒント
Public LB はテストの一部のスコアにすぎません。最終順位は Private で決まるため、 手元の CV を主軸にし、LB は補助的に見ます。CV を信じることがシェイクアップを避ける鍵です。
リーケージの検出と防止#
データリークは「本来使えない情報」が混入する問題です。よくある原因と対策:
| リークの原因 | 対策 |
|---|---|
| 前処理を全データで fit | fold 内(訓練側)で fit し、検証へ transform |
| ターゲットを使う特徴を全体で計算 | out-of-fold で計算(ターゲットエンコーディング) |
| 時系列で未来の情報を使用 | 時系列分割・過去のみで集約 |
| ID/インデックスが答えと相関 | 怪しい特徴は除外して CV を比較 |
「CV だけ異常に高い」「単一特徴で目的変数をほぼ説明できる」ときはリークを強く疑います。
adversarial validation の入口#
敵対的検証は、train と test を見分ける分類器を作って分布差を検出する手法です。
1. train に label=0、test に label=1 を付けて結合
2. 元の特徴で「train か test か」を分類
3. AUC が 0.5 近く → 分布は同じ(CV が信頼できる)
AUC が高い → 分布が違う(その特徴/検証設計を見直す)AUC が高いほど train/test が別物ということなので、検証分割の作り方や使う特徴を再検討します。
メモ
adversarial validation は、train/test の分布ずれの検出だけでなく、test に近い訓練サンプルを 重視する重み付けなどにも応用されます。詳しくは上級トラック(L8)で扱います。
このトラックのまとめ#
- 特徴量は「変換・生成・エンコード・選択」。CV で 1 つずつ効果を確認する
- カテゴリは木系/線形で使い分け、ターゲット系は fold 内計算でリークを防ぐ
- 検証はデータ構造(クラス/グループ/時間)に合わせて分割を選ぶ
- CV を主軸に、リークを検出・防止して信頼できるスコアを作る
理解度チェック#
次のステップ#
次トラック(L5)では、表形式コンペの主力である勾配ブースティング(GBDT) (LightGBM/XGBoost/CatBoost)とハイパーパラメータ最適化を学びます。