前言
之前文章链接:
《探索性数据分析(1)—— 变量识别和分析》
《探索性数据分析(2)—— 缺失值处理》
1. 异常值(outlier)是什么?
异常值是什么:如下图中,收入平均是在0.8m左右,但是有两个为4m和4.2m,远远大于总体样本。
2. 异常值种类
异常值可以分成两种:单变量(Univariate) 和多变量(Multivariate)。
比如下图,两个箱型图分别表示体重和身高,图中均未显示有异常值;但是,在三点图中,我们有两个坐标,即可以看到在红色圆圈内有异常值。
3. 导致异常值的几种原因
无论什么时候遇到异常值,最好的解决方法就是找出它们出现的原因,然后对症下药。一般情况下,原因可以分成两大类:人为原因(Artificial (Error) / Non-natural) 和自然原因(Natural )
- 输入错误 Data Entry Errors: 可能人工输入时手误多打了一个0,使得客户的年收入从10万,变成了100万。
- 测量误差 Measurement Error: 这是最常见的异常值来源。比如有十个称重器,其中一个是坏的,那么用这个坏的称重器测出来的值就会明显异于其他正常的称重器。错误/坏的测量工具会导致异常值
- 实验误差Experimental Error: 例如:在一次有7名运动员参加的100米短跑中,有一位运动员没有集中精力完成“出发”,这导致他开始晚了。因此,这导致跑步者的跑步时间比其他跑步者多。他的总运行时间可能是一个例外。
- 有意离群值Intentional Outlier: 这通常在涉及敏感数据的自我报告方法中发现。例如:青少年通常会少报他们的饮酒量。其中只有一小部分会报告实际价值。在这里,实际值可能看起来像离群值,因为其余的孩子有意少报饮酒量。
- 处理错误 Data Processing Error: 当我们执行数据挖掘时,我们从多个来源提取数据。一些操作或提取错误可能会导致数据集中出现异常值。
- 抽样误差 Sampling error: 例如,我们要测量运动员的身高。我们错误地将一些篮球运动员包括在样本中。这种包含可能会导致数据集中出现异常值。
- 自然离群值Natural Outlier: 当离群值不是人为错误导致的,它就是自然离群值。例如: 我们在看人均收入时,富豪榜单上的人群收入水平远远高于普通人,这些数据没有任何错误,是自然离群点
4. 异常值的影响
- 增加误差方差,降低统计检验的能力
- 如果异常值是非随机分布的,则可以降低正态性
- 可能对具有实质性意义的估计产生偏见或影响
- 还会影响回归、方差分析和其他统计模型的基本假设。
下图展现了包含和不含异常值的例子,可以看到异常值对均值/中位数/众数/方差的影响。
5. 如何找出异常值
我们上面也有提到的几种方法:箱型图、直方图、散点图
其他的方法:
- 任何超出-1.5 x IQR到1.5 x IQR范围的值(四分位距(interquartile range, IQR)
- 任何超出第5和第95百分位范围的值都可以被认为是离群值
- 离均值三个或三个以上标准差的数据点被认为是离群值
- 基于业务理解或经验判断。
- 双变量和多变量异常值通常使用影响或杠杆或距离的指标来测量。马氏距离(Mahalanobis ’ distance)和库克指数(Cook ’ s D)等流行指数经常被用来检测异常值。
6. 如何剔除异常值
大部分情况下,异常值的处理方法和缺失值的类似
,删除、转换、替代、分类。==>缺失值方法链接
- 删除Deleting observations :如果是由于数据输入、处理过程中的错误引起的的异常情况,可以直接删除掉这些异常值。因为它们本来就是错误的、不该出现的数值。
- 转换Transforming : 比如用Log对数变换可以消除极值的影响,使得数据集更容易分析。
- 分组Binning 是另外一种形式的转换,可以在决策树算法中使用。
- 插补Imputing:首先,需要分析这是自然的异常值还是非自然异常值。如果是非自然的异常值,可以继续用插补,和缺失值的方法一样,这里也可以用预测模型。
- 如果异常值很多,可以直接将它们区别对待。一种方法是将两组数据(异常值和正常值)独立建模,最后将两者的结果合并起来
参考资料:
A Comprehensive Guide to Data Exploration
有任何翻译错误或内容补充,欢迎大家在评论区留言指出,欢迎一起讨论~