18、如何识别数据中的异常值

Bojan Miletic在使用机器学习算法时询问了有关数据集中异常值检测的问题。这篇文章是对他的问题的回答。

离群值

许多机器学习算法对输入数据中属性值的范围和分布敏感。输入数据中的异常值可能会扭曲和误导机器学习算法的训练过程,从而导致更长的训练时间,更不准确的模型以及最终的较差结果。

image.png

异常值
由Robert S. Donovan拍摄,保留一些权利

即使在针对训练数据准备预测模型之前,异常值也可能导致误导性表示,进而导致对收集数据的误导性解释。异常值可以在描述性统计中偏离属性值的摘要分布,如平均值和标准差,以及直方图和散点图等图形,压缩数据体。

最后,异常值可以表示与问题相关的数据实例的示例,例如欺诈检测和计算机安全性中的异常。

异常值建模

异常值是极端值,远远超出其他观察值。例如,在正态分布中,异常值可以是分布尾部的值。

识别异常值的过程在数据挖掘和机器学习中有许多名称,例如异常值挖掘,异常值建模和新颖性检测以及异常检测。

在他的书 Outlier Analysis(会员链接)中,Aggarwal提供了一个有用的离群检测方法分类,如下:

  • 极值分析:确定数据底层分布的统计尾部。例如,统计方法,如单变量数据的z分数。
  • 概率和统计模型:从数据的概率模型中确定不太可能的实例。例如,使用期望最大化优化的高斯混合模型。
  • 线性模型:使用线性相关将数据建模到较低维度的投影方法。例如,主成分分析和具有大残差的数据可能是异常值。
  • 基于邻近度的模型:与群集,密度或最近邻分析确定的数据质量隔离的数据实例。
  • 信息理论模型:异常值被检测为数据实例,增加了数据集的复杂性(最小代码长度)。
  • 高维异常值检测:搜索子空间异常值的方法可以在更高维度(维数灾难)中分解基于距离的度量。

Aggarwal评论说,异常模型的可解释性至关重要。对于特定数据实例为何或不是异常值的决策,需要上下文或基本原理。

在他的数据挖掘和知识发现手册(会员链接)的贡献章节中 ,Irad Ben-Gal提出了异常模型的分类,如单变量或多变量,参数和非参数。这是基于已知数据来构造方法的有用方法。例如:

  • 您是否考虑过一个或多个属性中的异常值(单变量或多变量方法)?
  • 您能否假设一个统计分布,从中采集或不采样(参数或非参数)?

入门

有许多方法和很多研究都用于异常检测。首先进行一些假设和设计实验,您可以清楚地观察这些假设对某些性能或准确度测量的影响。

我建议通过极值分析,接近方法和投影方法的步进过程。

极值分析

您无需了解高级统计方法即可查找,分析和过滤数据中的异常值。通过极值分析开始简单。

  • 专注于单变量方法
  • 使用散点图,直方图和框和胡须图可视化数据并查找极值
  • 假设分布(高斯分布)并寻找与平均值相比超过2或3个标准差的值或从第一个或第三个四分位数开始的1.5倍的值
  • 从训练数据集中筛选出异常值候选者并评估您的模型性能

接近方法

一旦探索了更简单的极值方法,请考虑转向基于邻近度的方法。

  • 使用聚类方法识别数据中的自然聚类(例如k均值算法)
  • 识别并标记聚类质心
  • 识别与集群质心具有固定距离或百分比距离的数据实例
  • 从训练数据集中筛选出异常值候选者并评估您的模型性能

投影方法

投影方法应用起来相对简单,并且可以快速突出显示无关的值。

  • 使用投影方法将数据汇总为两个维度(例如PCA,SOM或Sammon的映射)
  • 可视化映射并手动识别异常值
  • 使用来自投影值或码本向量的邻近度量来识别异常值
  • 从训练数据集中筛选出异常值候选者并评估您的模型性能

方法鲁棒于异常值

另一种策略是转向对异常值具有鲁棒性的模型。有强大的回归形式可以最小化中位数最小二乘误差而不是均值(所谓的稳健回归),但计算量更大。还有一些方法,如决策树,对异常值很强。

您可以检查一些对异常值有效的方法。如果存在显着的模型准确性优势,则可能有机会对训练数据中的异常值进行建模和过滤。

资源

有很多网页讨论异常值检测,但我建议阅读一本关于这个主题的好书,更具权威性。即使查看机器学习和数据挖掘的入门书籍也不会对您有用。有关统计学家对异常值的经典处理,请查看:

  • Rousseeuw和Leroy于2003年发布了鲁棒回归和异常值检测(联盟链接)
  • Barnett和Lewis于1994年出版的统计数据(附属链接)中的异常值
  • 霍金斯出版于1980年的专着中识别异常值(会员链接)

你可能感兴趣的:(18、如何识别数据中的异常值)