Evidently AI: 機械学習モデルのモニタリングと評価
はじめに
機械学習モデルのパフォーマンスは、デプロイ後も一定ではありません。データの分布が変化したり、予測精度が劣化することがあります。これを防ぐために、Evidently AI というオープンソースツールが活用されています。本記事では、Evidently AI の特徴や具体的な使い方について詳しく解説します。
1. Evidently AI とは?
Evidently AI は、機械学習モデルの監視、評価、データドリフト検出を行うための Python ライブラリです。
主な機能
-
データドリフトの検出
- 新しいデータが、学習データと異なる分布を持っているかを分析
-
ターゲットドリフトの検出
- 目的変数(ターゲット)の分布が変化したかを評価
-
モデルの精度監視
- モデルの予測精度を自動的に評価し、劣化を検知
-
データ品質のチェック
- 欠損値や異常値が含まれていないかを分析
-
レポート生成
- 上記の分析結果を自動的にレポートとして出力
Evidently は、Jupyter Notebook, Python Script, Dashboard の形式でレポートを表示することができます。
2. インストールとセットアップ
Evidently を使用するには、Python の環境にインストールする必要があります。
pip install evidently
次に、Python スクリプトや Jupyter Notebook で使用できます。
import evidently
from evidently.report import Report
from evidently.metric_preset import DataDriftPreset
3. データドリフトの検出
データドリフトとは、トレーニングデータと新しいデータの分布が異なる状態を指します。Evidently では、Kolmogorov-Smirnov テスト などの統計手法を用いて、データの変化を検出します。
サンプルコード
import pandas as pd
import numpy as np
from evidently.report import Report
from evidently.metric_preset import DataDriftPreset
# 旧データ(トレーニングデータ)
reference_data = pd.DataFrame({
"feature1": np.random.normal(0, 1, 1000),
"feature2": np.random.normal(5, 2, 1000)
})
# 新データ(本番環境のデータ)
current_data = pd.DataFrame({
"feature1": np.random.normal(0.5, 1, 1000), # 平均値が少し変化
"feature2": np.random.normal(5, 2, 1000)
})
# データドリフトのレポート生成
report = Report(metrics=[DataDriftPreset()])
report.run(reference_data=reference_data, current_data=current_data)
report.show()
これを実行すると、データの分布の変化(ドリフト) を可視化できます。
4. モデルの精度監視
Evidently は、機械学習モデルの精度が変化したかを評価することもできます。
モデル精度監視のサンプルコード
from evidently.metric_preset import RegressionPreset
# モデルの精度評価
model_report = Report(metrics=[RegressionPreset()])
model_report.run(reference_data=reference_data, current_data=current_data)
model_report.show()
これにより、MSE(平均二乗誤差), R2スコア, MAE(平均絶対誤差) などのメトリクスを監視できます。
5. ダッシュボードでの可視化
Evidently は Web ダッシュボード でリアルタイムにデータを監視する機能もあります。
from evidently.dashboard import Dashboard
from evidently.metric_preset import ClassificationPreset
dashboard = Dashboard(metrics=[ClassificationPreset()])
dashboard.run(reference_data=reference_data, current_data=current_data)
dashboard.show()
これにより、ブラウザでモデルの精度変化やデータドリフトをリアルタイムで確認できます。
6. Evidently を活用した MLOps パイプライン
Evidently は CI/CD パイプライン や MLOps フレームワーク と統合することで、自動的にモデルのパフォーマンスを監視することができます。
MLOps での活用例
-
GitHub Actions
やJenkins
でモデルのデプロイ前に Evidently を実行 -
Prometheus
やGrafana
にデータを送信し、可視化 - モデルの劣化を検知したら、自動的に 再学習パイプライン を実行
jobs:
monitor-model:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Install dependencies
run: pip install evidently
- name: Run model monitoring
run: python monitor.py
まとめ
Evidently AI は、機械学習モデルのパフォーマンスを監視し、データの変化を検知するための強力なツールです。
✅ データドリフトの検出
✅ モデルの精度監視
✅ リアルタイムダッシュボード
✅ CI/CD パイプラインとの統合
MLOps を導入する際には、Evidently を活用して継続的にモデルを監視することが重要です。
今後、さらに高度な Evidently の活用方法や他の MLOps ツールとの連携についても紹介していきます!
Discussion