原标题:干货 :时间序列异常检测
异常检测(Anomaly detection)是目前时序数据分析最成熟的应用之一,定义是从正常的时间序列中识别不正常的事件或行为的过程。有效的异常检测被广泛用于现实世界的很多领域,例如量化交易,网络安全检测、自动驾驶汽车和大型工业设备的日常维护。以在轨航天器为例,由于航天器昂贵且系统复杂,未能检测到危险可能会导致严重甚至无法弥补的损害。异常随时可能发展为严重故障,因此准确及时的异常检测可以提醒航天工程师尽早采取措施。
一般而言,很多异常可以通过人工的方式来判断。然而当业务组合复杂、时序规模变大后,依靠传统的人工和简单的同比环比等绝对值算法来判断就显得捉襟见肘了。 因此,在面对各种各样的工业级场景时,系统的了解时间序列异常检测方法尤为重要。
01
异常类型概述
通常说的异常大致分为异常值、波动值、异常时间序列等几种情况:
异常值(Outlier)
给定输入时间序列 ,异常值是时间戳值其中观测值x_t与该时间序列的期望值E(x_t)不同。
波动点(Change Point)
给定输入时间序列
,波动点是指在某个时间t,其状态在这个时间序列上表现出与t前后的值不同的特性。
断层异常(Breakout)
时序系统中某一时刻的值比前一时刻的值陡增或者陡降很多,之后形态也发生了改变。
异常时间序列(Anomalous Time Series)
给定一组时间序列
, 异常时间序列是在X上与大多数时间序列值不一致的部分。
02
异常检测方法
基于统计的异常检测
许多异常检测技术首先建立一个数据模型。异常是那些同模型不能完美拟合的对象。例如,数据分布模型可以通过估计概率分布的参数来创建。如果一个对象不能很好地同该模型拟合,即如果它很可能不服从该分布,则它是一个异常。如果模型是簇的集合,则异常是不显著属于任何簇的对象。在使用回归模型时,异常是相对远离预测值的对象。
由于异常和正常对象可以看作两个不同的类,因此可以使用分类方法来建立这两个类的模型。当然,仅当某些对象存在类标号,使得我们可以构造训练数据集时才可以使用分类方法。此外,异常相对稀少,在选择分类方法和评估度量是需要考虑这一因素。
基于模型的方法又称为