【机器学习】机器学习中的缺失值及其填充处理
大多数机器学习算法不允许目标值或特征数组中存在缺失值。因此,不能简单的忽略数据中的缺失值,而是要在数据预处理阶段解决这个问题。
最简单的解决方法是删除所有含其缺失值的观察值,用Numpy或Pandas很容易实现。
即便如此,删除带缺失值的观察值也是一件令人心痛的决定,因为这样做会让算法丢失那些观察值中那些非缺失值的信息,所以删除观察值只能作为最终别无他法时不得已的选择。
还有一点很重要,删除观察值可能会在数据中引入偏差,这主要由缺失值的成因决定。
缺失值一共有三种类型:
- 完全随机缺失(MCAR)
数据缺失的可能性与任何其他东西无关。
例如,某个接受问卷调查的人会在回答问题前先掷一个骰子,如果掷出了6,那她就跳过那个问题不做回答。 - 随机缺失(MAR)
数据缺失的可能性不是完全随机的,与已经存在的其他特征有关。
例如,在一次问卷调查中会问及性别和薪资水平,那么接受调查的女性更可能会跳过薪资的问题,但她们选择是否作答要看我们是否已经得知其性别信息。 - 完全非随机缺失(MNAR)
数据缺失的可能性完全是非随机的,并且与未在特征中反映出的信息有关。
例如,一个问卷调查中会问及薪资水平,那么接受问卷调查的女性更可能会跳过薪资的问题,但是我们的数据中没有关于性别的特征。
如果观察值是MCAR或者MAR,那么有时候删除它们是可以接受的。
如果它们是MNAR,那么数据缺失本身其实就是一个信息。删除MNAR观察值会导致数据产生偏差,因为这些观察值是由未观察到的系统效应产生的。
接下来说说缺失值的填充处理策略,主要有两种,各有利弊。
首先,可以使用机器学习来预测缺失值。为了达到目的,可以将带有缺失值的特征当作一个目标向量,然后使用剩余的特征来预测缺失值。虽然可以使用各种机器学习算法来做预测,但是流行的选择是KNN,作为一种机器学习算法,KNN使用k个最临近的观察值(根据某种距离度量算法计算得到)来预测缺失值。KNN的不足是,为了知道哪些观察值距离缺失值最近,需要计算每一个观察值与缺失值之间的距离。对于小数据集,这样处理没有问题,但是如果数据集中有成千上万的观察值,计算量将成为一个很严重的问题。
一个比较容易扩展到大数据集的方案是使用平均值来代替缺失值。尽管这样做的效果没有使用KNN来得好,但是“平均值填充策略”很容易扩展到包含成千上万观察值的大数据集。
最后说一下,如果要采用填充策略,最好是创建一个二元特征来表明该观察值是否包含填充值。
总结
以上是生活随笔为你收集整理的【机器学习】机器学习中的缺失值及其填充处理的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 去重的Set解不出“斯诺登的密码”(洛谷
- 下一篇: 【计算机科学基础】图灵机原理概述