データドリフト

End-to-End Machine Learning

Joshua Stapleton

Machine Learning Engineer

データドリフト検知の必要性

年齢別の心疾患分布の経時変化を示すグラフ。現在は発生数が減り、発症年齢が高い

End-to-End Machine Learning

コルモゴロフ–スミルノフ検定

  • データドリフト検知でよく使用
  • データセット間の差を比較し、分布の類似性を判定

初期の学習データ分布と、ドリフトした新しい推論データ分布の違いを示す2つのグラフ

End-to-End Machine Learning

ks_2samp() の使用

  • ks_2samp() は2値を返す:検定統計量、p値。
  • p値で分布が同じという帰無仮説を採否判定。
from scipy.stats import ks_2samp
# load the 1D data distribution samples for comparison
sample_1, sample_2 = training_dataset_sample, current_inference_sample
# perform the KS-test - ensure input samples are numpy arrays
test_statistic, p_value = ks_2samp(sample_1, sample_2)
if p_value < 0.05:
    print("Reject null hypothesis - data drift might be occuring")
else:
    print("Samples are likely to be from the same dataset")
End-to-End Machine Learning

データドリフトの是正

新データを反映してモデル更新

  • モデルを再学習
  • パラメータを再調整/更新

新/推論データが不足?

  • 混合データで再学習
  • 新データ量を増やす

ドリフトが発生したモデルの再学習と再デプロイの流れを示すフローチャート

新データが随時利用可能になるにつれ、新データの比率を増やして定期的に再学習する手法の図

End-to-End Machine Learning

データドリフト検知と是正の参考資料

End-to-End Machine Learning

練習しましょう!

End-to-End Machine Learning

Preparing Video For Download...