一般的に機械学習モデルの精度は落ちていきます。モデル学習時のデータと最新のデータの特徴が変わってくるためです。本投稿では、Azure Machine Learning の Datadrift 機能について説明します。
※ スライドを Slideshare で公開しています。
DataDrift in Azure Machine Learning
精度変化に対応するための再学習
再学習は次のアプローチでタイミングを検知します。
- 運用中のモデルの精度が落ちたとき
運用中のモデルの精度が分かるのであれば問題無いのですが、例えばモデルを自社製品に組み込んで出荷してお客様がネットワークに閉じた事業所で利用している場合など、モデルの精度がわからない場合があります。そのような場合には下記アプローチが必要です。
- データの特徴が変化した時
データの様々な特徴の変化を検知します。本投稿でお話する内容になります。では、どういう時にデータの特徴が変化するのか?については様々なケースがありますが、代表的なものを列挙します。
- データ計測方法の変更
- 街頭アンケートをWeb形式に切り替える etc
- データ品質の劣化
- 欠損値の増加、文字の揺らぎ etc
- 季節性などの自然な変化
- 気温・湿度の変化、消費者の需要の変化 etc
- データ生成物の変化 etc
- 設備の劣化、嗜好の変化 etc
Azure Machine Learning
Azure Machine Learning は機械学習のライフサイクルをフルでサポートする機械学習プラットフォームです。AutoML、HyperParameter Tuning のようなモデル学習を効率的に行ったり、MLOps の仕組みもご提供しています。
Azure Machine Learning
企業向け仕様の機械学習サービスでモデルをよりすばやく構築してデプロイする
https://azure.microsoft.com/ja-jp/services/machine-learning/
また、データセットを管理する機能もご提供しています。
- データソースへの接続
- Azure が提供する様々なデータソースへの接続 (Azure SQL Database, Azure PostgreSQL, Azure MySQL Database, Azure Data Lake Storage Gen2 など)
- 属性情報のバージョン管理
- スナップショット保存
- Data Drift (本投稿のトピック)
DataDrift 機能
DataDrift は学習データや推論データに適用できます。モニタリング対象は大きく下記の2つです。
- データセット全体
- 個々の特徴量
それぞれどのようなアプローチをしているか説明します。
データセット全体
DataDrift を検知する分類モデルを Azure Machine Learning を有しており、それを用いています。比較対象の 2 つのデータ (モデル学習時のデータ、最新のデータ) を識別することを試みます。全く識別できない場合は 0 、完全に識別できる場合は 1 となるようなドリフト係数 (Drift Coefficient) を出力します。また内部でモデル解釈機能を利用しており、ドリフトに寄与している
個々の特徴量
先ほどはデータセット全体を見ましたが、個々の特徴量についてもアプローチすることができます。こちらは様々なメトリックを提供しています。
- 数値系データ
- ワッサースタイン距離、最小値、平均値、最大値
- カテゴリーデータ
- ユークリッド距離、一意の値の数
ワッサースタイン距離とは、異常検知や最適輸送経路問題でも利用されるもので、2 つのデータ分布を出力するものです。SciPyでも簡単に算出することができます。
# 2 つのBeta分布のワッサースタイン距離
from scipy.stats import wasserstein_distance,beta
wasserstein_distance(stats.beta.pdf(x,5,5), stats.beta.pdf(x,8,5))
他システムとの連携
DataDrift が発生していることを検知する方法としては、デフォルトでメールでのアラート配信機能を提供しています。また、Azure Machine Learning と Event Grid を連携させることで、次のような連携を行うことができます。
- DataDrift をトリガーにしてモデルの再学習 & デプロイを自動実行
- Github の Issue を作成
- Teams, Slack に DataDrift の発生を通知
まとめ
- モデル精度維持のためにデータセットをモニタリング
- モデルの精度は日々変化するものです。データの変化はモデル精度に大きく影響します。
- モニタリング対象は “データセット全体” & “個々の特徴量”
- イベントドリブンな機械学習パイプラインの実現
- 複雑な機械学習環境の連携性を向上することができます。
参考情報
-
Channel 9 (短編動画 – 日本語字幕あり) # チャネル登録ぜひ!
-
製品ドキュメント
-
Sample Code (Jupyter)
Top comments (0)