时间序列异常检测论文阅读汇总
《Time-Series Anomaly Detection Service at Microsoft》SR方法 KDD 2019 微软
文章中有提到Holt winters以及Spot算法(极值理论)的利弊,称Holt winters对非季节性/周期性的时序的效果不好,
Spot则相反,对于季节性/周期性的时序效果不行。言下之意就是SR在三者上的效果都是非常好的,更加通用。
其中设计时序分类,关于非平稳序列的定义
同时文章提到工业界需要的异常检测算法需要满足:无监督、准确、高效、通用。(不过,可能有些企业可以也愿意打标签使用有监督的算法😂,比如美团?)
提到两个无监督算法Luminol [1] and DONUT [23]说问题在于要么需要大量时间要么对参数敏感(不过这个应该指训练吧,如果是训练的话,时间倒还好,但是这里很可能是因为需要部署到海量的时序上,因此训练时间过长也是不可接受的,那这样其实可以看看最新的裴丹团队的异常检测模型迁移的文章-CTF: Anomaly Detection in High-Dimensional Time Series with Coarse-to-Fine Model Transfer)
这篇文章提到SR+CNN,因为SR处理后的时序的异常就非常明显了,因此相当于给CNN提供了一个伪标签,没有使用任何真实标签,保持了算法的无监督的特点。
在具体实现细节方面,SR提供了比较详细的说明,以及如何应对实时化的改进,应该相当于需要实时的进行FFT(关于FFT相关介绍博客),提到了填充点的操作,可能有参考价值。
对于开源代码方面,在之前论文的基础上,后续又有了一项更新,主要是添加了一个有上下界限的模式,然后这个东西好像是为了给Azure Machine Learning designer使用的。不过之前我们也思考过一个问题就是如何给SR添加上下界限,这个确实值得看看源码的实现。
《RobustSTL: A Robust Seasonal-Trend Decomposition Algorithm for Long Time Series》AAAI 2019 阿里达摩院
这片文章介绍了一个改进版本的STL算法,不过我发现突然发现,作为异常检测,我只需要将残差项剥离出来即可,不需要周期项和趋势项的分离,因此这个想通了的话,我一直思考的如何进行STL的Online版本也就相对好实现了。不过好像也没有我想的那么简单啦,再看RobustSTL如果后续操作真的都对残差项没影响了,也不太可能。
参考IBM的实时分解算法:Real-Time Decomposition of Time Series
Detecting Anomalies in Seasonal Data
其实都谈不上实时,真的分解的时候的延时还是很大的
搜索过程中遇到几篇Stream Time Series的论文