跳到正文
工具 · 交互

异常检测演练场

全局 z-score、滚动窗口、季节分解。同一条曲线,截然不同的告警。调阈值,做比较。

交互 · 异常检测 同一条曲线,不同的检测器 在同一条 90 天的合成指标上,比较全局 z-score、滚动窗口和季节性残差三种规则。
第 90 天 第 1 天
方法
标记总数 0 落在置信带外的点
命中真异常 0 / 3 注入的异常中被找到的
误报 0 被误标的普通日子
工作原理

它在算什么

曲线是固定的合成数据:90 个日度点 = 线性趋势(100 + 0.11t)+ 周循环(10 × sin(2πt/7))+ 高斯噪声(σ = 2.4),再在第 12、45、74 天注入三个尖峰(+42、+16、+9)。

每种方法都先估一条中心线和一个离散度,把落在中心 ± 阈值 × 离散度之外的点标记为异常。三种方法的区别只在于怎么估这两样东西:

  • z-score:全部 90 个点算一个全局均值和标准差。
  • 滚动窗口:每天用之前至多 28 天的均值和标准差;开头一周退回用最初 28 天。
  • 季节分解:先拟合线性趋势,再按星期几平均去趋势值得到季节轮廓,最后在趋势 + 季节的基线上按残差标准差画带。

假设

  • 残差近似高斯,季节周期恰好是 7 天。
  • 异常是单日尖峰,不是水平位移或缓慢漂移。

边界与失效场景

  • 全局 z-score 把趋势和季节性都吸进了标准差,置信带被撑宽,中等尖峰会漏掉。这正是这个对比想说明的。
  • 三个估计量都不稳健:尖峰会污染用来评判它的均值和标准差,尖峰之后的滚动窗口尤其明显。生产系统会用 median/MAD 或真正的模型。
  • 命中数和误报数在这里能算出来,只因为异常是注入的。真实数据没有标签。