异常值检测方法总结

一、Numeric outlier(数字异常值)/箱线图

算法介绍:数字异常值方法是一维特征空间中最简单的非参数异常值检测方法,异常值是通过IQR(InterQuartile Range)计算得的。

算法思想

其中$Q_1$:第一四分位数;$Q_3$:第三四分位数。

二、Z-score

算法介绍:Z-score是一维或低维特征空间中的参数异常检测方法。该技术假定数据是高斯分布,异常值是分布尾部的数据点,因此远离数据的平均值。

算法思想: 若$|Z_i|>Z_{thr}$($Z_{thr}$通常取3.0,即$3\sigma$原则),则为异常值。

三、DBSCAN(基于密度的聚类方法)

算法介绍:该技术基于DBSCAN聚类方法,DBSCAN是一维或多维特征空间中的非参数,基于密度的离群值检测方法。

算法思想:

在DBSCAN聚类技术中,所有数据点都被定义为核心点(Core Points)、边界点(Border Points)或噪声点(Noise Points)。

  • 核心点是在距离$\varepsilon$内至少具有最小包含点数(minPTs)的数据点;
  • 边界点是核心点的距离$\varepsilon$内邻近点,但包含的点数小于最小包含点数(minPTs);
  • 所有的其他数据点都是噪声点,也被标识为异常值;

四、Isolation Forest

(以上三种方法都在试图寻找数据的常规区域,然后将任何在此定义区域外的点都视为异常值。孤立森林则不同,它明确地隔离异常值。)

算法介绍:该方法是一维或多维特征空间中大数据集的非参数方法,其中的一个重要概念是孤立数。

算法思想:

孤立数是孤立数据点所需的拆分数。通过以下步骤确定此分割数:

  • 随机选择要分离的点“a”;
  • 选择在最小值和最大值之间的随机数据点“b”,并且与“a”不同;
  • 如果“b”的值低于“a”的值,则“b”的值变为新的下限;
  • 如果“b”的值大于“a”的值,则“b”的值变为新的上限;
  • 只要在上限和下限之间存在除“a”之外的数据点,就重复该过程;

与孤立非异常值相比,它需要更少的分裂来孤立异常值,即异常值与非异常点相比具有更低的孤立数。因此,如果数据点的孤立数低于阈值,则将数据点定义为异常值。

理解:

想象这样一个场景,我们用一个随机超平面对一个数据空间进行切割,切一次可以生成两个子空间(也可以想象用刀切蛋糕)。接下来,我们再继续随机选取超平面,来切割第一步得到的两个子空间,以此循环下去,直到每子空间里面只包含一个数据点为止。

直观上来看,我们可以发现,那些密度很高的簇要被切很多次才会停止切割,即每个点都单独存在于一个子空间内,但那些分布稀疏的点,大都很早就停到一个子空间内了。

五、其他方法

$3\sigma$原则:假设原数据服从某个分布(如高斯分布),然后计算$\mu$和$\sigma$,再计算$\mu\pm3\sigma$的区间,最后落在区间之外的数据点就被认为是异常值。