异常值规则灰度发布与模型serving实战课程 - 第1节
1.1 异常值定义
异常值(Anomaly / Outlier)是指在数据集中显著偏离大多数数据模式的观测值。这些数据点并非随机噪声,而是由不同的生成机制或异常状态产生。在机器学习系统中,异常值检测的目标是识别出这些“少数派”,并判断其是否代表故障、欺诈、入侵或系统退化。
核心定义: 异常值 ≠ 噪声。噪声是随机误差,通常被过滤或平滑;异常值携带信息,需要被识别、分析或告警。
1.2 异常检测的业务价值
异常检测在AI工程化与SRE实践中具有不可替代的地位。它直接关系到系统的稳定性、安全性和成本控制。以下是几个关键业务场景:
| 业务领域 | 典型场景 | 异常检测价值 |
|---|---|---|
| 金融风控 | 信用卡盗刷、洗钱交易 | 实时拦截欺诈,减少资金损失 |
| SRE / 运维 | 服务器CPU毛刺、延迟突增 | 提前发现故障,缩短MTTR |
| 工业IoT | 传感器读数异常、设备振动偏离 | 预测性维护,避免非计划停机 |
| 内容安全 | 异常登录、爬虫行为 | 保护用户账户与数据隐私 |
1.3 常见异常类型
根据异常点与上下文的关系,异常值通常分为三类:点异常、上下文异常和集体异常。理解这三类异常是设计检测规则与灰度发布策略的基础。
1.3.1 点异常(Point Anomaly)
单个数据点相对于全局数据分布表现出显著偏离。这是最直观、最常见的异常类型。
- 特征: 个体偏离,不依赖邻居或时间序列。
- 示例: 信用卡单笔消费10万元(用户历史平均消费2000元);服务器CPU瞬时飙升至99%(基线30%)。
- 检测方法: 统计阈值(3-sigma)、孤立森林、One-Class SVM。
1.3.2 上下文异常(Contextual Anomaly)
数据点在全局分布中可能正常,但在特定上下文(如时间、空间、序列位置)中表现异常。上下文异常对时序数据尤为重要。
- 特征: 行为在特定条件下异常,脱离上下文则正常。
- 示例: 凌晨3点产生大量业务请求(正常业务高峰在白天);冬季气温30°C(对于该季节上下文异常)。
- 检测方法: 时间序列分解(STL)、基于滑动窗口的统计、循环神经网络(RNN)重建误差。
1.3.3 集体异常(Collective Anomaly)
单个数据点看似正常,但一组数据点共同出现时构成异常模式。集体异常往往对应复杂事件或系统状态转移。
- 特征: 个体正常,群体模式异常。
- 示例: 连续10次登录失败后突然成功(撞库攻击模式);微服务A、B、C的延迟同时小幅上升(级联故障前兆)。
- 检测方法: 子序列聚类、马尔可夫模型、图异常检测(Graph Anomaly Detection)。
1.4 异常类型与检测策略对照
在实际的Serving系统中,不同类型的异常需要匹配不同的检测窗口和规则引擎。下表总结了核心差异:
| 异常类型 | 检测粒度 | 窗口要求 | 典型算法 | 灰度发布关注点 |
|---|---|---|---|---|
| 点异常 | 单点 | 无窗口 / 实时 | Z-Score, IQR, 孤立森林 | 低延迟规则,避免误杀 |
| 上下文异常 | 点 + 上下文 | 滑动窗口(如1h) | STL, Twitter AnomalyDetection | 窗口大小影响召回率 |
| 集体异常 | 集合 / 子序列 | 固定窗口或事件窗口 | Hotelling T², 图神经网络 | 需要状态管理,资源消耗高 |
实战提示: 在构建异常检测规则时,建议先以点异常作为灰度发布的“快速拦截层”,再逐步加入上下文异常和集体异常规则。这样可以避免初期规则过于复杂导致发布阻塞。