异常检测—算法篇

异常检测方法

异常点检测(Outlier detection),又称为离群点检测,是找出与预期对象的行为差异较大的对象的一个检测过程。这些被检测出的对象被称为异常点或者离群点。异常点检测在生产生活中有着广泛应用,比如信用卡反欺诈、工业损毁检测、广告点击反作弊等。

根据不同异常检测问题分类:

  1. 时间序列法:移动平均,同比和环比,时序指标异常检测(STL+GESD)
  2. 统计法: 单特征且符合高斯分布,多个不相关特征且均符合高斯分布,多个特征相关且符合多元高斯分布
  3. 距离法:基于角度的异常点检测,基于KNN的异常点检测
  4. 线性方法:矩阵分解和PCA降维

本文主要介绍时间序列异常检测的具体实施流程:
将这类异常检测作为二分类问题来处理,按照机器学习流程分为四个阶段:预处理,特征提取,模型训练和最后的异常检测。
异常检测—算法篇_第1张图片
预处理:
在预处理过程中,我们首先面对的一个挑战是样本极度不平衡,这也是异常检测问题的主要特点。如图所示,在本次竞赛中,异常样本比例只有2%,远远低于正常样本。
如何避免呢,常用的有两种方式来使得不同类别样本比例相对平衡

  1. 下采样:
    对训练集里面样本数量较多的类别(多数类)进行欠采样,抛弃一些样本来缓解类不平衡。
  2. 过采样:
    对训练集里面样本数量较少的类别(少数类)进行过采样,合成新的样本来缓解类不平衡。
    这个时候会用到一个非常经典的过采样算法SMOTE
    SMOTE全称是Synthetic Minority Oversampling Technique即合成少数类过采样技术,具体思想是:对少数类样本进行分析并根据少数类样本人工合成新样本添加到数据集中。
    通过采用过采样得到的结果相对会较好。
    异常检测—算法篇_第2张图片
    起始端的异常样本点价值是远远大于后续样本的,因此我们需要增强该类样本的权重以提升其价值。结合前面提到的样本均衡策略,样本权重增强也是通过过采样来实现的。
    因此,过采样以及起始端异常点样本权重增强是预处理阶段的第二个关键点。

特征提取
异常检测—算法篇_第3张图片
异常往往意味着某个维度上的突变,可能是原始值的突变,也可能是均值、方差等统计量的突变,通过前后对比能够很好的捕捉到这类变化。

考虑到这些特点,我们通过三种方式来获取特征:

第一类,通过滑动窗口,提取该窗口类数据的统计特征

第二类,通过序列前后值的对比,得到对比特征

第三类,结合滑动窗口和对比,得到比统计特征

上图示意了,在T时刻,通过三种方式获取T时刻对应的不同特征。
异常检测—算法篇_第4张图片
统计特征方面,我们主要使用了均值、方差和分位数等

对比特征方面,使用了差分和变化比例这两种对比方式,差分代表了绝对变化,变化比例则是相对值。需要注意的是,变化比例在原始数据接近0时很容易出现畸变,所以某些场景下不是太好用。

另外我们选择了不同的窗口宽度来进行特征提取,所以总的特征集是窗口宽度、统计特征、对比特征的交叉组合。

上图右侧是特征提取的一个例子,将原始数据转换到方差差分特征空间后,异常样本的辨识度明显提升,这也利于后续模型训练和识别。

模型训练
异常检测—算法篇_第5张图片
三种模型:

第一个是IsolationForest,这是一种常用的异常检测模型,但由于它对局部异常不敏感,在这个问题上表现欠佳

第二个是随机森林,作为一种集成模型,总体表现很稳定,泛化能力也不错,实测结果略低于DNN

第二个是深度学习模型,主要考虑到模型有足够的表达能力,能适应大数据,泛化能力强。

参考
https://blog.csdn.net/b0Q8cpra539haFS7/article/details/90439737
https://mp.weixin.qq.com/s/okKnaqJVV7bfS1_iUtdIWg

你可能感兴趣的:(运维算法检测)