在 R 中并行化随机森林学习改变了 RF 对象的类别

问题描述

我正在 R 中使用函数 randomForest::randomForest() 来学习我的 RF。

首先,我在没有并行化的情况下学习了它们,并获得了一个基本上是一个列表的 RF 对象(当我学习部分绘图等时,我工作得很好)

rf_full <-
randomForest::randomForest(sr ~ Lat + Long + AREA + Date + polypoint_ratio + time_span,data = atlas_cart_data,ntree = 500,mtry = 2,nodesize = 5,keep.forest = T)

但后来我意识到这花了太长时间。所以我将脚本与 foreach 包并行化,如下所示:

#Try to parallelize
cl <- makeCluster(detectCores()-1)
registerDoParallel(cl)

## Learn the RF
rf_full <-
  foreach(ntree = rep(500/length(cl),length(cl)),.combine = randomForest::combine,.multicombine = T,.packages = "randomForest") %dopar% {

            randomForest::randomForest(sr ~ Lat + Long + AREA + Date + polypoint_ratio + time_span,ntree = ntree,keep.forest = T)

          }

stopImplicitCluster()
stopCluster(cl)
rm(cl)

问题:现在,输出属于 Large randomForest.formula (16 elements) 类并且生成部分图似乎太长了,而之前它非常快。

请注意,这两种方法的指标(R²、MSE...)是相同的。因此,我真的认为这是 RF 的等级问题,而不是它的质量。

有人已经体验过了吗?您知道如何从 Large randomForest.formula 大幅减少部分图的生成时间吗?或者如何从并行学习中得到前一个输出

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)