关于missForest缺失值插补的变量使用及效率问题咨询
关于missForest变量使用与速度问题的解答
核心问题答案
当你执行mf_1 <- missForest(dtrain[c(10,11,9,3)])时,missForest只会使用你指定的这4个变量(对应dtrain的第10、11、9、3列)来完成缺失值插补,完全不会用到原数据集里的其他变量。这也是这次运行速度正常的核心原因——变量数量大幅减少,计算量直接降下来了。
为什么全量变量插补速度慢?
missForest的底层是随机森林算法,它的计算成本和输入变量的数量强相关:每一次迭代都要为每个有缺失值的变量训练多棵决策树,变量越多,每棵树需要评估的分割点就越多,整体计算量会呈指数级增长。你之前用全量变量时速度异常慢,大概率就是因为变量太多导致的。
优化全量数据插补速度的小技巧
如果需要用全量变量插补,你可以试试这些方法提速:
- 精简变量:先做相关性分析,去掉和缺失变量相关性极低的冗余变量,减少输入维度
- 调整参数:降低
ntree(默认100,比如调到50)或者maxiter(默认10,比如调到5),虽然会轻微影响插补精度,但能大幅提升速度 - 并行计算:利用
parallelize参数开启多核并行,比如mf_1 <- missForest(dtrain, parallelize = "forests"),充分利用CPU资源
内容的提问来源于stack exchange,提问作者Naï
相关产品推荐
相关产品推荐

