【时间序列】KDD 2019 | 基于谱残差和 CNN 的时间序列异常检测模型
❝论文标题 | Time-Series Anomaly Detection Service at Microsoft论文来源 | KDD 2019论文链接 | https://arxiv....
❝论文标题 | Time-Series Anomaly Detection Service at Microsoft
论文来源 | KDD 2019
论文链接 | https://arxiv.org/abs/1906.03821
源码链接 | https://github.com/microsoft/anomalydetector
转载:AISeer
❞
TL;DR
论文中基于 Spectral Residual (SR) 和卷积网络提出了一种新颖的单变量时间序列异常检测算法 SR-CNN,是第一篇将 SR 从视觉显著性检测应用到时间序列异常检测问题上的工作,结合 CNN 主要是为了提升 SR 的性能。实验部分在公开数据集和微软生产环境数据中验证了 SR-CNN 的有效性。
Background
生产环境中时间序列异常检测算法主要需要解决三个问题:Unsupervised + Generation + Efficiency。
这些问题能够解决那说明就确实是一个非常棒的工作了 ????????

❝???? Bonus:Holt-winters 算法对周期性数据效果较好,SPOT 算法对突刺型数据效果好。
❞
Algorithm/Model
论文提出的整体框架如下图所示

主要包括三个模块:
-
「data ingestion」:将数据按照设定粒度采集然后存储到 Kafka 和 InfluxDB 中。
-
「experimentation platform」:测试异常检测模型性能并收集可能的标注信息 (K8s)。
-
「online compute」:流式异常检测并结合多个异常检测结果触发告警 (Flink)。
关注时间序列异常检测算法模块。
SR
Spectral Residual(SR)算法主要包括三步:
-
通过傅里叶变换计算对数振幅谱;
-
计算谱残差;
-
通过傅里叶逆变换将序列还原到空域;
给定 维序列 ,其数学表达形式如下
其中 表示傅里叶变换和逆变换; 表示振幅谱; 表示相位谱; 是振幅谱的对数形式; 是平均谱,近似为 经过 卷积得到的形式, 为 的单位矩阵; 表示 「spectral residual」 谱残差,是原始序列的压缩表示,其中 「innovation part」 突变部分将会较为显著;最后通过傅里叶逆变换将序列转为空域得到 称之为 「saliency map」 显著图。
以时间序列表示以上处理结果:

从上图中可以看出,通过 SR 处理后的序列异常点非常明显,因此可以通过非常简单的规则来检测异常。
例如使用固定阈值 ,给定显著图 ,输出序列 计算方法为
其中
表示
给定流式序列
其中
论文中发现第一个估计值非常给你重要,因此在输入序列后直接添加
总结下,基础的 SR 算法包含以下超参数:
-
时间窗口
-
估计点数量
-
异常阈值
SR-CNN
在 「saliency map」 上通过固定阈值的方法进行异常检测太简单了,因此论文中提出用 CNN 作为判别模型直接对时间序列分类。????????
但是 CNN 是有监督所以就必须人工生成数据来训练模型,怎么生成呢?在时间序列上插入异常点并计算得到训练集 「saliency maps」。插入值计算方法如下
其中
SR-CNN 整体模型架构如下图所示,采用交叉熵作为损失函数。

Experiments
实验部分采用的数据集概述如下

实验结果对比如下

不同类型时间序列的异常检测性能如下

整体而言 SR-CNN 方法还行,但用的最多的还是 SR。
记录下 SR 通用实验参数,卷积矩阵
Thoughts
-
一种新的思路来解决时间序列异常检测问题而且可以用到工业界 ????????
-
后续的 CNN 部分可有可无,用的最多的还是 SR 模型来做数据处理。
-
关注的一点是实验中效率和准确性都比 SPOT 系列好。
公众号:AI蜗牛车
保持谦逊、保持自律、保持进步
个人微信
备注:昵称+学校/公司+方向
如果没有备注不拉群!
拉你进AI蜗牛车交流群

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐
所有评论(0)