数据预处理常用技巧 | 数据分析中如何处理缺失值?(文末福利)

无论是数据分析、数据挖掘,还是机器学习,都离不开数据预处理这一重要步骤。没有高质量的数据,就没有高质量的分析结果。而数据不完整,也就是数据中包含缺失值,正是数据分析工作者最常见的问题之一。本文我们就来谈一下缺失值的处理。

一、缺失值类型

·完全随机缺失(Missing Completely At Random,MCAR)

例如,测量室温的温度传感器发送的数据有一定的概率损坏(不依赖于任何变量)。

·随机缺失(Missing At Random,MAR)

例如,测量室温的温度传感器所发送的数据,湿度越高,其损坏的概率也越高(温度变量的缺失依赖于湿度变量)。

·非随机缺失(Missing Not At Random,MNAR)

例如,测量室温的温度传感器所发送的数据在温度超过40度时损坏(温度变量的缺失依赖于其本身)

二、缺失值处理

1

删除

最简单粗暴的方法,即将带缺失值的记录数据整个删除。

但是,这样做可能会删除有价值的数据。

在MAR和MNAR中,原始数据中具有特定特征的数据会被删除,我们将无法掌握数据的整体特征。

2

填充

基于合适的策略用一定的值填充空值,从而使数据完备。经常使用的填充方法有如下几种。

1)用常数填充

指定任意值作为缺失值的填充值。

这会使指定的常数数据大量增加,导致数据的方差(变异程度)比真实方差小得多等问题。

在缺失值较多时,不推荐。

2)用聚合值填充

计算非缺失值的平均值、中位数、最小值、最大值等,将其作为填充值。

例如,在缺少部分人员的身高数据时,用身高值的中位数进行填充。

缺点同1)。

3)用基于无缺失值的数据的预测值填充

根据无缺失值的(一个或多个)列的值与有部分缺失值的列的值的关系,预测缺失值并填充。

预测可以通过机器学习模型等进行。

例如,在缺少部分人员的身高数据时,可以分析体重与身高的关系,根据体重预测缺失的身高值并填充。

4)基于时序关系进行填充

根据缺失值前后的数据预测缺失值并填充,即3)的时序数据版。

例如,当10:01的温度数据缺失时,可使用10:00和10:02的温度数据的均值进行填充。

如果是以时间上连续的值为对象,则该方法在MCAR和MAR中均有效。

5)多重插补法

在MACR以外的情况下,用特定的值进行填充会产生副作用,即产生偏差。

这时可以使用多重插补法,将填充好的数据集分成多份并对不同的数据集进行分析,然后对得到的多个结果进行整合,即可得到偏差较小的结果。

该方法在MCAR和MAR中均有效。

6)最大似然法

用于解决填充后的数据比原始数据变异程度小的问题。

不是用机器学习模型预测缺失值,而是通过引入隐变量,采用EM算法(填充的结果数据服从多元正态分布)最大化似然概率,从而估计缺失值。

该方法在MCAR和MAR中均有效。

3

不处理

不处理缺失值,直接在包含空值的数据上进行分析(不属于预处理的内容,本文略)。

下面,我们结合实例,分别基于R、Python、SQL,来看一下删除和填充的方法。

例1 删除缺失记录

目标数据集是thickness值存在缺失的生产记录,请删除缺失thickness值的记录(图1)

图1 删除缺失记录▲

左右滑动查看基于Python、SQL的处理方法▲

例2 用常数填充

目标数据集是 thickness 值存在缺失的生产记录数据,请用数值1填充缺失的 thickness值(图2)。

图2 用常数填充▲

左右滑动查看基于Python、SQL的处理方法▲

例3 用均值填充

目标数据集是 thickness 值存在缺失的生产记录,请用未缺失的 thickness 的平均值填充缺失的 thickness 值(图3)。

图3 用均值填充▲

左右滑动查看基于Python、SQL的处理方法▲

例4 用PMM实现多重插补

目标数据集是thickness值存在缺失的生产记录数据,请用多重插补法填充缺失的thickness值。多重插补法分为几种,这里使用PMM(Predictive Mean Matching,预测均值匹配)方法。

简单来说,PMM的步骤如下所示。

1.使用去除缺失数据后的数据构建用于预测缺失数据的回归模型

2.计算构建的回归模型的系数和误差方差的分布

3.根据系数和误差方差的分布生成新的系数和误差方差

4.根据服从步骤3中生成的系数和误差方差的回归模型计算预测值

5.从无缺失的观测数据中选择离预测值最近的数据作为填充值

6.填充数据并构建新的回归模型,计算模型系数和误差方差的分布,然后返回步骤3

循环执行步骤3至步骤6,直到填充值的分布收敛为止。收敛后,如果获得了与指定数据集的数量相等的填充值,则结束(图4)。

图4 基于PMM的多重插补▲

左右滑动查看基于Python的处理方法▲

以上重点介绍了几种缺失值填充方式,需要注意的是,不同的问题适用的填充方式不同。但无论哪种填充方式,人为干涉缺失值都会或多或少地影响原始数据的信息系统,从而对分析结果造成影响。归根结底,数据填充是在陷入数据缺失而又必须进行分析的困境时使用的方法,一定要慎重选择。

——本文选自《数据预处理从入门到实战:基于SQL、R、Python》


4.9折开抢

日亚计算机类图书销量排行榜No1

数据行业新人入门必备图书

[日]本桥智光 著

陈涛 译

福 利 送 书

你在数据处理中遇到了哪些困难,是如何解决的?

文末告诉我们吧~

选出1位同学送出本书哦

3月8日 12:00公布名单

图 灵 社 群

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值