项目实训纪录(纪录3)

数据预处理中,对于不同的数据可以进行不同的处理方式。

对于缺失值

缺失值产生的三种机制

以教育程度(自变量/特征)和收入水平(因变量/结果)关系的调查数据为例,考察收入水平字段的缺失情况:

  • 完全随机缺失(Missing Completely At Random,MCAR):缺失的数据与自身和其它任何变量都没有关系
    • 与自身无关:不管收入高的人还是收入低的人,都有同样的缺失率或缺失可能性;而不是:收入高的人有更多的理由或原因缺失数据,或者反之
    • 与其它变量无关:不管教育程度高还是低,收入水平字段都有同等的缺失率。而不是:教育程度高的人有更大的可能性缺失收入水平数据,或者反之
    • 对于完全随机缺失值,可以把含有缺失数据的样本直接删除,不会影响结果估计的准确性,只会影响精确性。例如,在不缺失情况下,估计的回归系数为0.6,那么删除缺失值后,系数估计值应该仍在0.6附近,只是由于样本数变少,标准误会增大,从而置信区间变宽
    • 完全随机缺失是一种最理想的情况,然而实际中往往很难保证这一假定
  • 随机缺失(Missing At Random,MAR):缺失变量与自身无关,但与其它变量有关
    • 例如:如果收入字段的缺失与教育程度有关系(如教育程度高的人比教育程度低的人缺失的更多),但是与收入本身无关(高收入和低收入的人的缺失人数差不多),这种情况就是随机缺失
    • 当数据有缺失的时候,可以检查自变量相对于缺失的因变量的分布情况。例如年龄、性别等自变量的取值,与收入字段的缺失值之间的统计关系
  • 非随机缺失(missing not at random,MNAR):缺失与变量自身有关
    • 例如:如果发现收入高的人更倾向于不填数据,而收入低的人一般都不缺失,说明收入的缺失是与自身变量有关的
    • 这种情况比较棘手,相当于样本选择有偏(偏向于收入低的人),很可能对结果的可靠性造成不良影响

(1)缺失值的处理方法-删除法

(2)缺失值的处理方法-单变量插补

(3)缺失值的处理方法-多变量插补

(4)缺失值的处理方法-多重插补(Multiple Imputation)

  • 将缺失值所在的行删除,或者删除缺失值对应变量字段(如果该变量含有缺失值比例过大)
  • 可能产生的问题
    • 丢失被删除的样本或字段中隐藏的重要信息
    • 产生数据偏移,例如原本的正态分布变为非正态分布
  • 适用范围:样本数据量大且缺失值不多
  • 仅仅在缺失字段内部进行某些统计计算,将计算结果作为缺失值。这种方式不考虑其它字段对本缺失字段的影响。
  • 填补方法
    • 平均值填补:计算该字段的平均值作为缺失值的默认值。适合正态分布的数值型变量
    • 中位数填补:计算该字段的中位数作为缺失值的默认值,适合偏态分布的数值型变量
    • 众数填补:统计该字段中出现次数最多的取值,作为缺失值的默认值,适合文本型变量
    • 临近值填补:使用样本的前一个或后一个样本所对应字段值作为该样本的默认值
  • 可能产生的问题:
    • 扭曲目标变量的分布,可能错误判断了变量与变量之间的关系
  • 以缺失字段为结果(因变量),以其它字段为特征(自变量),建立机器学习模型,预测缺失字段的值
  • 填补方法:
    • K-近邻算法填补:对于需要填补缺失字段的样本,先利用欧氏距离找到其邻近的𝐾K个样本(计算距离时不计入缺失字段),再将这𝐾K个邻近的值进行加权平均进行填补
    • 随机森林填补:以待填补的缺失字段为目标,基于其它字段训练随机森林模型,用模型预测缺失字段的值
    • 迭代插补:
      • 如果有多个字段存在缺失值,则先选择其中1个字段作为结果𝑦y,其它字段作为特征𝑋X
      • 使用一个回归器来在不含缺失y值的样本上对(𝑋,𝑦)(X,y)进行拟合,然后使用这个回归器来预测缺失样本的y值
      • 该字段预测完成后,换到下一个缺失字段作为结果𝑦y,其它字段作为特征𝑋X,继续进行回归
      • 以迭代的方式对每个特征依次进行,重复若干轮,最后一轮的计算结果作为最终的填充结果
  • 多重填补方法分为三个步骤:
    • 插补:将不完整数据集缺失的观测行估算填充𝑀M次,这将生成𝑀M个完整的数据集。估算方法可以采用前述单变量插补或多变量插补,但更好的方法是采用马尔科夫链蒙特卡洛模拟(MCMC,Markov Chain Monte Carlo Simulation)
    • 分析:针对𝑀M个数据集分别使用统计方法(例如线性或广义线性模型)进行统计分析
    • 合并:对来自各个插补数据集的统计分析结果,根据评分函数进行选择,产生最终的插补值
  • R语言的mice包提供了经典的多重插补实现,Python提供了miceforest包进行处理。本演练不包括多重插补的内容
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值