时间序列异常检测三大挑战

  1. 缺少标注
  2. 泛化能力
  3. 效率,因为时间序列异常检测的大多数场景都是对流式数据实时监测,需要及时作出反馈

Spectral Residual(谱残差):SR是用来做视觉显著性检测的,而时间序列的异常检测,某种程度上来说,也是在寻找“显著”的点。因此借用这个思想。

系统概述

- 整个系统主要由三部分组成

  • data ingestion(数据注入): 主要是用来把原始数据变成时间序列数据的
  • online compute(线上计算):计算异常点
  • experimentation platform(实验平台):
  • image.png

    应用

    这套服务目前在微软内部由200多个团队使用

方法

  • 核心方法选择SR,因为效率高,常被用于视觉显著性检测
  • SR+CNN,CNN用来对SR模型的输出作区分

SR

  • SR算法主要包含三步
    • 傅立叶变换
    • 计算谱残差
    • 逆傅立叶变换
  • 从数学上说,对于一个序列x,有
    • image.png
    • image.pngimage.png表示傅立叶变换和逆傅立叶变换
    • A(f)就是x的振幅频谱,P(f)表示对应的相位频谱
    • image.png
  • 基于S(x)计算O(x),简单阈值
    • image.png
  • 在实际操作的过程中,FFT操作需要滑动窗口,一般来说,目标点都是窗口的最后一个点。但是SR方法在目标点在窗口中间时更好,因此对后续的点做一些简单的预测,计算方法如下
    • image.png
    • m一般取5,g表示梯度
    • 发现x起关键作用,因此后面的点都是简单的复制x


  • 主要难点在获取标注
  • 自造数据,从原始数据里随机选取一些点,按照下图所示的公示计算值,然后替代原来的值,并标为异常
  • image.png
  • x bar为局部均值,其余两个为滑动窗口内的所有点的均值和方差,r~N(0,1)
  • pipeline:
  • image.png