时间序列异常检测三大挑战
- 缺少标注
- 泛化能力
- 效率,因为时间序列异常检测的大多数场景都是对流式数据实时监测,需要及时作出反馈
Spectral Residual(谱残差):SR是用来做视觉显著性检测的,而时间序列的异常检测,某种程度上来说,也是在寻找“显著”的点。因此借用这个思想。
系统概述
- 整个系统主要由三部分组成
- data ingestion(数据注入): 主要是用来把原始数据变成时间序列数据的
- online compute(线上计算):计算异常点
- experimentation platform(实验平台):
-
应用
这套服务目前在微软内部由200多个团队使用
方法
- 核心方法选择SR,因为效率高,常被用于视觉显著性检测
- SR+CNN,CNN用来对SR模型的输出作区分
SR
- SR算法主要包含三步
- 傅立叶变换
- 计算谱残差
- 逆傅立叶变换
- 从数学上说,对于一个序列x,有
- 和表示傅立叶变换和逆傅立叶变换
- A(f)就是x的振幅频谱,P(f)表示对应的相位频谱
- 基于S(x)计算O(x),简单阈值
- 在实际操作的过程中,FFT操作需要滑动窗口,一般来说,目标点都是窗口的最后一个点。但是SR方法在目标点在窗口中间时更好,因此对后续的点做一些简单的预测,计算方法如下
- m一般取5,g表示梯度
- 发现x起关键作用,因此后面的点都是简单的复制x
- 主要难点在获取标注
- 自造数据,从原始数据里随机选取一些点,按照下图所示的公示计算值,然后替代原来的值,并标为异常
- x bar为局部均值,其余两个为滑动窗口内的所有点的均值和方差,r~N(0,1)
- pipeline: