DEV Community

Keita Onabuta
Keita Onabuta

Posted on • Edited on

3 1

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 の発生を通知

まとめ

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

参考情報

Speedy emails, satisfied customers

Postmark Image

Are delayed transactional emails costing you user satisfaction? Postmark delivers your emails almost instantly, keeping your customers happy and connected.

Sign up

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay