干货 :时间序列异常检测( 三 )


3. 平均相对密度

干货 :时间序列异常检测

文章插图
基于聚类的方法
干货 :时间序列异常检测

文章插图
一种利用聚类检测离群点的方法是丢弃远离其他簇的小簇 。这种方法可以与任何聚类方法一起使用 , 但是需要最小簇大小和小簇与其他簇之间距离的國值 。通常 , 该过程可以简化为丢弃小于某个最小尺寸的所有簇 。这种方案对簇个数的选择高度敏感 。此外 , 使用这一方案 , 很难将离群点得分附加在对象上 。注意 , 把一组对像看作离群点 , 将离群点的概念从个体对象扩展到对象组 , 但是本质上没有任何改变 。
一种更系统的方法是 , 首先聚类所有对象 , 然后评估对象属于簇的程度 。对于基于原型的聚类 , 可以用对象到它的簇中心的距离来度量对象属于簇的程度 。更一般地 , 对于基于目标函数的聚类方法 , 可以使用该目标函數来评估对象属于任意簇的程度 。特殊情况下 , 如果删除一个对象导致该目标的显著改进 , 则我们可以将对象分类为离群点 。比如 , 对于K均值 , 脷除远离其相关簇中心的对象能够显著地改进簇的误差的平方和(SSE) 。总而言之 , 聚类创建数据的模型 , 而非异常扭曲模型 。
基于划分的方法
基于划分的方法用于异常检测 , 常常具有非常好的可解释性 , 同时也好操作 。最简单的划分方法就是阈值检测 , 其通过人为经验划定阈值 , 对数据进行异常判断 。
具体的 , 为了避免单点抖动产生的误报 , 需要将求取累积的窗口均值进行阈值判别 , 具体的累积就是通过窗口进行操作:
干货 :时间序列异常检测

文章插图
业务同学可以根据自己的接受范围对阈值进行分级设置 , 不同的阈值对应不同的操作
另一种更高级的基于划分的异常检测算法 , 是 ( )孤立森林 , 一个基于的快速异常检测方法 。其将时序中的数据点划分成树 , 深度越低 , 说明越容易被划分 , 即为离群点 。
干货 :时间序列异常检测

文章插图
图 | b和c的高度为3 , a的高度是2 , d的高度是1
基于线性的方法
PCA在做特征值分解之后得到的特征向量反应了原始数据方差变化程度的不同方向 , 特征值为数据在对应方向上的方差大小 。所以 , 最大特征值对应的特征向量为数据方差最大的方向 , 最小特征值对应的特征向量为数据方差最小的方向 。原始数据在不同方向上的方差变化反应了其内在特点 。如果单个数据样本跟整体数据样本表现出的特点不太一致 , 比如在某些方向上跟其它数据样本偏离较大 , 可能就表示该数据样本是一个异常点 。
基于非线性的方法
传统的维度下降依赖于线性方法 , 如 PCA , 找出高维数据中最大的方差的方向 。通过选择这些方向 , PCA 本质上刻画了包含了最终信息的方向 。所以我们可以找到一个较小的维度的数目来作为降维的结果 。然而 , PCA 方法的线性性使得特征维度类型的抽取上有很大限制 。近年来很多神经网络的方法被用于时间序列的异常检测 , 比如 , 通过引入神经网络天生的非线性性克服这些限制 。