多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# 如何识别数据中的异常值 > 原文: [https://machinelearningmastery.com/how-to-identify-outliers-in-your-data/](https://machinelearningmastery.com/how-to-identify-outliers-in-your-data/) Bojan Miletic在使用机器学习算法时询问了有关数据集中异常值检测的问题。这篇文章是对他的问题的回答。 如果您对机器学习有疑问,请注册时事通讯并回复电子邮件或使用[联系表格](http://machinelearningmastery.com/contact/ "Contact")并询问,我会回答您的问题,甚至可能将其变成博客文章。 ## 离群值 许多机器学习算法对输入数据中属性值的范围和分布敏感。输入数据中的异常值可能会扭曲和误导机器学习算法的训练过程,从而导致更长的训练时间,更不准确的模型以及最终的较差结果。 ![Outlier](https://img.kancloud.cn/13/37/13374688b09e234836be53f6149eed7c_300x225.jpg) 异常 摄影: [Robert S. Donovan](http://www.flickr.com/photos/booleansplit/8482641188/sizes/l/) ,保留一些权利 即使在针对训练数据准备预测模型之前,异常值也可能导致误导性表示,进而导致对收集数据的误导性解释。异常值可以在描述性统计中偏离属性值的摘要分布,如平均值和标准差,以及直方图和散点图等图形,压缩数据体。 最后,异常值可以表示与问题相关的数据实例的示例,例如欺诈检测和计算机安全性中的异常。 ## 异常值建模 异常值是极端值,远远超出其他观察值。例如,在正态分布中,异常值可以是分布尾部的值。 识别异常值的过程在数据挖掘和机器学习中有许多名称,例如异常值挖掘,异常值建模和新颖性检测以及异常检测。 在他的书[异常分析](http://www.amazon.com/dp/1461463955?tag=inspiredalgor-20)(联盟链接)中,Aggarwal提供了一个有用的离群检测方法分类,如下: * **极值分析**:确定数据底层分布的统计尾部。例如,统计方法,如单变量数据的z分数。 * **概率和统计模型**:从数据的概率模型中确定不太可能的实例。例如,使用期望最大化优化的高斯混合模型。 * **线性模型**:使用线性相关将数据建模到较低维度的投影方法。例如,主成分分析和具有大残差的数据可能是异常值。 * **基于邻近度的模型**:与群集,密度或最近邻分析确定的数据质量隔离的数据实例。 * **信息理论模型**:异常值被检测为数据实例,增加了数据集的复杂性(最小代码长度)。 * **高维异常值检测**:搜索子空间中异常值的方法可以在更高维度(维数的诅咒)中分解基于距离的度量。 Aggarwal评论说,异常模型的可解释性至关重要。对于特定数据实例为何或不是异常值的决策,需要上下文或基本原理。 在他对[数据挖掘和知识发现手册](http://www.amazon.com/dp/0387098224?tag=inspiredalgor-20)(会员链接)的贡献篇章中,Irad Ben-Gal提出了异常模型的分类,如单变量或多变量,参数和非参数。这是基于已知数据来构造方法的有用方法。例如: * 您是否考虑过一个或多个属性中的异常值(单变量或多变量方法)? * 您能否假设一个统计分布,从中采集或不采样(参数或非参数)? ## 入门 有许多方法和很多研究都用于异常检测。首先进行一些假设和设计实验,您可以清楚地观察这些假设对某些表现或准确度测量的影响。 我建议通过极值分析,接近方法和投影方法的步进过程。 ### 极值分析 您无需了解高级统计方法即可查找,分析和过滤数据中的异常值。通过极值分析开始简单。 * 专注于单变量方法 * 使用散点图,直方图和框和胡须图可视化数据并查找极值 * 假设分布(高斯分布)并寻找与平均值相比超过2或3个标准差的值或从第一个或第三个四分位数开始的1.5倍的值 * 从训练数据集中筛选出异常值候选者并评估您的模型表现 ### 接近方法 一旦探索了更简单的极值方法,请考虑转向基于邻近度的方法。 * 使用聚类方法识别数据中的自然聚类(例如k均值算法) * 识别并标记聚类质心 * 识别与集群质心具有固定距离或百分比距离的数据实例 * 从训练数据集中筛选出异常值候选者并评估您的模型表现 ### 投影方法 投影方法应用起来相对简单,并且可以快速突出显示无关的值。 * 使用投影方法将数据汇总为两个维度(例如PCA,SOM或Sammon的映射) * 可视化映射并手动识别异常值 * 使用来自投影值或码本向量的邻近度量来识别异常值 * 从训练数据集中筛选出异常值候选者并评估您的模型表现 ### 方法鲁棒于异常值 另一种策略是转向对异常值具有鲁棒性的模型。有强大的回归形式可以最小化中位数最小二乘误差而不是均值(所谓的稳健回归),但计算量更大。还有一些方法,如决策树,对异常值很强。 您可以检查一些对异常值有效的方法。如果存在显着的模型准确性优势,则可能有机会对训练数据中的异常值进行建模和过滤。 ## 资源 有很多网页讨论异常值检测,但我建议阅读一本关于这个主题的好书,更具权威性。即使查看机器学习和数据挖掘的入门书籍也不会对您有用。有关统计学家对异常值的经典处理,请查看: * [Rousseeuw和Leroy于2003年发布的鲁棒回归和异常检测](http://www.amazon.com/dp/0471488550?tag=inspiredalgor-20)(会员链接) * [Barnett和Lewis于1994年出版的统计数据](http://www.amazon.com/dp/0471930946?tag=inspiredalgor-20)(会员链接)中的异常值 * [异常值的识别](http://www.amazon.com/dp/041221900X?tag=inspiredalgor-20)(会员链接)霍金斯出版于1980年的专着 有关数据挖掘社区对异常值的现代处理,请参阅: * [异常分析](http://www.amazon.com/dp/1461463955?tag=inspiredalgor-20)(会员链接)由Aggarwal于2013年出版 * 第7章,Irad Ben-Gal在[数据挖掘与知识发现手册](http://www.amazon.com/dp/0387098224?tag=inspiredalgor-20)(会员链接)中编辑,由Maimon和Rokach编辑,于2010年出版