序
RF中有相应的缺失值处理方法,本次记录其两种缺失值处理技巧
暴力填补
Python中的na.roughfix
包提供简单的缺失值填补策略:
对于训练集中处于同一个类别下的数据,如果是类别变量缺失,则用众数补全,如果是连续变量,则用中位数。
相似度矩阵填补
RF的Python实现中,有一个rfImpute
包,可以提供更加高层的缺失值填补。
- 首先先用暴力填补法进行粗粒度填充。
- 然后使用上述填补后的训练集来训练随机森林模型,并统计相似度矩阵(proximity matrix),然后再看之前缺失值的地方,如果是分类变量,则用没有缺失的观测实例的相似度中的权重进行投票;如果是连续性变量,则用相似度矩阵进行加权求均值。
- 上述投票方案迭代进行4~6次。
解释相似度矩阵:
相似度矩阵就是任意两个观测实例间的相似度矩阵,原理是如果两个观测实例落在同一棵树的相同节点次数越多,则这两个观测实例的相似度越高。
详细来说:
Proximity 用来衡量两个样本之间的相似性。原理就是如果两个样本落在树的同一个叶子节点的次数越多,则这两个样本的相似度越高。当一棵树生成后,让数据集通过这棵树,落在同一个叶子节点的”样本对(xi,xj)” proximity 值 P(i,j) 加 1 。所有的树生成之后,利用树的数量来归一化 proximity matrix。继而,我们得到缺失值所在样本的权重值,权重值相近的可以用于缺失值的填补参考。