数据分析学习总结笔记04:异常值处理

1 异常值概述

数据存在异常值、缺失值和重复值是数据清洗工作中主要可能遇到的三个问题。
异常值是数据中的极端的观测值,即在数据集中存在不合理的值,又称离群点
在统计学中异常值(outlier)定义为一组测定值中与平均值的偏差超过两倍标准差的测定值,与平均值的偏差超过三倍标准差的测定值,称为高度异常的异常值1
一批数据中的异常值值得关注,忽视异常值的存在是十分危险的,不加剔除地把异常值包括进数据的计算分析过程中,对结果会带来不良影响;重视异常值的出现,分析其产生的原因,常常成为发现问题进而改进决策的契机。
异常值示意图

  • 响应变量中的异常值:若标准化残差的绝对值大于2,对应的观测点称为异常点。
    标准化残差公式
  • 预测变量中的异常值:若第i个观测点的杠杆值hii大于2(p+1)/n,则称该观测点为高杠杆点。

如果删除一个观测点会导致拟合模型的实质性变化,即系数估计值、拟合值和检验值等发生较大变化,则称这个点为强影响点。

2 如何判断异常值

对于异常值的判断,通常使用的方法有很多种,本文主要介绍以下7种方法。

2.1 简单的统计分析

当我们拿到数据后可以对数据进行一个简单的描述性统计分析,譬如最大最小值可以用来判断这个变量的取值是否超过了合理的范围,不合常理的为异常值。比如,对成绩这个属性进行规约:成绩的区间在[0:100],如果样本中的成绩不在该区间范围内,则表示该值属于异常值。

2.2 3δ原则

  • 数据服从正态分布
    根据正态分布的定义可知,距离平均值3δ之外的概率为 P(|x-μ|>3δ) <= 0.003 ,这属于极小概率事件,在默认情况下我们可以认定,距离超过平均值3δ的样本是不存在的。 因此,当样本距离平均值大于3δ,则认定该样本为异常值。
    正态分布曲线面积
  • 数据不服从正态分布
    当数据不服从正态分布,可以通过远离平均距离多少倍的标准差来判定,多少倍的取值需要根据经验和实际情况来决定。

2.3 四分位数检验/箱型图分析

将所有数据按大小排序,找到其中上四分位数UQ(Q3)和下四分位数LQ(Q1),计算其差值IQR=UQ-LQ(中四分位范围,IQR,即内50%范围),所有在 [LQ-1.5IQR,UQ+1.5IQR] 范围之外的数据都可以判定为异常值。
将其形象化的方式就是通过绘制箱型图进行直观判定。箱形图(Box-plot)又称为盒须图、盒式图或箱线图,是一种用作显示一组数据分散情况资料的统计图。因形状如箱子而得名。它主要用于反映原始数据分布的特征,还可以进行多组数据分布特征的比较。
箱型图
箱形图的绘制依靠实际数据,不需要事先假定数据服从特定的分布形式,没有对数据作任何限制性要求,它只是真实直观地表现数据形状的本来面貌;另一方面,箱形图判断异常值的标准以四分位数和四分位距为基础,四分位数具有一定的耐抗性,多达25%的数据可以变得任意远而不会很大地扰动四分位数,所以异常值不能对这个标准施加影响,箱形图识别异常值的结果比较客观。由此可见,箱形图在识别异常值方面有一定的优越性。

2.4 格拉布斯检验

格拉布斯准则是以正态分布为前提的,理论上较严谨,使用也方便。
格拉布斯的测试一次检测到一个异常值。从数据集中删除该异常值,并且迭代测试直到没有检测到异常值。但是,多次迭代会改变检测概率,并且测试不应该用于六个或更少的样本大小(n>6),因为它经常将大多数点标记为异常值。
该方法具体可以详见该博主。

2.5 基于模型检测

具体操作就是先建立一个数据模型,异常是那些同模型不能完美拟合的对象;如果模型是簇的集合,则异常是不显著属于任何簇的对象;在使用回归模型时,异常是相对远离预测值的对象。

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

2.6 基于距离检测

通常可以在对象之间定义邻近性度量,异常对象是那些远离其他对象的对象。

  • 优点:简单便捷。
  • 缺点:首先,基于邻近度的方法需要O(m2)时间,大数据集不适用;其次,对参数的选择较为敏感;其三,同时不能处理具有不同密度区域的数据集,因为它使用全局阈值,不能考虑这种密度的变化。

2.7 基于密度检测

当一个点的局部密度显著低于它的大部分近邻时才将其分类为离群点。适合非均匀分布的数据。

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

3 如何处理异常值

异常值的处理方法常用有四种:

(1)删除含有异常值的记录,尤其需要剔除高度异常的异常值;

(2)将异常值视为缺失值,交给缺失值处理方法来处理;

(3)用平均值来修正;

(4)不处理。

需要强调的是,如何判定和处理异常值,需要结合实际。

相关笔记:

  1. Python相关实用技巧01:安装Python库超实用方法,轻松告别失败!
  2. Python相关实用技巧02:Python2和Python3的区别
  3. Python相关实用技巧03:14个对数据科学最有用的Python库
  4. Python相关实用技巧04:网络爬虫之Scrapy框架及案例分析
  5. Python相关实用技巧05:yield关键字的使用
  6. Scrapy爬虫小技巧01:轻松获取cookies
  7. Scrapy爬虫小技巧02:HTTP status code is not handled or not allowed的解决方法
  8. 数据分析学习总结笔记01:情感分析
  9. 数据分析学习总结笔记02:聚类分析及其R语言实现
  10. 数据分析学习总结笔记03:数据降维经典方法
  11. 数据分析学习总结笔记04:异常值处理
  12. 数据分析学习总结笔记05:缺失值分析及处理
  13. 数据分析学习总结笔记06:T检验的原理和步骤
  14. 数据分析学习总结笔记07:方差分析
  15. 数据分析学习总结笔记07:回归分析概述
  16. 数据分析学习总结笔记08:数据分类典型方法及其R语言实现
  17. 数据分析学习总结笔记09:文本分析
  18. 数据分析学习总结笔记10:网络分析

本文主要根据个人学习,并搜集部分网络上的优质资源总结而成,如有不足之处敬请谅解,欢迎批评指正、交流学习!


  1. 异常值-百度百科 ↩︎

  2. 数据清洗中异常值如何处理 ↩︎

发布了30 篇原创文章 · 获赞 0 · 访问量 550

猜你喜欢

转载自blog.csdn.net/weixin_41961559/article/details/105262138