模型输出预测置信度分布变化监控
在机器学习模型的生产环境中,预测置信度是衡量模型可靠性的重要指标。当模型性能发生 drift 或出现异常时,置信度分布往往最先体现出来。
监控指标定义
我们重点关注以下三个核心指标:
- 平均置信度:所有预测结果的平均置信度值
- 置信度标准差:反映预测一致性的波动程度
- 置信度分布直方图:通过Kolmogorov-Smirnov检验检测分布变化
具体实现方案
import numpy as np
from scipy import stats
import pandas as pd
class ConfidenceMonitor:
def __init__(self, threshold=0.05):
self.threshold = threshold
self.reference_dist = None
def update_reference(self, predictions):
"""更新参考分布"""
self.reference_dist = np.array(predictions)
def check_drift(self, current_predictions):
"""检查分布变化"""
current_dist = np.array(current_predictions)
# 1. 平均置信度变化
mean_diff = abs(np.mean(current_dist) - np.mean(self.reference_dist))
# 2. 标准差变化
std_diff = abs(np.std(current_dist) - np.std(self.reference_dist))
# 3. KS检验
ks_stat, p_value = stats.ks_2samp(self.reference_dist, current_dist)
return {
'mean_diff': mean_diff,
'std_diff': std_diff,
'ks_statistic': ks_stat,
'p_value': p_value,
'is_drifted': p_value < self.threshold
}
告警配置方案
当以下任一条件满足时触发告警:
- 平均置信度下降超过0.1(即从0.8降至0.7)
- 标准差增长超过0.2(即从0.1增至0.3)
- KS检验p值小于0.05
通过Prometheus + Grafana实现实时监控,设置阈值告警规则。建议每小时执行一次检查,并记录所有异常样本用于后续分析。

讨论