本文约7700字,建议阅读时间为15分钟。
异常检测算法综述
在数据处理与分析中,异常检测是一个重要的环节。其基于正态分布的3sigma准则,认为超过3sigma的数据为异常点。下面我们将对几种常用的异常检测算法进行详细的介绍。
图1:3sigma原则
Z-score
Z-score,即标准分数,是测量数据点和平均值之间的距离,用于衡量一个数据点的偏离程度。当把Z-score=3作为阈值去剔除异常点时,便相当于3sigma原则。
箱线图(Boxplot)
箱线图是基于四分位距(IQR)找异常点的方法。它通过绘制数据的最小值、一四分位数(Q1)、中位数(Q2)、三四分位数(Q3)以及最大值,来直观地展示数据的分布情况,并找出潜在的异常值。
Grubbs’Test
Grubbs’Test是一种假设检验的方法,常用于检验服从正态分布的单变量数据集中的单个异常值。该算法通过计算最小值/最大值与平均值的差距,找出可疑值,再求其z-score,如果大于Grubbs临界值,则判定为outlier。但该算法有一定的局限性,如只能检测单维度数据、无法精确输出正常区间等。
LOF(Local Outlier Factor)算法
LOF算法是基于密度的经典算法,通过给每个数据点都分配一个依赖于邻域密度的离群因子LOF,从而判断该数据点是否为离群点。它的好处在于可以量化每个数据点的异常程度。该算法首先计算数据点的局部相对密度,即点邻域内点的平均局部可达密度跟数据点的局部可达密度的比值。
SOS(Similarity-based Outlier Score)算法
SOS算法通过计算相异度矩阵和关联度矩阵,得出每个点的异常概率向量,从而识别出异常点。其核心思想是“把异常点从所有样本中孤立出来”。
孤立森林(Isolation Forest)算法
孤立森林算法通过随机超平面对数据空间进行切割,切割的次数可以反映数据的密度。那些密度高的簇需要多次切割才能孤立成单点,而分布稀疏的点则较早地停止切割。该算法通过观察样本在决策树上的路径长度来评估其异常分数。
PCA(Principal Component Analysis)
PCA在异常检测方面有两种思路:一是将数据映低维特征空间后查看每个数据点跟其它数据的偏差;二是将低维特征重新映射回原空间后看重构误差的大小。PCA能够根据原始数据的方差变化程度找出主要特征方向和偏离程度,从而判断异常点。
自编码器(AutoEncoder)
自编码器是一种非线性降维的方法。利用正常数据训练出来的自编码器能够将正常样本重建还原,但对于异常数据则无法较好地还原,导致还原误差较大。如果一个新样本的解码误差超出正常范围,则可视为异常数据。
One-Class SVM与SVDD
One-Class SVM和无监督学习的SVDD都是用于异常检测的算法。它们不需要标签信息,通过寻找一个超平面或超球体将正常样本圈出来,从而将异常样本识别为负样本。SVDD还期望最小化超球体的体积以最小化异常点数据的影响。
时间序列异常检测
对于单条时序数据的异常检测,可以通过预测曲线的残差序列进行建模,利用KSigma或者分位数等方法进行异常检测。具体流程包括预测时序曲线、计算残差、对残差序列建模以及利用阈值进行异常检测。
总结
以上是几种常用的异常检测算法及其原理介绍。每种算法都有其适用场景和局限性,因此在选择合适的算法时需要结合具体的数据特性和需求进行综合考虑。在实际应用中,可能还需要结合多种算法进行综合分析以提高异常检测的准确性和效率。异常检测方法概览如下:
参考资料
时序预测竞赛中的异常检测算法综述:
[1] 作者:鱼遇雨欲语与余,出处:知乎,链接:zhuanlan./p/336944097
数据分析师必备的异常检测知识:
[2] 作者:weixin_39974030,出处:CSDN,链接:blog./weixin_39974030/article/details/112569610
KNN(K Nearest Neighbors)异常检测算法详解:
[3] 作者:小伍哥聊风控,出处:知乎,链接:zhuanlan./p/501691799
接下来,我们还有更多关于异常检测算法的参考资料:
[4] 一文搞懂LOF算法(Python代码实现):
作者:东哥起飞,出处:知乎,链接:zhuanlan./p/448276009
[5] Nowak-Brzezińska, A., & Horyń, C. (2020). 对比LOF、COF和KMEANS算法的研处,
Procedia Computer Science, 176, 1420-1429.
[6] 基於連接異常因子分析(Connectivity-Based Outlier Factor)的学习笔记:
作者:刘智皓 (Chih-Hao Liu)
[7] SOS算法在异常检测中的应用:
作者:呼广跃,出处:知乎,链接:zhuanlan./p/34438518
[8] 孤立森林(Isolation Forest)异常检测算法剖析:
作者:风控大鱼,出处:知乎,链接:zhuanlan./p/74508141
以及更多实用型算法如...
[9] 至 [17] 等多种异常检测算法和技巧,涉及隔离森林、主成分分析、自编码器及单类SVM等。
以上算法均有详细解读和代码实现,可分别在知乎、CSDN博客以及相关技术文章中查阅。