はじめに
下記の勉強会のLTで話した内容をそのまま聞かれることが多いので、発表内容をもとにデータドリフトについて記載したいと思います。
https://mlops.connpass.com/event/211953/
MLOpsというワードはバズワードと言われこともあり、意味が広く、人によってリモデリングの自動化、機械学習モデルのCI/CDなど話すポイントがことなります。この記事では機械学習モデルの運用時における機械学習モデルの性能をモニタリングする方法の1つであるデータドリフトに注目します。
機械学習モデルは多くの場合に劣化する
機械学習モデルは多くの場合で時間が立つにつれ精度(性能)劣化が生じます。これは様々な原因が考えられます。例えば、機械学習モデルを運用している実社会などの環境が大きく変化する場合が例としてあげられます。自動販売機の缶の需要予測をするときなど、コロナ前のデータを使って予測していたところ、コロナ前までは精度がよかったものの、コロナに入り外出が少なくなってその自動販売機の周りを通る人数が減ると需要予測の精度が落ちてくることが考えられます。このように機械学習モデルの背景場の変化がモデルの性能劣化の影響を与えます。もちろんそれだけでなくビジネスモデルがそもそも変化して、機械学習モデルを利用する利用者の傾向が変化するなども考えられます。
もし機械学習モデルの性能が劣化してきた場合、精度を確認してデプロイ前の精度と遜色がないことを確認したり、以前の期間の精度と比較することで劣化の検知をすることができます。精度を計算するための正解データがあるなら精度を計算することで劣化を検知できるわけです。
しかし精度を計算するための正解データを手に入るのが1ヶ月後、或いは3ヶ月後ということももちろんあると思います。精度の計算するために時間がかかる場合、精度を計算するまで何も対策ができなくなってしまうことになるので、そのような場合の解決策の一つとして、特徴量の変化 -データドリフト- という考え方があります。
データドリフト
データの変化といっても本やblogなどで話されていて、定義した論文などを知らないのでもし知っている方がいたら教えていただければと思いますが、ネットで調べていると下記の3つのドリフトが分けられると思います。
- データドリフト or フィーチャードリフト(特徴量ドリフト) or 共変量シフト or datashift
- インプットデータの分布の変化
- コンセプトドリフト
- 特徴量と目的変数の関係性が変化
- ラベルドリフト
- 正解データが変化
なお、共変量シフトやdatashiftというワードが古くから使われていて、データドリフトは最近の文献(GCP, AWS, Azure etc.)などで見受けられます。いつからデータドリフトというワードが出てきたか出自は私は確認できていませんが、本記事では同じものとして扱い進めます。
データドリフトで使われる指標
データドリフトとして分布の変化を定量的に評価する方法の中から代表的な方法は下記のとおりです。
- Kullback-Leibler Divergence
- KLダイバージェンスとも呼ばれる
- Jensen-Shannon Divergence
- TensofFlow採用(数値特徴量)
- Population stability index
- DataRobotで採用。こちらの指標を初めて聞く人も多いかもしれないので式を記載しておきます。
PSI = \sum ((Actual% - Expected %) \times \ln ( \frac{Actual %}{Expected %}))
- Kolmogorov Smirnov 検定
- チェビシェフ距離 or L距離
- TensorFlowで採用(カテゴリ特徴量)
共通しているのはどれも分布の変化を計算できるものを使っていることです。良し悪しに関してはここでは議論しません。
もしライブラリなどのデータドリフトの指標を使っているなら、どの計算方式を使っていて、どのしきい値が機械学習モデルを適用するビジネスにとって重要なのかを把握されることが重要かと思います。
まとめ
ここまで読むととデータドリフトを必ずモニタリングしようという流れになるかもしれません。しかし、データドリフトが発生するからといって必ずしも精度に影響を与えるわけではないこともあります。
実際に精度に影響するかどうか確認が必要なら事前に検証してみるのも一つの手かもしれません。
精度を計算するまでに時間がかかる場合は、ビジネス毀損を避けるための一つの手段としてデータドリフトを検討してはいかがでしょうか?
宣伝
私はMLOps勉強会の運営の一人です。次回の勉強回について告知させてください!
2021年最後のMLOps勉強会は12月8日(水)を予定しています。
内容はベクトル近傍探索技術とA/Bテストの2本立てです。
ぜひご参加ください!
また、発表者も随時募集しております。下記ページに応募フォームがございますのでみなさんの応募お待ちしています!