技能创建器
skill-creator
创建、改进和评估自定义技能,把专业流程转化为可重复使用的 AI 能力。
monitor-model-drift【数据与研究】Implement comprehensive model drift monitoring using Evidently AI, statistical tests (PSI, KS), and custom metrics to detect data drift and concept drift in production ML systems. Set up automated alerting and reporting workflows to catch degradation before it impacts business metrics. Use when production models show unexplained performance degradati…
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
完整配置檔與範本詳見 Extended Examples。
以統計檢定與自動化監測,偵測並告警生產 ML 模型之資料漂移與概念漂移。
以適當之依賴項建立監測框架。
# Create virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install Evidently and dependencies
pip install evidently pandas scikit-learn prometheus-client
# Create monitoring directory structure
mkdir -p monitoring/{reports,config,alerts}
建配置檔:
# monitoring/config/drift_config.py
from evidently.metric_preset import DataDriftPreset, TargetDriftPreset
from evidently.metrics import (
DatasetDriftMetric,
DatasetMissingValuesMetric,
ColumnDriftMetric,
)
# ... (see EXAMPLES.md for complete implementation)
預期: 配置檔已建,閾值合於模型之容忍度。
失敗時: 從保守閾值始(PSI > 0.2、KS p-value < 0.01),依誤報率調校。
建立含多種統計檢定之漂移偵測管道。
# monitoring/drift_detector.py
import pandas as pd
import numpy as np
from scipy.stats import ks_2samp, chi2_contingency
from evidently.report import Report
from evidently.metric_preset import DataDriftPreset
from evidently.metrics import ColumnDriftMetric, DatasetDriftMetric
from datetime import datetime, timedelta
# ... (see EXAMPLES.md for complete implementation)
預期: 漂移偵測順利運行,產出 JSON 報告含各特徵統計,並識別漂移之特徵。
失敗時: 檢查缺失值(補值或捨棄),確保參考與當前資料具相同欄位,驗證資料型別一致。
為人工檢視與調試,產生視覺化 HTML 報告。
# monitoring/generate_reports.py
from evidently.report import Report
from evidently.metric_preset import DataDriftPreset, TargetDriftPreset
from evidently.metrics import (
ColumnDriftMetric,
DatasetDriftMetric,
DatasetMissingValuesMetric,
)
# ... (see EXAMPLES.md for complete implementation)
預期: HTML 報告產於 monitoring/reports/,瀏覽器中可檢視,互動圖示分布比較。
失敗時: 驗輸出目錄之寫入權限,確認 Evidently 版本 >= 0.4.0,確保資料框有足夠列數(建議 >100)。
監測預測性能,以偵概念漂移(特徵與目標關係之變)。
# monitoring/concept_drift.py
import pandas as pd
import numpy as np
from sklearn.metrics import roc_auc_score, mean_squared_error, accuracy_score
from typing import Dict, List
import json
# ... (see EXAMPLES.md for complete implementation)
預期: 性能監測能偵知模型準確率/AUC 跌破閾值,預示概念漂移。
失敗時: 確真值標籤可得(或須延遲驗證批次作業),驗預測分數已適當校準(分類為 0-1 區間),查特徵中無標籤洩漏。
將漂移偵測與告警系統(Slack、PagerDuty、email)整合。
# monitoring/alerting.py
import requests
import json
from typing import Dict, List
import logging
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
# ... (see EXAMPLES.md for complete implementation)
預期: 偵知漂移時告警送至 Slack/PagerDuty,嚴重度依漂移占比與關鍵特徵涉及而定。
失敗時: 先以 curl 測試 webhook URL,驗 PagerDuty 整合金鑰權限正確,查防火牆對外 HTTPS 規則,對暫時性網路失敗實作重試邏輯。
將漂移偵測自動化,按排程運行(每日或每週)。
# monitoring/scheduler.py
import schedule
import time
import logging
from datetime import datetime, timedelta
import pandas as pd
logging.basicConfig(
# ... (see EXAMPLES.md for complete implementation)
或用 cron:
# Add to crontab (crontab -e)
# Run daily at 2 AM
0 2 * * * cd /path/to/monitoring && /path/to/venv/bin/python scheduler.py >> logs/cron.log 2>&1
或用 Airflow DAG:
# airflow/dags/drift_monitoring_dag.py
from airflow import DAG
from airflow.operators.python import PythonOperator
from datetime import datetime, timedelta
default_args = {
'owner': 'ml-team',
'depends_on_past': False,
# ... (see EXAMPLES.md for complete implementation)
預期: 監測按排程自動運行,產報告,僅於漂移逾閾值時送告警,並記錄所有活動。
失敗時: 查排程程序是否運行(ps aux | grep scheduler),驗 cron 服務啟動,確資料來源可達,覽日誌中之例外,作業未運行時設「死人開關」告警。
detect-anomalies-aiops - 時序異常偵測,用於運維指標deploy-ml-model-serving - 模型部署模式與版本管理setup-prometheus-monitoring - 基礎設施指標蒐集review-data-analysis - 統計分析驗證與同儕審查