【机器学习】机器学习中的缺失值及其填充处理

CS-ArtificialInteligence 专栏收录该内容
7 篇文章 0 订阅

大多数机器学习算法不允许目标值或特征数组中存在缺失值。因此,不能简单的忽略数据中的缺失值,而是要在数据预处理阶段解决这个问题。

最简单的解决方法是删除所有含其缺失值的观察值,用Numpy或Pandas很容易实现。

即便如此,删除带缺失值的观察值也是一件令人心痛的决定,因为这样做会让算法丢失那些观察值中那些非缺失值的信息,所以删除观察值只能作为最终别无他法时不得已的选择。

还有一点很重要,删除观察值可能会在数据中引入偏差,这主要由缺失值的成因决定。

缺失值一共有三种类型:

  • 完全随机缺失(MCAR)
    数据缺失的可能性与任何其他东西无关。
    例如,某个接受问卷调查的人会在回答问题前先掷一个骰子,如果掷出了6,那她就跳过那个问题不做回答。
  • 随机缺失(MAR)
    数据缺失的可能性不是完全随机的,与已经存在的其他特征有关。
    例如,在一次问卷调查中会问及性别和薪资水平,那么接受调查的女性更可能会跳过薪资的问题,但她们选择是否作答要看我们是否已经得知其性别信息。
  • 完全非随机缺失(MNAR)
    数据缺失的可能性完全是非随机的,并且与未在特征中反映出的信息有关。
    例如,一个问卷调查中会问及薪资水平,那么接受问卷调查的女性更可能会跳过薪资的问题,但是我们的数据中没有关于性别的特征。

如果观察值是MCAR或者MAR,那么有时候删除它们是可以接受的。
如果它们是MNAR,那么数据缺失本身其实就是一个信息。删除MNAR观察值会导致数据产生偏差,因为这些观察值是由未观察到的系统效应产生的。

接下来说说缺失值的填充处理策略,主要有两种,各有利弊。

首先,可以使用机器学习来预测缺失值。为了达到目的,可以将带有缺失值的特征当作一个目标向量,然后使用剩余的特征来预测缺失值。虽然可以使用各种机器学习算法来做预测,但是流行的选择是KNN,作为一种机器学习算法,KNN使用k个最临近的观察值(根据某种距离度量算法计算得到)来预测缺失值。KNN的不足是,为了知道哪些观察值距离缺失值最近,需要计算每一个观察值与缺失值之间的距离。对于小数据集,这样处理没有问题,但是如果数据集中有成千上万的观察值,计算量将成为一个很严重的问题。

一个比较容易扩展到大数据集的方案是使用平均值来代替缺失值。尽管这样做的效果没有使用KNN来得好,但是“平均值填充策略”很容易扩展到包含成千上万观察值的大数据集。

最后说一下,如果要采用填充策略,最好是创建一个二元特征来表明该观察值是否包含填充值。

展开阅读全文
  • 1
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
©️2020 CSDN 皮肤主题: 代码科技 设计师:Amelia_0503 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值