前言
时间序列异常检测的目的就是在时间序列中寻找不符合常见规律的异常点,无论是在学术界还是工业界这都是一个非常重要的问题。企业的运维场景中有海量的运维指标数据,如果单纯依靠人力来发现并定位异常,将是十分低效的,所以如果可以开发一个智能运维系统对于异常波动自动定位,将会提高运维效率。
算法原理
算法思想
现有的异常检测方法主要分为四类:
- 统计方法--通过历史同期的数据分布来确定当前数据的合理波动范围。例如,k-sigma方法。
- 预测方法--比较预测值与真实值的差异,超出阈值认为是异常点。
- 直接异常检测方法--有很多成熟算法,例如LOF,孤立森林,One-class SVM。
- 深度学习生成方法--对数据降维再升维重构,不能良好复原的点认为是异常点。例如GAN,VAE。
1.统计方法
基本思想是基于历史数据的统计,按照分位数或者阈值或者统计检验的方法来判断当前点是否异常。异常检测工具包(ADTK)是一个Python软件包,用于无监督/基于规则的时间序列异常检测。无需基于训练+测试范式,本方法具有极低的时间成本。基本思想是基于历史数据的统计,按照分位数或者阈值或者统计检验的方法来判断当前点是否异常。
实验效果:模型倾向于把过多的点识别成异常值点。
2.预测方法+机器学习
预测方法可以用来得到数据的趋势与周期性,利用预测方法与阈值可以进行异常检测;无监督的机器学习方法可以使