博客园  :: 首页  :: 联系 :: 管理

异常值检测算法一:概述

Posted on 2020-10-23 16:00  天戈朱  阅读(1928)  评论(0编辑  收藏  举报

所谓异常检测就是发现与大部分对象不同的对象,也就是发现离群点。一般规定数据具有“正常”模型,而异常被认为是与这个正常模型的偏差。异常点在某些场景下反而令分析者感到极大兴趣,如疾病预测,通常健康人的身体指标在某些维度上是相似,如果一个人的身体指标出现了异常,那么他的身体情况在某些方面肯定发生了改变,当然这种改变并不一定是由疾病引起(通常被称为噪音点),但异常的发生和检测是疾病预测一个重要起始点。相似的场景也可以应用到信用欺诈,网络攻击等等。

应用领域

  • 网络入侵检测
  • 保险/信用卡诈骗检测
  • 保健信息获取/医疗诊断
  • 产业损坏检测
  • 图像处理/视频监控

主要挑战

  • 很难定义具有代表性的“正常”区域
  • 正常行为与异常行为之间的界限往往并不明确
  • 不同的应用领域对异常值的确切定义不同
  • 难以获取用于训练/验证的标记数据
  • 数据可能含有噪声
  • 正常行为并不是一成不变的,会不断发展变化 

异常检测方法 


 1、四分位箱型图

  • 这种方法是利用箱型图的四分位距(IQR)对异常值进行检测,也叫Tukey‘s test。
  • 四分位距(IQR)就是上四分位与下四分位的差值。而我们通过IQR的1.5倍为标准,规定:超过(上四分位+1.5倍IQR距离,或者下四分位-1.5倍IQR距离)的点为异常值。

 2、3∂原则

  • 这个原则有个条件:数据需要服从正态分布。
  • 在3∂原则下,观测值与平均值的差别如果超过3倍标准差,那么可以将其视为异常值。正负3∂的概率是99.7%,那么距离平均值3∂之外的值出现的概率为P(|x-u| > 3∂) <= 0.003,属于极个别的小概率事件。
  • 如果数据不服从正态分布,也可以用远离平均值的多少倍标准差来描述,多少倍的取值需要根据经验和实际情况来决定。 

 3、基于模型检测

  • 这种方法一般会构建一个概率分布模型,并计算对象符合该模型的概率,把具有低概率的对象视为异常点。如果模型是簇的集合,则异常是不显著属于任何簇的对象;如果模型是回归时,异常是相对远离预测值的对象。
  • 离群点的概率定义:离群点是一个对象,关于数据的概率分布模型,它具有低概率。这种情况的前提是必须知道数据集服从什么分布,如果估计错误就造成了重尾分布。
  • 比如特征工程中的RobustScaler方法,在做数据特征值缩放的时候,它会利用数据特征的分位数分布,将数据根据分位数划分为多段,只取中间段来做缩放,比如只取25%分位数到75%分位数的数据做缩放。这样减小了异常数据的影响。

   --- 优缺点:

  • (1)有坚实的统计学理论基础,当存在充分的数据和所用的检验类型的知识时,这些检验可能非常有效;
  • (2)对于多元数据,可用的选择少一些,并且对于高维数据,这些检测可能性很差。

4、基于近邻度的离群点检测

  • 统计方法是利用数据的分布来观察异常值,一些方法甚至需要一些分布条件,而在实际中数据的分布很难达到一些假设条件,在使用上有一定的局限性。
  • 确定数据集的有意义的邻近性度量比确定它的统计分布更容易。这种方法比统计学方法更一般、更容易使用,因为一个对象的离群点得分由到它的k-最近邻(KNN)的距离给定。
  • 需要注意的是:离群点得分对k的取值高度敏感。如果k太小,则少量的邻近离群点可能导致较低的离群点得分;如果K太大,则点数少于k的簇中所有的对象可能都成了离群点。为了使该方案对于k的选取更具有鲁棒性,可以使用k个最近邻的平均距离。

   --- 优缺点:

  • (1)简单;
  • (2)缺点:基于邻近度的方法需要O(m2)时间,大数据集不适用;
  • (3)该方法对参数的选择也是敏感的;
  • (4)不能处理具有不同密度区域的数据集,因为它使用全局阈值,不能考虑这种密度的变化。

 5、基于密度的离群点检测

  • 从基于密度的观点来说,离群点是在低密度区域中的对象。基于密度的离群点检测与基于邻近度的离群点检测密切相关,因为密度通常用邻近度定义。
  • 一种常用的定义密度的方法是,定义密度为到k个最近邻的平均距离的倒数。如果该距离小,则密度高,反之亦然。
  • 另一种密度定义是使用DBSCAN聚类算法使用的密度定义,即一个对象周围的密度等于该对象指定距离d内对象的个数。

   -- 优缺点:

  • (1)给出了对象是离群点的定量度量,并且即使数据具有不同的区域也能够很好的处理;
  • (2)与基于距离的方法一样,这些方法必然具有O(m2)的时间复杂度。对于低维数据使用特定的数据结构可以达到O(mlogm);
  • (3)参数选择是困难的。虽然LOF算法通过观察不同的k值,然后取得最大离群点得分来处理该问题,但是,仍然需要选择这些值的上下界。

6、基于聚类的方法来做异常点检测

  • 基于聚类的离群点:一个对象是基于聚类的离群点,如果该对象不强属于任何簇,那么该对象属于离群点。
  • 离群点对初始聚类的影响:如果通过聚类检测离群点,则由于离群点影响聚类,存在一个问题:结构是否有效。这也是k-means算法的缺点,对离群点敏感。为了处理该问题,可以使用如下方法:对象聚类,删除离群点,对象再次聚类(这个不能保证产生最优结果)

   -- 优缺点:

  • (1)基于线性和接近线性复杂度(k均值)的聚类技术来发现离群点可能是高度有效的;
  • (2)簇的定义通常是离群点的补,因此可能同时发现簇和离群点;
  • (3)产生的离群点集和它们的得分可能非常依赖所用的簇的个数和数据中离群点的存在性;
  • (4)聚类算法产生的簇的质量对该算法产生的离群点的质量影响非常大。

7、专门的离群点检测

  • One Class SVM
  • Isolation Forest

参考资料