数据的异常点检测算法

文章目录

  • 应用场景
  • Isolation Forest
  • Z-score、3σ准则
  • Numeric Outlier、Tukey箱型图法
  • 基于密度的方法、DBSCAN
  • 幂律分布
  • 回归相关
  • 数据的时序监控

应用场景

异常值在不同文献、不同场景中有其不同的定义,需要根据自己对异常值的定义及自己数据的分布选择合适的异常值检测方法。
异常检测与监控的应用场景多样,主要包括以下:

  • 时序数据的监控。监控数据在时间维度上的异常情况,这里需要考虑时序数据的特性,比如趋势和周期等。
  • 特征工程中的数据异常。数据预处理的好坏,很大程度上决定了模型分析结果的好坏。其中,异常值(outliers)检测是整个数据预处理过程中,十分重要的一环,它的存在可能对最终建立的模型的精度和泛化能力有较大的影响。当然检测方法也是多种多样。
  • AB测试中的数据异常。在计算转化率(随机变量服从0/1分布)时,个别的异常值不会影响AB测试的整体效果,但在计算人均订单数和人均pv数时,个别的极端值会对均值产生显著影响。
  • 其他场景中的异常检测和监控不一一列举。

Isolation Forest

孤立森林,独异森林(Isolation Forest,简称iForest):基于集成学习方法异常点检测
适用于连续数据(Continuous numerical data)的异常检测。

Z-score、3σ准则

Z-score是一维或低维特征空间中的参数异常检测方法。该技术假定数据是高斯分布,异常值是分布尾部的数据点,因此远离数据的平均值。距离的远近取决于使用公式计算的归一化数据点 z i z_{i} zi的设定阈值 z t h r z_{thr} zthr
z i = ( x i − μ ) / σ z_{i} = (x_{i} - \mu) / \sigma zi=(xiμ)/σ
z i > z t h r z_{i}>z_{thr} zi>zthr则认为是异常值。
还可以使用三倍于标准差之上的数据为异常值等规则。
3σ原则为:
数值分布在(μ-σ,μ+σ)中的概率为0.6826。
数值分布在(μ-2σ,μ+2σ)中的概率为0.9544
数值分布在(μ-3σ,μ+3σ)中的概率为0.9974
可以认为,X的取值几乎全部集中在(μ-3σ,μ+3σ)区间内,超出这个范围则被认为异常。
适用:高斯分布的数据。

Numeric Outlier、Tukey箱型图法

正态分布的参数μ和σ极易受到个别异常值的影响,从而影响判定的有效性,因此又产生了Tukey箱型图法。
数字异常值方法是一维特征空间中最简单的非参数异常值检测方法,异常值可以通过IQR(InterQuartile Range)计算得的。计算第一和第三四分位数(Q1、Q3),异常值是位于四分位数范围之外的数据点 x i x_{i} xi
数据的异常点检测算法_第1张图片

上图中IQR,即四分位间距Q3-Q1,(Q1, Q3)涵盖了数据分布最中间的50%的数据,具有稳健性。数据落在 (Q1-1.5IQR, Q3+1.5IQR) 范围内,则认为是正常值,在此范围之外的即为异常值。

基于密度的方法、DBSCAN

该技术基于DBSCAN聚类方法,DBSCAN是一维或多维特征空间中的非参数,基于密度的离群值检测方法。将数据点划分到cluster中,如果有点划分不到任何一个cluster中,则为异常点。
DBSCAN原理及实现
适用于任何形状,是一种基于密度的方法。

幂律分布

除了常见的正态分布,还有一种极其重要却极易被忽略的分布-幂律分布。在日常的数据分析中,订单数据和浏览数据常呈现近似幂律分布。
下图展现的是社交网络中用户数和用户粉丝数的关系,可以看出拥有200以上的粉丝的用户数占极少数,而拥有<100粉丝的用户数成百上千,这就是幂律分布的特点:少数群体占有着多数的资源。
数据的异常点检测算法_第2张图片
呈现幂律分布特点的数据可通过log转换使观测点近似其分布在一条直线上,方便后续分析和预测。

回归相关

在回归分析中,尤其是线性回归中,异常的数值也会对模型的拟合效果产生较大的影响。
数据的异常点检测算法_第3张图片
对图中7个数据点进行拟合,蓝色的回归曲线线受到右上方值的影响,偏向了它,拟合并不理想。检测回归中的异常,有效的方式是计算每个数据点的Cook距离。Cook距离表征了包含此观测点和剔除此观测点前后模型的拟合效果的差别,差别越大,此点对模型影响越大,可考虑删除,因为在一个稳健的模型中每个点对模型的影响都认为是均匀的。删除强影响点之后,橘色的曲线对大部分的点的拟合都比较满意。

数据的时序监控

还有一些其他的异常值检测方法。
One Class SVM算法:一分类向量机,非高斯分布
EllipticEnvelope:基于高斯概率密度的异常点检测
LocalOutlierFactor:(基于密度的局部异常因子)

参考:
https://blog.csdn.net/FlySky1991/article/details/80526257
https://zhuanlan.zhihu.com/p/65023844

你可能感兴趣的:(机器学习)