データのテスト

本番環境向けのMachine Learningモデル開発

Sinan Ozdemir

Data Scientist, Entrepreneur, and Author

データ検証とスキーマテスト

  • データ検証テストは欠損、矛盾、異常値を検出します
    • 例: 外れ値の検出
  • スキーマテストは想定どおりのデータ形式・型を確認します

    • 例: 「time to value」が秒の整数で、分ではないことを確認
  • Great Expectations のようなツールで自動化できます

グレート・エクスペクテーションズのロゴ

本番環境向けのMachine Learningモデル開発

基本を超えたテスト

  • データ/スキーマテストは基本的な不具合を確認
  • より高度な エクスペクテーションテスト は複雑な問題を検出
    • 値が所定の範囲内かの確認
    • 既知のパターン/トレンドの確認
本番環境向けのMachine Learningモデル開発

エクスペクテーションテスト

  • データ検証テストの一種
  • ユーザーやシステムが定義した「期待」にデータが合致するか確認
    • 例: サイト滞在時間が平均約4分、標準偏差1分
    • 例: 受診履歴の日付が現在時刻より前であること
本番環境向けのMachine Learningモデル開発

特徴量重要度テスト

  • 特徴量重要度テストはMLモデルで重要な特徴量を特定
  • 例: Permutation importance
    • 特徴量をランダムに並べ替え、性能低下量を測定

棒グラフ

本番環境向けのMachine Learningモデル開発

Permutation importance の例

セットアップ:

import numpy as np
from sklearn.ensemble import RandomForestClassifier
from sklearn.inspection import permutation_importance
# Train a random forest classifier (assuming we have some data)
model = RandomForestClassifier().fit(X_train, y_train)

Permutation importance の実行:

# Calculate feature importances using permutation importance
results = permutation_importance(model, X_test, y_test, n_repeats=10, random_state=42)
# Print the feature importances
feature_names = ['feature_1', 'feature_2', 'feature_3', ...]
importances = results.importances_mean
for i in range(len(feature_names)):
    print(f'{feature_names[i]}: {importances[i]}')
本番環境向けのMachine Learningモデル開発

データドリフトの検出

データドリフト

  • フィーチャードリフトとも呼ばれます
  • モデルの入力データ分布の変化
  • 例: 新製品に対応する新語の使用が増え、チャットボットが対応できない

ラベルドリフト

  • ラベル分布の変化
  • 例: 返品依頼が減り、返品状況の問い合わせが増える
本番環境向けのMachine Learningモデル開発

Passons à la pratique !

本番環境向けのMachine Learningモデル開発

Preparing Video For Download...