干货 :时间序列异常检测

异常检测( )是目前时序数据分析最成熟的应用之一 , 定义是从正常的时间序列中识别不正常的事件或行为的过程 。有效的异常检测被广泛用于现实世界的很多领域 , 例如量化交易 , 网络安全检测、自动驾驶汽车和大型工业设备的日常维护 。以在轨航天器为例 , 由于航天器昂贵且系统复杂 , 未能检测到危险可能会导致严重甚至无法弥补的损害 。异常随时可能发展为严重故障 , 因此准确及时的异常检测可以提醒航天工程师尽早采取措施 。
一般而言 , 很多异常可以通过人工的方式来判断 。然而当业务组合复杂、时序规模变大后 , 依靠传统的人工和简单的同比环比等绝对值算法来判断就显得捉襟见肘了 。因此 , 在面对各种各样的工业级场景时 , 系统的了解时间序列异常检测方法尤为重要 。

干货 :时间序列异常检测

文章插图
01
异常类型概述
通常说的异常大致分为异常值、波动值、异常时间序列等几种情况:
02
异常检测方法
基于统计的异常检测
许多异常检测技术首先建立一个数据模型 。异常是那些同模型不能完美拟合的对象 。例如 , 数据分布模型可以通过估计概率分布的参数来创建 。如果一个对象不能很好地同该模型拟合 , 即如果它很可能不服从该分布 , 则它是一个异常 。如果模型是簇的集合 , 则异常是不显著属于任何簇的对象 。在使用回归模型时 , 异常是相对远离预测值的对象 。
由于异常和正常对象可以看作两个不同的类 , 因此可以使用分类方法来建立这两个类的模型 。当然 , 仅当某些对象存在类标号 , 使得我们可以构造训练数据集时才可以使用分类方法 。此外 , 异常相对稀少 , 在选择分类方法和评估度量是需要考虑这一因素 。
基于模型的方法又称为统计方法 , 主要通过拟合单个模型或多个模型来判断该点的概率 。
3σ-法则
(μ?3σ,μ+3σ)区间内的概率为99.74 。所以可以认为 , 当数据分布区间超过这个区间时 , 即可认为是异常数据 。
干货 :时间序列异常检测

文章插图
假设数据集由一个正太分布产生 , 该分布可以用 N(μ,σ)表示 , 其中 μ是序列的均值 , σ是序列的标准差 , 数据落在 (μ-3σ,μ+3σ) 之外的概率仅有0.27% , 落在(μ-4σ,μ+4σ)之外的区域的概率仅有0.01% , 可以根据对业务的理解和时序曲线 , 找到合适的K值用来作为不同级别的异常报警 。
箱型图(分位数异常检测)
箱型图 , 是一种用作显示一组数据分散情况资料的统计图 。主要用于反映原始数据分布的特征 , 还可以进行多组数据分布特征的比较 , 其绘制方法是:先找出一组数据的最大值、最小值、中位数和上下两个四分位数 。通过不同分位数来划分异常值和疑似异常值 。
干货 :时间序列异常检测

文章插图

干货 :时间序列异常检测

文章插图
IQR是第三四分位数减去第一四分位数 , 大于Q3+1.5*IQR之外的数和小于Q1-1.5*IQR的值被认为是异常值 。
测试
测试是一种从样本中找出的方法 , 所谓 , 是指样本中偏离平均值过远的数据 , 他们有可能是极端情况下的正常数据 , 也有可能是测量过程中的错误数据 。使用测试需要总体是正态分布的 。