モデリング●●●●●

データリーク

Data Leakageでーたりーく

本来使えない情報が訓練に混入し、評価だけが良く見えてしまう分析の落とし穴

概要

データリークとは、予測モデルを作るときに「本番の予測時点では手に入らないはずの情報」が訓練プロセスに紛れ込んでしまうことです。リークが起きたモデルは、手元の評価データでは驚くほど高い精度を叩き出しますが、実際に運用に投入すると精度が急落します。カンニングペーパーを見ながら模試を解いていたようなもので、本番で実力が出ないのは当然です。

厄介なのは、リークは意図的な不正ではなく、ごく普通のデータ前処理の手順ミスから静かに混入することです。テストデータを含めた全体で平均や標準偏差を計算してしまう、正解ラベルの「結果」として記録された列を特徴量に使ってしまう、時系列データを無造作にシャッフルして未来の情報で過去を予測してしまう — どれも一見無害な操作です。

しかも過学習と違って、リークは評価指標そのものを汚染します。過学習なら「テストデータでの精度低下」という形で検出できますが、リークはそのテストデータでの評価まで良く見せてしまうため、数字を眺めているだけでは気付けません。「精度が良すぎる」ことが唯一の兆候であることも多く、機械学習の実務で最も発見が難しい失敗の一つとされています。

なぜ生まれたか

統計モデリングが「手元のデータへの当てはめ」から「未知のデータへの予測」に軸足を移したとき、評価の作法として訓練データとテストデータの分離、さらに交差検証が確立されました。しかし実務のデータ処理は、欠損の補完、標準化、特徴量の生成、変数選択と多段階のパイプラインになっており、「分離したつもりでも、どこかの段階でテスト側の情報が訓練側に染み出す」事故が頻発しました。データ分析コンペティションで「本来使えない列を見つけたチームが不自然に高いスコアで上位を独占する」事件が繰り返されたこともあり、この染み出しに「リーケージ(漏洩)」という名前が付き、チェックすべき失敗パターンとして体系化されていきました。

背景にあるのは、評価というものの原理的な要請です。モデルの真価は「学習中に一度も見ていないデータでどれだけ当たるか」でしか測れません。リークはこの「一度も見ていない」という前提を壊すため、どんなに精緻な評価指標を使っても数字が意味を失います。だからこそ、リークの類型を知り、手順の側で混入を防ぐ規律が必要になったのです。

詳細

典型パターン1: 前処理リーク

最も頻度が高いのが、訓練/テスト分割の「前」に、データ全体を使った前処理をしてしまうパターンです。たとえば標準化では平均と標準偏差を計算しますが、これを全データで計算してから分割すると、テストデータの分布の情報が訓練データの変換に混入します。欠損値の補完、外れ値のしきい値決定、相関に基づく特徴量選択も同じ構造の罠を持ちます。正しい手順は「先に分割し、前処理のパラメータは訓練データだけから求め、テストデータにはそれを適用するだけ」です。交差検証を使う場合も、前処理を各分割の内側で行う(パイプラインごと検証する)必要があります。

誤り: 分割の前に全体で前処理全データ全体で平均・σを計算テストの情報も混ざる訓練テスト評価が実力より良く見える正しい: 先に分割してから前処理全データ訓練テスト訓練だけで平均・σを計算同じ変換を適用するだけテストは最後まで「未知」のまま評価の前提は「テストデータを学習中に一切見ていない」こと。前処理のパラメータ計算も「見ている」ことに含まれる。
前処理リークの構造 — 分割前に全体で統計量を計算すると、テスト側の情報が訓練に染み出す

典型パターン2: ターゲットリーク

特徴量そのものに正解の情報が含まれてしまうのがターゲットリークです。有名な例に「肺炎の予測モデルに『抗生物質投与の有無』という列を入れてしまう」というものがあります。抗生物質は肺炎と診断された後に投与されるので、この列は正解ラベルの原因ではなく結果です。予測時点(診断前)には存在しない情報なのに、履歴データには結果として記録されているため、モデルはこの列を使ってほぼ完璧に「予測」してしまいます。解約予測における「解約手続きページの閲覧履歴」、不正検知における「調査担当者のフラグ」なども同類で、「その列は予測を行う時点で本当に手に入るか」を1列ずつ問うことが防御になります。

典型パターン3: 時間と重複のリーク

時系列データでは、時間の順序を無視した分割が即リークになります。ランダムに分割すると、訓練データに「未来」のレコードが混ざり、モデルは未来を知った状態で過去を予測することになります。株価予測や需要予測で「バックテストでは完璧だったのに本番で外れる」典型的な原因です。時系列では必ず「過去で訓練し、未来で検証する」分割を使います。また、同一人物・同一物件のレコードが訓練とテストの両方に入る「グループの重複」もリークの一種です。同じ患者の検査記録が両側にあれば、モデルは病気の構造ではなく「その患者らしさ」を覚えるだけで当たってしまいます。グループ単位で分割することで防ぎます。

検出と防御の実務

リークの最大の兆候は「不自然なほど良い数字」です。難しいはずのタスクで適合率・再現率やAUCが突出して高いときは、喜ぶ前に疑うのが鉄則です。特徴量の重要度を確認し、1つの変数が支配的に効いているなら、その変数が正解の「結果」でないかを業務知識に照らして検証します。もう一つの有効な習慣は、前処理から学習までを一体のパイプラインとして組み、交差検証がパイプライン全体を分割の内側で実行するようにすることです。手作業の前処理をなくすことが、リーク混入の機会そのものを減らします。

最後に、リークは科学の再現性の問題とも地続きです。評価データの結果を見ながら特徴量やモデルを選び直す行為は、テスト情報の間接的な混入であり、p値ハッキングと同じ構造を持ちます。最終評価用のデータは一度だけ使う、という規律が信頼できる数字の条件です。