模型预测结果置信度异常监控方案
监控指标定义
核心监控指标:
- 平均置信度:模型输出概率分布的均值,正常范围0.7-0.9
- 置信度标准差:衡量预测结果的一致性,正常应小于0.15
- 低置信度样本占比:置信度低于0.5的样本比例,应控制在5%以内
- 置信度分布偏度:反映分布是否对称,绝对值超过0.5需告警
告警配置方案
# Prometheus告警规则配置
ALERT ModelConfidenceAnomaly
IF rate(model_prediction_confidence{job="ml-model"}[5m]) < 0.7 or
stddev(model_prediction_confidence{job="ml-model"}[1h]) > 0.15
FOR 10m
ANNOTATIONS:
summary: "模型置信度异常,当前平均值{{ $value }}"
description: "检测到模型预测置信度显著下降或波动性增大"
ALERT LowConfidenceRate
IF rate(model_low_confidence_samples{job="ml-model"}[1h]) > 0.05
FOR 30m
ANNOTATIONS:
summary: "低置信度样本占比过高,当前{{ $value }}%"
实施步骤
- 数据采集:在模型推理服务中添加置信度日志输出
- 指标注册:通过Prometheus Exporter暴露上述指标
- 阈值设定:基于历史数据确定正常区间范围
- 告警测试:模拟异常场景验证告警触发机制
复现验证
创建测试脚本验证监控效果:
import numpy as np
from prometheus_client import Gauge
# 模拟置信度数据
confidence_scores = np.random.normal(0.8, 0.05, 1000)
# 添加异常值
confidence_scores[::100] = 0.2 # 每100个样本插入一个低置信度值
# 计算监控指标
avg_conf = np.mean(confidence_scores)
std_conf = np.std(confidence_scores)
low_rate = np.sum(confidence_scores < 0.5) / len(confidence_scores)
print(f'平均置信度: {avg_conf:.3f}')
print(f'标准差: {std_conf:.3f}')
print(f'低置信度比例: {low_rate:.2%}')
该方案可有效识别模型性能退化和数据分布异常情况。

讨论