# データ分布のシフト ## 定義 データ分布のシフト(data distribution shift。「データ分布の変化」とも言う)とは、教師あり学習において、モデルが扱うデータが時間とともに変化し、モデルの予測精度が時間の経過につれて低下する現象を指す。モデルの訓練に使用するデータの分布をソース分布(source distribution)、モデルが推論するデータの分布をターゲット分布(target distribution)と呼ぶ。データから学習するシステムにおけるデータ分布のシフトの研究は早くも1986年には取り組まれていた。(Source: [[@2023__OReillyJapan__機械学習システムデザイン - Chapter 8 データ分布のシフトと監視]] §8.2) ## 数学的定義と3つのサブタイプ モデルの入力を $X$、出力を $Y$ とすると、教師あり学習の訓練データは同時分布 $P(X,Y)$ から得られたサンプル集合とみなせる。この同時分布は次の2通りに分解できる。 - $P(X,Y) = P(Y|X)P(X)$ - $P(X,Y) = P(X|Y)P(Y)$ この分解に基づき、データ分布のシフトは以下の3つのサブタイプに分けられる。3つは互いに独立ではなく、同時に発生することもある。(Source: [[@2023__OReillyJapan__機械学習システムデザイン - Chapter 8 データ分布のシフトと監視]] §8.2.1) - **共変量シフト(covariate shift)**: $P(X)$ が変化するが $P(Y|X)$ は変化しない場合。データ分布のシフトの中でも最も研究が盛んなサブタイプ。モデル開発時のデータ選択バイアス(乳がん検診データの年齢偏り等)、少数派クラスのオーバーサンプリング、能動学習による訓練入力分布の人為的な変更、実環境でのアプリケーション利用のされ方の変化(マーケティングキャンペーンによるユーザー層の変化等)によって生じる。現実世界の入力分布と訓練時の入力分布の差を事前に見積もれる場合、重要度重み付け(importance weighting)によって密度比に基づき訓練データを重み付けする手法が使える。(Source: ch.8 §8.2.1.1) - **ラベルシフト(label shift)**: $P(Y)$ が変化するが $P(X|Y)$ は変化しない場合。事前シフト・事前確率シフト・ターゲットシフトとも呼ばれる。入力の分布が変化すると出力の分布も変化するため、共変量シフトとラベルシフトは同時に発生することが多いが、共変量シフトを伴わないラベルシフト(全年代に効く予防薬の例)もありうる。共変量シフトと密接に関係するため検出・適応の手法にも共通点がある。(Source: ch.8 §8.2.1.2) - **コンセプトドリフト(concept drift)**: $P(Y|X)$ が変化するが $P(X)$ は変化しない場合。事後シフトとも呼ばれ、「入力は同じ、出力は別」と要約できる(COVID-19前後で同じ住宅特徴でも価格が変わった例)。大抵は周期的・季節的に生じる(ライドシェア運賃の平日/週末差、航空券の繁忙期高騰等)。周期的なドリフトには複数のモデルを使い分ける対処がある。(Source: ch.8 §8.2.1.3) 原著ではこれら3つに加え、あまり研究が盛んでない一般的な変化として**特徴の変化(feature change)**(特徴の追加・削除・値域の変化)と**ラベルスキーマの変化(label schema change)**($P(Y)$ と $P(X|Y)$ の両方が変化する。クラスの追加・細分化、回帰ラベルの値域変更等)を挙げる。(Source: ch.8 §8.2.2) ## 検出 正解ラベルが得られる場合は精度指標(正解率・F値・再現率・AUC-ROC等)の変化を直接監視するのが最も確実である。しかし実環境では天然のラベルへのアクセスに時間がかかることが多く、その代わりに入力分布 $P(X)$・ラベル分布 $P(Y)$・条件分布 $P(X|Y)$、$P(Y|X)$ を監視する。正解ラベル $Y$ が不明でも入力分布の監視は可能だが、ラベル分布・条件分布の監視には $Y$ が必要になる。実際の現場で採用されているドリフト検出手法の大半は、ラベルを要さない入力分布(特に特徴分布)の変化検出に重点を置く。(Source: ch.8 §8.2.3) 検出手法は大きく2系統ある。 - **要約統計量の比較**: 最小・最大・平均・中央値・分散・分位数・歪度・尖度などを訓練時と推論時で比較する。最初の一歩としては悪くないが、これらの指標が有用なのは分布の要約として意味を持つときに限られ、差がないことはシフトしていない証拠にはならない。 - **二標本検定(two-sample test)**: 2つの母集団間の差が統計的に有意かどうかを判定する。K-S検定(Kolmogorov–Smirnov検定)はノンパラメトリックで分布の仮定を要しない利点があるが1次元データにしか使えず、高コストで偽陽性を生みやすい。MMD(maximum mean discrepancy)は多変量に対応するカーネルベースの手法で研究ではよく使われるが実務での採用例は少ない。高次元データでは検定前の次元削減が推奨される。 シフト検出はタイムスケールウィンドウ(時間間隔)の選び方に強く依存する。データが周期性を持つ場合、短すぎるウィンドウは誤検知を招き、長すぎるウィンドウは検出の遅延を招く。経時的な実行統計には、単一ウィンドウ内でリセットされる「スライディング統計」と、リセットされず古いウィンドウの情報も含み込む「累積統計」の違いがあり、累積統計は急激な劣化を隠蔽しうる。(Source: ch.8 §8.2.3.1, §8.2.3.2) ## 対処 企業のデータシフトへの対処は機械学習インフラの成熟度に依存する。実環境の新分布へモデルを適応させる主なアプローチは3つ。(1) 膨大な訓練データセットで包括的な分布を学習させる(現在の研究主流)、(2) 新たなラベルを要さずにモデルの予測をターゲット分布へ是正する(ドメイン不変表現学習等、研究段階で実務での広範な採用はまだ見られない)、(3) ターゲット分布のラベル付きデータでモデルを再訓練する(実務で最も一般的)。再訓練にはゼロからの訓練(ステートレス再学習)と前回のチェックポイントから続けるファインチューニング(ステートフル学習)の選択肢があり、どのデータ期間を使うかも検討事項になる。特徴ごとにシフトの速度は異なるため、特徴選定の段階でパフォーマンスと安定性のトレードオフを考慮し、シフトに堅牢なシステム設計を事前に行うこともできる。(Source: ch.8 §8.2.4) ## 横断的知見 - **9章は、8章が対処法(3)として一般的に述べる「ターゲット分布のラベル付きデータでモデルを再訓練する」を、なぜ・いつ再訓練が必要になるかという具体的な発生シナリオへ翻訳する**: 8章§8.2.4は再訓練を実務で最も一般的な対処法として挙げるにとどまり、シフトの種類と再訓練の必要性の対応関係までは踏み込まない。[[@2023__OReillyJapan__機械学習システムデザイン - Chapter 9 実現場での継続学習とテスト]] §9.1.2は、Lyftの動的価格設定のような突発的な需要シフト(共変量シフトが急激に生じる例)、Alibabaの独身の日のような年1回のレアイベント、TikTokが数分で適応する継続的コールドスタート問題という3つの具体シナリオを与え、いずれも「モデルが十分に素早く適応できなければユーザー体験や収益に直接影響する」という共通の帰結を示す。8章の数学的な3分類(共変量シフト・ラベルシフト・コンセプトドリフト)に対し、9章はこの分類がなぜ実務上重要なのかという緊急性の軸を追加している。(Source: [[@2023__OReillyJapan__機械学習システムデザイン - Chapter 8 データ分布のシフトと監視]] §8.2.4, [[@2023__OReillyJapan__機械学習システムデザイン - Chapter 9 実現場での継続学習とテスト]] §9.1.2) - **9章は、8章の「監視は受動的」という限界を踏まえたうえで、静的なテスト分割・バックテストといったオフライン評価もまた分布シフトへの適応の確認には不十分だと主張し、実環境でのテストという第3の検証層を要求する**: 8章はシフトの検出を監視の役割として扱うが、検出後にモデルを更新した際にその更新が正しく機能しているかの検証手法までは扱わない。9章§9.2は、モデル更新の目的が新しい分布への適応である以上、古い分布のテストデータやバックテスト(直近データでの評価)だけでは「将来のデータでも同様にうまく動作する」保証にならないとし、実環境でのテスト(シャドウデプロイ・A/Bテスト等)を要求する。これにより、8章の「シフトの検出」と9章の「対処(再訓練)の妥当性確認」が、同じ分布シフトという問題に対する検知/検証という異なる工程を担うことが分かる。(Source: [[@2023__OReillyJapan__機械学習システムデザイン - Chapter 8 データ分布のシフトと監視]], [[@2023__OReillyJapan__機械学習システムデザイン - Chapter 9 実現場での継続学習とテスト]] §9.2) ## 未解決の問い - 要約統計量の比較や二標本検定でシフトを検出できたとして、それがモデルのパフォーマンス低下に実際に結びつくかどうかをどう判定するか。ch.8はモニタリングダッシュボード上のシフトの大半が内部エラー(パイプライン不具合等)由来であると指摘するが、真のシフトと内部エラーを区別する具体的な統計的手続きは示していない。 - 高次元の特徴集合に対する二標本検定の次元削減はどのような手法が実務で有効か。ch.8は次元削減を推奨するにとどまり具体的な手法比較は示していない。 - ラベルを要さないラベルシフト検出(Black Box Shift Estimation等)は研究段階にとどまるとch.8は述べるが、その後どこまで実務導入が進んだか。 - [[MLモデル監視]]が集約する「ドリフト(緩慢)対データ品質(突発)」という『信頼性の高い機械学習』9章の時間軸区分と、本ページの共変量シフト・ラベルシフト・コンセプトドリフトという数学的分類はどう対応するか。両ソースを橋渡しする記述はまだない。 ## 関連 - 概念: [[MLモデル監視]](精度指標が使えない場合の代替監視対象としての分布シフト) / [[異常検知]](統計的検定によるシフト検出は異常検知の応用) / [[継続的トレーニング]](シフトへの対処としての再訓練、継続学習の3ユースケース) - ソース: [[@2023__OReillyJapan__機械学習システムデザイン - Chapter 8 データ分布のシフトと監視]] / [[@2023__OReillyJapan__機械学習システムデザイン - Chapter 9 実現場での継続学習とテスト]](再訓練の必要性を裏づける具体シナリオ、実環境でのテストによる対処の妥当性検証) ## 出典 - [[@2023__OReillyJapan__機械学習システムデザイン - Chapter 8 データ分布のシフトと監視]] — Chip Huyen 著, 江川崇・平山順一 訳, 『機械学習システムデザイン』, オライリー・ジャパン, 2023, 8章, §8.2. - [[@2023__OReillyJapan__機械学習システムデザイン - Chapter 9 実現場での継続学習とテスト]] — Chip Huyen 著, 江川崇・平山順一 訳, 『機械学習システムデザイン』, オライリー・ジャパン, 2023, 9章, §9.1.2, §9.2.