数据预处理之异常值处理

通常,我们倾向于在构建模型时忽略异常值,这不是一个明智的做法, 异常值使数据偏移并降低准确性,在此让我们进一步了解异常处理。

什么样的值是异常值?

异常值是分析师和数据科学家常用的术语,因为它需要密切注意,否则可能导致错误的估计。 简单来说,异常值是一个观察值,远远超出了样本中的整体模式。

我们举个例子,做客户分析,发现客户的年平均收入是80万美元。 但是,有两个客户的年收入是4美元和420万美元。 这两个客户的年收入明显不同于其他人,那这两个观察结果将被视为异常值。

异常值有哪些类型呢?

异常值有两种类型:单变量和多变量。 以上,我们讨论了单变量异常值的例子。 当我们看到单变量的分布时,可以找到这些异常值。 多变量异常值是n维空间中的异常值,必须通过多维度的分布。

Outlier_21.png

让我们以一个例子来理解这一点。 例如身高和体重之间的关系,我们对“身高”和“体重”有单变量和双变量分布。 看box plot,没有任何异常值(高于和低于1.5 * IQR,最常见的方法)。 现在看scatter plot,有两个值在一个特定的重量和身高的平均值以下。

什么会引起异常值呢?

每当我们遇到异常值时,处理这些异常值的理想方法就是找出引起这些异常值的原因。 处理它们的方法将取决于它们发生的原因, 异常值的原因可以分为两大类:

人为错误 自然错误

数据输入错误

人为错误(如数据收集,记录或输入过程中导致的错误)会导致数据中的异常值。 例如:客户的年收入是10万美元,但意外地,数据输入操作附加一个零。 现在的收入就是100万美元,是10倍。 显然,与其他人相比,这将是异常值。

测量误差

这是异常值最常见的来源。 当使用的测量仪器出现故障时,会引起这种情况。 例如:有10台称重机。 其中9个是正确的,1个是错误的。 故障机器上的人员测量重量将高于或低于组内其余人员。 在故障机器上测量的重量可能导致异常值。

实验误差

异常值的另一个原因是实验误差。 例如:在7名跑步者的100米冲刺中,有一名选手错过了跑的口令,让他开始延迟。 因此,这使得跑步者的跑步时间比其他跑步者要多, 总运行时间可能是一个异常值。

故意异常值

通常在自我报告的措施中涉及敏感数据。 例如:通常青少年报告酒量,只有其中一小部分报告实际价值,这里的实际值可能看起来像异常值,因为其余的青少年正在假值。

数据处理错误

无论何时执行数据挖掘,我们从多个来源提取数据。 某些操作或提取错误可能会导致数据集中的异常值。

抽样错误

例如,衡量运动员的身高,错误地在样品中包括几名篮球运动员。 这种包含可能会导致数据集中的异常值。

自然异常值

当异常值不是人为的(由于错误),它是一个自然的异常值。 例如:注意到其中一家著名的保险公司,前50名财务顾问的表现远远高于其他人。 令人惊讶的是,这不是由于任何错误。 因此,每当与顾问一起执行任何数据挖掘活动时,我们都会分别对待此细分。

异常值对数据集有什么影响呢?

异常值可以大幅度地改变数据分析和统计建模的结果。 数据集中异常值有很多不利影响:

增加了误差差异,并降低了统计测试的能力如果异常值是非随机分布的,则可以降低正态性可能影响具有实质意义的估计可能影响回归、方差分析等统计模型假设的基本假设。

为了深入了解,让我们举个例子来检查数据集中有和没有异常值的数据集会发生什么。

Outlier_31.png

从图可知,具有异常值的数据集具有不同的平均值和标准差。

如何检测异常值?

最常用的检测异常值的方法是可视化。使用各种可视化方法,如Box plot,Histogram,Scatter Plot(上图,我们已经使用了box plot和散点图进行可视化),一些分析师也有各种规则来检测异常值。其中一些是:

任何值超出-1.5 x IQR至1.5 x IQR的范围使用封顶方法。超出5%或95%的任何值都可以被认为是异常值距平均值三个或更多的标准差被认为是异常值异常值检测只是对有影响的数据点的数据进行检查的特殊情况,也取决于业务的了解通常使用影响力、杠杆指数或距离来衡量双变量和多变量异常值。如马哈拉诺比斯距离和库克距离(Mahalanobis’ distance and Cook’s D )等经常用于检测异常值。

如何处理异常值?

处理异常值的大多数方法类似于缺失值处理方法,删除观察值、转换、分组、估算或其他统计方法。 在这里,我们将讨论用于处理异常值的常用方法:

删除 

如果由于数据输入错误,异常值观察数据非常少,可删除异常值,也可以在两端修剪去除异常值。

变换合并值

变换变量也可以消除异常值,自然对数可以减少由极值引起的变化,分箱也是一种可变转型的形式, 决策树算法允许变量的合并也可很好地处理异常值,也可以使用向不同观察值分配权重。

Transformation_1.png

估算

就像估算缺失值一样,也可以估计异常值。 可以使用平均值,中值,mode估算方法。 在估算之前,应该首先分析是自然异常值还是人为的。 如果是人为的,可以用估算值来估算。 也可以使用统计模型来预测异常值观测值,而后用预测值估算它。

单独处理

如果有大量异常值,应该在统计模型中单独对待它们。 其中一个方法是将两组视为两个不同的组,并为两组建立个体模型,然后组合输出。


可下载资源

关于作者

Kaizong Ye拓端研究室(TRL)的研究员。在此对他对本文所作的贡献表示诚挚感谢,他在上海财经大学完成了统计学专业的硕士学位,专注人工智能领域。擅长Python.Matlab仿真、视觉处理、神经网络、数据分析。

本文借鉴了作者最近为《R语言数据分析挖掘必知必会 》课堂做的准备。

​非常感谢您阅读本文,如需帮助请联系我们!

 
QQ在线咨询
售前咨询热线
15121130882
售后咨询热线
0571-63341498

关注有关新文章的微信公众号


永远不要错过任何见解。当新文章发表时,我们会通过微信公众号向您推送。

技术干货

最新洞察

This will close in 0 seconds