DEV Community

Keita Onabuta
Keita Onabuta

Posted on • Updated on

DataDrift in Azure Machine Learning

一般的に機械学習モデルの精度は落ちていきます。モデル学習時のデータと最新のデータの特徴が変わってくるためです。本投稿では、Azure Machine Learning の Datadrift 機能について説明します。

datadrift
※ スライドを Slideshare で公開しています。
DataDrift in Azure Machine Learning


精度変化に対応するための再学習

再学習は次のアプローチでタイミングを検知します。

  1. 運用中のモデルの精度が落ちたとき

運用中のモデルの精度が分かるのであれば問題無いのですが、例えばモデルを自社製品に組み込んで出荷してお客様がネットワークに閉じた事業所で利用している場合など、モデルの精度がわからない場合があります。そのような場合には下記アプローチが必要です。

  1. データの特徴が変化した時

データの様々な特徴の変化を検知します。本投稿でお話する内容になります。では、どういう時にデータの特徴が変化するのか?については様々なケースがありますが、代表的なものを列挙します。

  • データ計測方法の変更
    • 街頭アンケートを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))
Enter fullscreen mode Exit fullscreen mode

SciPy による出力例

他システムとの連携

DataDrift が発生していることを検知する方法としては、デフォルトでメールでのアラート配信機能を提供しています。また、Azure Machine Learning と Event Grid を連携させることで、次のような連携を行うことができます。

  • DataDrift をトリガーにしてモデルの再学習 & デプロイを自動実行
  • Github の Issue を作成
  • Teams, Slack に DataDrift の発生を通知

まとめ

  • モデル精度維持のためにデータセットをモニタリング
    • モデルの精度は日々変化するものです。データの変化はモデル精度に大きく影響します。
  • モニタリング対象は “データセット全体” & “個々の特徴量”
  • イベントドリブンな機械学習パイプラインの実現
    • 複雑な機械学習環境の連携性を向上することができます。

参考情報

Top comments (0)