背景
MLOps(モデル実運用中にモデルを更新し続けるための取り組みの総称)を依頼したい、という案件が増加している傾向にあるとのことなので、MLOpsの中で大切になってくる「どのタイミングでモデルを再学習するのか」のところについて共有します。
データシフト
機械学習モデルは、「当時の学習データに対して」精度をある程度担保したものを作るのであって、実際のデータに対しては精度は担保していません。時間が経つにつれてほとんどのケースで実際のデータは「当時の学習データ」からかけ離れてゆき精度が落ちていきます。この現象をデータシフトと言います。
そのため、再学習を行うタイミングの見つけ方としては、
「データシフトが発生しているかどうかを確認」
↓
「発生していることが確認できたら再学習を行う」
というような流れが、私たちが取れるアプローチの一つとなります。
アプローチ①:精度関係の指標を用いる
このアプローチでは、下の絵のように”F1-score"といったような精度関係の指標を用いてそれがある一定のラインまで減衰したら、再度学習を行う、という流れになります。
アプローチ②:統計的検定
アプローチ①は、下記のケースだと使えない時があります。
運用中のモデルの予測結果と比較する「正解データ」がそもそも手に入らない
「正解データ」が使えるようになるまでのタイムラグが長すぎる
アプローチ②は、「正解データに対してどれだけ予測がずれているのか」、を確認するのではなく、「これまで入ってきてたデータと今入ってきているデータがどれだけずれているのか」を統計的な手法を用いて確認するアプローチとなります。
頻繁に使用されているのは、「2標本検定」です。データの種類ごとおすすめの検定方法をまとめている資料を見つけたので↓に共有します。
勿論、記述統計(分布の標準偏差、中央値、平均等)で簡易的に行うこともできます。
F.K(20代/入社3年目)