はじめに
第一開発事業部の染谷です!
先日AWS Certified Machine Learning Engineer – Associate(MLA)を受験し、無事合格することができました!
今回の受験を機に機械学習について勉強した中で、私が特に理解に苦戦した「ドリフト」について、自分の理解のためにもまとめていきたいと思います。
※規約により試験に出た内容などには触れていません。今回のテーマ「ドリフト」は公開されている試験ガイドにも記載がある項目のため扱っています。
MLモデルのドリフト
試験ガイドの「第4分野: ML ソリューションのモニタリング、保守、セキュリティ」の対象知識の中にMLモデルのドリフトという項目があります。
ドリフトとは、データの性質が時間と共に変化することで、機械学習モデルのパフォーマンスが低下する現象のことを指します。
機械学習は過去のデータをもとに学習するので、そのデータの性質の変化は予測精度に直結します。
最初は精度が高かった不正検知モデルに誤判定が増えたり、商品購入予測モデルが予測を外すようになるなどの現象はドリフトによって引き起こされる可能性があります。
ドリフトの種類
ドリフトにもいくつか種類があるようですが、今回は私が学習中に調べていて違いを理解するのに苦労した「データドリフト」と「コンセプトドリフト」の2つを取り上げます。違いをわかりやすくするために、それぞれの特徴を「商品購入予測モデル」を例にして考えてみます。
①データドリフト
データドリフトとは、モデルに入力されるデータの分布が時間と共に変化することで生じます。今回の商品購入予測の例だと、購入経路の変化が考えられます。
- ある店舗では発注管理のために商品購入予測モデルを使っている
- これまで来店での購入が主流だったが、コロナ禍を機にオンライン販売を導入した
- 最近では来店よりオンラインでの購入が増加している
例のように学習時と運用時で購入経路が変化すると、予測精度が低下する可能性があります。
モデルは過去のデータをもとに「来店した人の購買傾向」を学習していましたが、ある時(コロナ禍)を境にオンライン購入が主流になってしまいました。
「来店した人の購買傾向」を学習していたモデルは、学習時にはなかった「オンライン購入者の購買傾向」をうまく予測できません。
このように新しいデータが加わるなどして、データの分布が変化することで予測精度が低下するのがデータドリフトです。
②コンセプトドリフト
コンセプトドリフトは、特徴量とターゲット(今回の例では商品の購入)の関係が変化することで発生します。ここでは季節と購買傾向の関係を例に考えてみます。
- スーパーマーケットで食材の発注管理のために商品購入予測モデルを使っている
- 冬になると鍋用の食材が売れやすい傾向があった
- 寒い中買い物に行かなくても温かい料理が食べられるデリバリーを利用する人が増えた
これまでは「気温が下がる→鍋用の食材がよく売れる」という、気温(特徴量)と購買傾向(ターゲット)の関係性が成り立っていました。しかしデリバリーの利用者が増えたことで、気温の低下は必ずしも鍋用食材の購入増加に直結しません。
この場合過去のデータを学習したモデルでは最近の傾向に対応できず、商品購入の予測がずれてしまいます。
このように、特徴量とターゲットの関係性が変化することで、予測精度が低下するのがコンセプトドリフトです。
ドリフトを防ぐには?
先ほどの例からもわかるように、ドリフトは外部環境の変化でも起こりえます。そのため完全に防ぐのは困難ですが、予測精度が低下すればせっかく機械学習モデルを導入していても、その恩恵がなくなってしまいます。
そのため対策をすることが重要です。
対策① データのモニタリング
モデルが使うデータの分布やデータの関係性を定期的に確認し、ドリフトの兆候を検知することが必要です。
AWSではAmazon SageMaker Model Monitorを利用して、ドリフトの兆候を検知することができます。
対策② モデルの再学習
定期的に最新のデータを使ってモデルを再学習することで、外部環境が変化してもその変化に対応できるようにします。
Amazon SageMaker Model Monitorでドリフトの兆候を検知したら、AWS LambdaやAmazon EventBridgeと組み合わせて再学習させる仕組みを構築することもできます。
適切な対策を取り、ドリフトの影響を最小限に抑えて運用することが必要です。
まとめ
- ドリフトとは、データの性質が時間と共に変化することで、機械学習モデルのパフォーマンスが低下する現象
- データドリフトはデータの分布が変化することで生じる
- コンセプトドリフトは特徴量とターゲットの関係性が変化することで生じる
- モニタリングや再学習でドリフトの影響を最小限に抑える
以上が今回のまとめになります。
勉強していた中で理解に時間がかかった部分をまとめました。今後も大きく発展し変化していく分野だと思うので、私も再学習して知識をアップデートしていきたいと思います!
最後までお読みいただきありがとうございました!