🦔

Evidently AI: 機械学習モデルのモニタリングと評価

2025/03/11に公開

はじめに

機械学習モデルのパフォーマンスは、デプロイ後も一定ではありません。データの分布が変化したり、予測精度が劣化することがあります。これを防ぐために、Evidently AI というオープンソースツールが活用されています。本記事では、Evidently AI の特徴や具体的な使い方について詳しく解説します。


1. Evidently AI とは?

Evidently AI は、機械学習モデルの監視、評価、データドリフト検出を行うための Python ライブラリです。

主な機能

  1. データドリフトの検出
    • 新しいデータが、学習データと異なる分布を持っているかを分析
  2. ターゲットドリフトの検出
    • 目的変数(ターゲット)の分布が変化したかを評価
  3. モデルの精度監視
    • モデルの予測精度を自動的に評価し、劣化を検知
  4. データ品質のチェック
    • 欠損値や異常値が含まれていないかを分析
  5. レポート生成
    • 上記の分析結果を自動的にレポートとして出力

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 での活用例

  1. GitHub ActionsJenkins でモデルのデプロイ前に Evidently を実行
  2. PrometheusGrafana にデータを送信し、可視化
  3. モデルの劣化を検知したら、自動的に 再学習パイプライン を実行
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