# データリーク
## 定義
データリーク(data leakage)とは、ラベルなどの本来モデルが知り得ない情報が、予測に使う特徴の中へ意図せず漏れ込んでしまい、評価時には高いパフォーマンスを示すのに、同じ情報が得られない実運用の推論では再現できなくなる現象を指す。データリークが厄介なのは、リークが明らかでないことが多く、大規模な評価やテストを行った後であっても予想外の方法で重大な障害を引き起こしうる点にある。広く蔓延しているにもかかわらず、機械学習のカリキュラムで扱われることはほとんどない。(Source: [[@2023__OReillyJapan__機械学習システムデザイン - Chapter 5 特徴エンジニアリング]] §5.3)
## 典型事例
- **COVID診断モデルの姿勢リーク**: 2021年7月の『MIT Technology Review』の記事によれば、患者が横になっているときと立っているときのスキャン画像を混ぜて訓練したモデルは、Covid重症化リスクではなく患者の姿勢(横臥は重病であることが多い)を学習してしまった。
- **フォントリーク**: 特定の病院がスキャン画像のラベリングに使う文字フォントをモデルが手がかりにし、より重篤な症例を扱う病院のフォントがCovidリスクの予測要素になっていた。
- **CTスキャン装置リーク**: 病院Aでは肺がんが疑われる患者を高性能スキャン装置に送る運用だったため、モデルはスキャン画像の微妙な違い(=使用装置)を頼りに肺がんの兆候を予測することを学習し、ランダムに装置を割り当てる病院Bのデータには汎化しなかった。
- **Kaggle Ion Switchingコンペティション(2020年、リバプール大学主催)**: テストデータが訓練データから合成されており、一部の参加者がリバースエンジニアリングでテストラベルを得るリークが発生した。勝者2チームはいずれもこのリークにつけ入ることができたチームである。
(Source: [[@2023__OReillyJapan__機械学習システムデザイン - Chapter 5 特徴エンジニアリング]] §5.3)
## 6つの主要な原因(§5.3.1)
1. **時間相関のあるデータをランダムに分割してしまう**: データには時間相関があり、生成時刻がラベルの分布に影響することが多い(株価、音楽トレンドなど)。ランダム分割は未来の情報を訓練データへ混入させる。対策は時間による分割。
2. **分割する前にスケーリングしてしまう**: スケーリングには全体的な統計量(最小値・最大値・平均・分散)が必要であり、分割前の全データから計算するとテストサンプルの情報が訓練時にリークする。対策は分割してから訓練データのみで統計量を計算すること。
3. **データ全体からの統計量で欠損値を埋めてしまう**: 上記と同型のリーク。分割後の訓練データから得た統計量のみですべての分割後データの欠損値を埋めることで防止できる。
4. **分割前のデータの重複に関する処理が不適切**: 重複や重複に近いサンプルを分割前に除去しないと、訓練セットとテスト・検証セットに同一サンプルが混入する。CIFAR-10・CIFAR-100という有名な研究用データセットでも、2019年にBarzとDenzlerが、テストデータの3.3%・10%がそれぞれ訓練データと重複していたことを発見している。オーバーサンプリングによる重複も分割後に行う必要がある。
5. **グループリーク(group leakage)**: ラベルが強く相関するサンプルのグループ(同一患者の1週間違いのCTスキャン、同一物体を数ミリ秒間隔で撮影した画像など)を訓練セットとテストセットに分けて分割してしまう。データの生成過程を理解しなければ防ぐことが難しい。
6. **データ生成プロセスからのリーク**: 使用機材や収集手順の違いがラベルと相関し、モデルがそれを手がかりにする(CTスキャン装置リークが典型例)。データの収集方法を深く理解し、可能な限り出力を正規化する(画像解像度をそろえるなど)ことでリスクを軽減できる。ドメインの専門家を設計プロセスに参画させることも有効。
(Source: [[@2023__OReillyJapan__機械学習システムデザイン - Chapter 5 特徴エンジニアリング]] §5.3.1)
## 検出方法(§5.3.2)
データリークは、データの生成・収集・サンプリング・分割・処理・特徴エンジニアリングに至るまでのあらゆる段階で発生しうるため、機械学習プロジェクトのライフサイクル全体を通した監視が重要になる。
- ターゲット変数(ラベル)に対する各特徴・特徴セットの予測能力を測定し、異常に高い相関があればその生成過程と相関の妥当性を調査する。単独ではリークしない2つの特徴を組み合わせるとリークすることもある(入社日と退職日を別々に見ても勤続年数は分からないが、組み合わせると分かってしまう)。
- アブレーションスタディ(ablation study)で特徴や特徴セットの重要性を測定し、除去後にパフォーマンスが大きく低下した特徴の理由を調査する。全特徴の組み合わせを網羅するのが非現実的な場合でも、最も疑わしい特徴のサブセットに絞って行う価値がある。
- モデルに新しく追加した特徴に注意を払う。パフォーマンスが著しく向上した場合、その特徴が本当に優れているのか、ラベルのリーク情報を含んでいるだけなのかを見極める。
- テストデータは、モデルの最終的なパフォーマンス報告以外の目的(新しい特徴のアイデア出し、ハイパーパラメーターチューニングなど)に使わない。使ってしまうと訓練プロセスに未来の情報がリークするリスクがある。
(Source: [[@2023__OReillyJapan__機械学習システムデザイン - Chapter 5 特徴エンジニアリング]] §5.3.2)
## 横断的知見
- **理論書が抽象化する「評価データのリーク」を、実務書は原因の分類学として体系化する**: [[汎化能力]]が既に整理しているとおり、[[@2022__Gihyo__ディープラーニングを支える技術 - Chapter 2 [入門]機械学習]] §2.6は「評価データを学習やハイパーパラメーター調整に使ってしまうと汎化誤差の正確な推定ができなくなる」という一般原理のみを述べ、[[@2021__OReillyJapan__仕事ではじめる機械学習 - Chapter 1 機械学習プロジェクトのはじめ方]] §1.2.8はKaggleのがん予測コンテストや時系列のランダム分割という2つの具体的な失敗事例を挙げるにとどまる。本ページの原典である[[@2023__OReillyJapan__機械学習システムデザイン - Chapter 5 特徴エンジニアリング]] §5.3.1はさらに一段深く踏み込み、時間分割・スケーリング・欠損値補完・重複処理・グループリーク・データ生成プロセスという6つの原因を独立した節として立て、原因ごとに対策(分割してから統計量を計算する、分割前に重複を除去する等)まで具体的に処方する点で、実務書2冊よりもさらに体系的である。3冊を並べると、データリークという同一現象が「理論的定義」「経験的な失敗事例の列挙」「原因の分類学と対策の処方」という3段階の粒度で独立に扱われていることが分かる。(Source: [[@2023__OReillyJapan__機械学習システムデザイン - Chapter 5 特徴エンジニアリング]] §5.3.1, [[汎化能力]]の横断的知見に集約された[[@2022__Gihyo__ディープラーニングを支える技術 - Chapter 2 [入門]機械学習]] §2.6・[[@2021__OReillyJapan__仕事ではじめる機械学習 - Chapter 1 機械学習プロジェクトのはじめ方]] §1.2.8)
- **時系列のランダム分割によるリークは、実務書2冊で独立に同じ失敗パターンとして報告される**: [[@2021__OReillyJapan__仕事ではじめる機械学習 - Chapter 1 機械学習プロジェクトのはじめ方]]が挙げる「時系列データをランダムに訓練/検証分割してしまい未来のデータが学習に混入した」事例と、本ページの原因1(時間相関のあるデータをランダムに分割してしまう)は、著者も出版時期も異なる2つの実務書が独立に同一の失敗パターン(時間分割の欠如)を筆頭級の落とし穴として扱っていることを示す。これは、時系列データのランダム分割が実務で特に頻発する誤りであることの傍証になる。(Source: [[@2023__OReillyJapan__機械学習システムデザイン - Chapter 5 特徴エンジニアリング]] §5.3.1.1, [[汎化能力]]に集約された[[@2021__OReillyJapan__仕事ではじめる機械学習 - Chapter 1 機械学習プロジェクトのはじめ方]] §1.2.8)
## 未解決の問い
- 原因6(データ生成プロセスからのリーク)は「確実な防止方法がない」と本章が明言する唯一の原因である。ドメイン専門家の関与以外に、体系的な検出・防止の枠組みは他ソースに存在するか。
- アブレーションスタディによるリーク検出は、特徴数が膨大な場合(本章が挙げる1,000特徴の全組み合わせなど)には非現実的である。疑わしい特徴のサブセットを効率的に絞り込む自動化手法は存在するか。
- グループリークの検出は「データがどのように生成されたかを理解しなければ困難」とされるが、生成過程のメタデータからグループ構造を自動検出する具体的な手法は本章では扱われていない。
- 本ページが集める3書(理論書/実務書2冊)の粒度の違いは、対象読者や出版年による偏りか、それとも分野(深層学習理論 対 実務MLOps)固有の傾向か。今後さらに他分野の書籍が加わった際に検証したい。
## 関連
- ソース: [[@2023__OReillyJapan__機械学習システムデザイン - Chapter 5 特徴エンジニアリング]](§5.3, §5.3.1, §5.3.2)
- 概念: [[汎化能力]](評価データのリークという理論的定式化) / [[特徴の汎化]](リークの調査対象となりうる特徴のカバレッジ乖離) / [[交差検証]] / [[評価データ分布の設計]]
- 書籍: [[wiki/entities/機械学習システムデザイン|機械学習システムデザイン]]
## 出典
- Chip Huyen 著, 江川崇・平山順一 訳, 『機械学習システムデザイン』, オライリー・ジャパン, 2023, 5章, §5.3.