很多时候在处理数据时都会遇到数据缺失值的情况,面对数据缺失值,简单的方法可以是在连续型变量中填充中位数、平均数等,在离散型变量中填充众数。不过这些方法对原始数据的分布会造成影响,加大了数据集本身的偏差。

更有用的做法是利用模型学习数据集本身的结构,譬如K-means插值、混合高斯分布插值等,以下我们来介绍一种挺简单但很有用的方法:MissForest。

以下内容就直接简明扼要,有疑问欢迎在评论区讨论。

核心思路

利用已知的变量数据当作特征,将缺失值的变量当作标签。其中在标签中有数值的数据为训练集,缺失数据标签部分为测试集。然后通过随机森林预测去更新缺失值

基本算法

X是一个n*p的特征矩阵,γ是迭代次数;对缺失值做初始更新;(若连续型值可用中位数、平均数代替,离散可用众数代替)对X中的特征项根据缺失率从小到大进行排序,设为k。

收敛函数

收敛函数指迭代中缺失值的变化大小,如果收敛值随着迭代次数变小,则说明模型趋于稳定。

对于连续型变量:

对于离散型变量:

其中NA是在离散变量中的总的缺失值数量。

查看原文 >>
相关文章