关于时序异常检测-动态基线原型系统的提升点的思考
关于动态基线原型系统实时处理的思考
实时处理的逻辑是来一个点,处理一个点,目前动态基线使用的是STL/EMD分解+3Sigma/四分数来进行异常检测,并且当前的运行逻辑是类似批处理的概念,前端传入一个文件,包含一批数据,然后对这一批数据进行分解+异常检测。
但如果使用改为流处理(实时处理)在异常检测方面的问题都不是很大,因为目前的3Sigma以及四分位数都已经使用上了流式的算法,一个是流式的均值计算,一个是流式的中位数(以及第一、三四分位数的计算)。
因此,主要的关键问题就在于时序分解的实时化处理,当然,目前有一个非常简单的实现方式便是:
当来一个点,结合之前的若干的点,比如1-2千个点,重新进行一下时序分解,来获取当前点的残差项,季节项以及趋势项,然后进行后续的异常检测,这里会存在稍微多一些的重复分解计算的工作。同时,工程上,可以有一个专门的缓存数组,来动态更新需要重复利用的那1-2千个点。
关于动态基线原型系统的判断时序数据是否有周期性的判定算法的调研
目前的动态基线原型系统是缺少对时序数据是否具有周期性的判定算法的,就不管是否真的具备周期性,都直接给ACF来获取该时序的周期,然后使用时序分解来进行分解。其实应该要有一个判定算法的。
不过说起来,本身航信提供的数据大多都是tps-average之类的有周期性的数据,这么想的话,确实也不完全需要周期性判断算法。
AIOps在美团的探索与实践——故障发现篇这篇博客里有提到美团关于如何进行时序分类的,详见其中的3.2 时序数据自动分类,同时,这里还有提到3.3 周期型指标异常检测,使用了类似学徒系统的有监督算法,当然也会有各种各样的问题,因此在3.3.5 特殊场景优化有专门的特殊的优化方式。
关于工业界目前前沿落地的其他时序异常检测算法
美团
阿里云
- 日志服务机器学习功能
- SLS机器学习最佳实战:时序异常检测和报警
- 流式统计算法异常检测
- 流式图算法异常检测
- https://petecheng.github.io 一个浙大的同学,时序人公众号的作者,主要做的也是时序异常检测