← 返回题目列表

无监督异常检测有哪些常见方法?

高频 中等 第 5 / 25 题 更新于 2026/09/25
无监督学习聚类降维PCA
学习 AI 实战项目

简化版

异常检测不是寻找“少数样本”这么简单,而是学习正常参照系,再按业务代价把异常分数转成告警。建模前要定义异常粒度、可用特征和反馈延迟,评估时优先看 Precision@K、召回率、告警预算与检测延迟。

详细版

  • 点异常、上下文异常和群体异常需要不同特征与窗口。
  • 无监督分数只表示相对离群程度,不天然等于异常概率。
  • 阈值应在独立验证窗口按漏报和误报成本选择。
  • 时间切分可避免未来分布泄漏到正常基线。
  • 上线后必须监控分数分布、告警率和标签回流。

完整版教学

一、问题定义与核心直觉

先把检测对象定义为“用户日”“交易”或“时间窗口”。同一条记录在全局可能正常,在夜间、特定地区或连续序列中却异常,因此上下文必须进入参照系。

检测器输出连续分数 s(x),排序与决策是两层问题。训练阶段学习结构,验证阶段才用业务预算确定阈值;强行要求训练污染率等于线上异常率会混淆两者。

二、机制与公式

alert(x)=1[s(x)>=tau]
tau=argmin_tau(c_FN*FN(tau)+c_FP*FP(tau))

这里的 s(x) 可能来自距离、密度、隔离深度或重构误差,量纲因模型而异。若标签只覆盖被调查样本,直接统计 FN/FP 还会有选择偏差;应通过随机抽检或历史事件回放补足阈值评估。

三、带数字的推演

每天处理 100 万笔交易,人工只能复核 500 笔。模型前 500 笔命中 80 个真实异常,则 Precision@500=16%;若当天共有 200 个异常,召回率为 40%。这比只报 ROC-AUC 更直接对应运营能力。

这组数字还依赖“当天共有 200 个异常”已被充分标注;现实中若只核查 Top-500,就只能直接估计头部精度,不能把未核查样本一律当正常来计算完整召回率。

四、方案对比

方案优势代价或边界
统计规则透明、冷启动快难覆盖多变量交互
Isolation Forest非线性且可扩展分数需业务校准
监督分类标签充分时最直接受标签延迟与选择偏差影响

五、工程执行流程

定义检测单元与标签窗口 -> 按时间切分 -> 只在训练窗拟合预处理和检测器
-> 验证窗选择阈值 -> 回放峰值与事件 -> 灰度告警 -> 收集处置结果

上线应同时监控分数分位数、每日告警量、复核命中率与标签延迟。分数漂移但命中率不变和命中率下降需要不同处理:前者可能只需重选阈值,后者可能需要更新特征或模型。

六、边界条件与上线代价

季节性、批量任务和产品发布会整体抬高分数,若没有分群或动态基线,系统会制造告警风暴。

离线标签通常只覆盖被调查样本,未调查不等于正常;评估时应记录抽检策略,并用随机抽检估计选择偏差。

关键判断:记住“对象—参照—分数—阈值—反馈”五步:先说明检测谁和相对谁异常,再解释分数,最后用成本定阈值。

七、常见误区与追问

  • 误区:异常就是出现频率最低的样本。 低频可能是合法长尾,高频模式也可能构成群体异常。

  • 追问:没有标签怎么选阈值? 用告警预算、历史事件回放和抽样复核共同确定。

  • 误区:AUC 高就一定能上线。 极低基率下前若干名精度和误报成本更关键。

  • 追问:概念漂移如何处理? 监控分数分位数并按稳定周期重训或更新基线。

  • 追问:如何防止泄漏? 预处理、阈值和模型都只能使用决策时已经可见的数据。

八、加强记忆

记住“对象—参照—分数—阈值—反馈”五步:先说明检测谁和相对谁异常,再解释分数,最后用成本定阈值。无监督只减少标签依赖,不会消除验证与运营闭环。