データリーク

Data Leakage

データリーク(Data Leakage / 情報漏洩)とは、モデルの学習や評価の過程で、本来利用できないはずの情報が混入してしまう問題です。モデルの性能を過大評価し、本番環境で期待通りに動作しない原因となります。

データリークの種類

ターゲットリーク(目的変数の情報を含む特徴量の使用)、トレーニング-テストリーク(テストデータの情報が訓練に漏れる)、時間リーク(未来の情報を使用)が主な種類です。

表:データリークの要点まとめ
ひとことで言うと予測時点では知り得ない情報が学習に混ざり、精度が不当に高く出る問題。
よくある例テストデータを含めて標準化する/結果が分かった後の情報を特徴量にする。
注意点検証では絶好調なのに本番でまったく当たらない、という形で表面化する。

よくあるリーク原因

データ分割前の前処理(全データで正規化してから分割)、テストデータの統計量を用いた特徴量エンジニアリング、時系列データの不適切な分割、重複データの存在などが典型的です。

図:データリークが起きるパターン
1全データで前処理分割前に標準化
▶
2テストの情報が混入平均値に含まれてしまう
▶
3検証精度が高く出る実力以上に見える
▶
4本番で当たらない原因不明の性能低下

※ 防ぎ方は単純です。「必ず先に分割し、前処理は訓練データだけで決める」。

防止策

前処理は訓練データのみの統計量で行う、パイプライン化して処理順序を保証する、時系列データでは時間順に分割する、ドメイン知識で不自然に予測力の高い特徴量を疑う、などが重要です。