模型输入数据异常值检测监控方法
核心监控指标
- 输入特征分布偏移率:使用Kolmogorov-Smirnov检验监测每个特征的分布变化
- 异常值密度:统计输入数据中超出3σ范围的数据比例
- 数据完整性率:监测缺失值、空值比例
- 输入维度一致性:检查输入样本维度是否符合预期
告警配置方案
import numpy as np
from scipy import stats
import pandas as pd
# 异常值检测类
class InputDataMonitor:
def __init__(self, reference_data):
self.reference_data = reference_data
self.threshold = 0.05 # 5%异常率阈值
def detect_anomalies(self, new_batch):
anomalies = []
for col in self.reference_data.columns:
if col in new_batch.columns:
ks_stat, p_value = stats.ks_2samp(
self.reference_data[col],
new_batch[col]
)
if p_value < 0.05: # 分布显著变化
anomalies.append(f"{col}_distribution_change")
# 检测3σ异常值
for col in new_batch.columns:
if col in self.reference_data.columns:
mean = self.reference_data[col].mean()
std = self.reference_data[col].std()
outliers = new_batch[
(new_batch[col] < mean - 3*std) |
(new_batch[col] > mean + 3*std)
]
if len(outliers) > len(new_batch) * 0.05: # 超过5%异常值
anomalies.append(f"{col}_outlier_rate")
return anomalies
# 使用示例
monitor = InputDataMonitor(reference_data)
new_batch = pd.read_csv('input_batch.csv')
anomalies = monitor.detect_anomalies(new_batch)
if anomalies:
# 发送告警到Prometheus或Slack
print(f"检测到异常:{anomalies}")
监控策略
- 实时流式监控:每分钟检查一次输入批次
- 阈值动态调整:基于历史数据自动调节3σ边界
- 多维度告警:分布变化和异常值分别设置不同严重级别
- 自动化响应:发现异常时自动暂停模型推理并触发人工介入

讨论