Skip to content
Latchkey

データドリフトとは?入力分布の変化を解説

データドリフトとは、モデルが目にする入力データの統計的分布が時間とともに変化することで、その予測を静かに劣化させる可能性があります。

データドリフトは、誰も手を触れていないのにモデルが悪化する主な理由の1つです。モデルに供給されるfeatureが、学習した内容から離れていき - 新しいユーザーセグメント、季節的な影響、変更されたupstreamのソース - 古い分布で学習したモデルが外し始めます。

データドリフトとは何か

データドリフト(featureドリフトまたは共変量ドリフトとも呼ばれる)は、学習と本番の間でモデルの入力featureの分布が変化することです。入力とターゲットの関係はまだ成立しているかもしれませんが、入力自体が学習データとは異なって見えるようになっています。

データドリフト対コンセプトドリフト

データドリフトは入力の分布が変わることです。コンセプトドリフトは入力と出力の関係が変わることです。モデルは一方または両方に見舞われる可能性があります。両者を区別することが重要です。データドリフトは新鮮なデータで再学習することで対処できるかもしれませんが、コンセプトドリフトは新しいfeatureが必要かもしれません。

どのように検出されるか

driftは、最近の本番featureの分布を学習時のベースラインと、統計的検定(population stability indexやKolmogorov-Smirnovなど)や距離メトリクスを用いて比較することで検出されます。重要なfeatureにおける有意な乖離が、潜在的なdriftを示します。

CI/CDでのデータドリフトチェック

scheduleされたCIのjobがベースラインに対してdriftメトリクスを計算し、閾値を超えたときにアラートを出すか再学習をトリガーできます。

A data-drift check in CI
steps:
  - run: python drift_check.py --baseline train_ref.parquet \
        --current prod_recent.parquet --metric psi --threshold 0.2

Latchkeyノート

driftチェックは、scheduleに従って大きな最近のデータのウィンドウを取得します。Latchkeyでは、学習時のベースラインと依存関係をcacheすることでこれらの繰り返しのjobが安価に保たれ、auto-retryが比較ウィンドウをwarehouseやlakeから取得する際の一時的な読み取りをカバーします。

重要なポイント

  • データドリフトは、学習と本番の間でモデルの入力featureの分布が変化することである。
  • 入力と出力の関係の変化であるコンセプトドリフトとは異なる。
  • 学習時のベースラインに対する統計的検定がdriftを検出し、CIでアラートや再学習をトリガーできる。

関連ガイド