模型输出结果分布一致性检查
在机器学习模型运行时监控中,输出结果分布一致性是关键指标。当模型输出分布发生显著变化时,可能意味着数据分布漂移或模型性能退化。
核心监控指标
- KL散度:衡量新旧输出分布的差异
- JS散度:对称的分布距离度量
- 输出均值/方差:统计特征变化
- 分位数分布:关键百分位点稳定性
实现方案
import numpy as np
from scipy import stats
import pandas as pd
class OutputDistributionMonitor:
def __init__(self, reference_dist):
self.reference_dist = reference_dist
def calculate_kl_divergence(self, new_dist):
return stats.entropy(new_dist, self.reference_dist)
def check_distribution_consistency(self, new_outputs, threshold=0.1):
# 计算KL散度
kl_div = self.calculate_kl_divergence(new_outputs)
# 计算均值变化率
mean_change = abs(np.mean(new_outputs) - np.mean(self.reference_dist)) /
(np.mean(self.reference_dist) + 1e-8))
return {
'kl_divergence': kl_div,
'mean_change_rate': mean_change,
'is_consistent': kl_div < threshold and mean_change < 0.05
}
告警配置
阈值设置:
- KL散度 > 0.15 → 高级告警
- 均值变化率 > 5% → 中级告警
- JS散度 > 0.08 → 中级告警
告警策略:
- 连续3次检测不一致触发
- 发送至Slack和邮件通知
- 自动触发模型重新训练流程
此方案可有效识别模型输出异常,确保业务连续性。

讨论