R中随机森林的并行执行

我在R平行运行随机森林

library(doMC)
registerDoMC()
x <- matrix(runif(500), 100)
y <- gl(2, 50)

并行执行(耗时73秒)

rf <- foreach(ntree=rep(25000, 6), .combine=combine, .packages='randomForest') %dopar%
randomForest(x, y, ntree=ntree) 

顺序执行(花了82秒)

rf <- foreach(ntree=rep(25000, 6), .combine=combine) %do%
randomForest(x, y, ntree=ntree) 

在并行执行中,树生成速度非常快,如3-7秒,但是其余时间在结合结果(组合选项)中消耗。所以,它唯一值得运行并行执行的是树木的数量真的很高。有什么办法可以调整“组合”选项,以避免在我不需要的每个节点上进行任何计算,并使其更快

PS。以上只是数据的一个例子。实际上,我有大约100万个观测的功能。

将.multicombine设置为TRUE可能会产生重大差异:

rf <- foreach(ntree=rep(25000, 6), .combine=combine, .multicombine=TRUE,
              .packages='randomForest') %dopar% {
    randomForest(x, y, ntree=ntree)
}

这导致组合被称为一次而不是五次。在我的台式机上,这个运行在8秒钟,而不是19秒。

http://stackoverflow.com/questions/14106010/parallel-execution-of-random-forest-in-r

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:R中随机森林的并行执行