R中随机林的并行执行

R中随机林的并行执行,r,parallel-processing,R,Parallel Processing,我并行运行R中的随机林 library(doMC) registerDoMC() x <- matrix(runif(500), 100) y <- gl(2, 50) 库(doMC) registerDoMC() 您是否知道该软件包可以为您进行大量并行运行(以及数据准备、摘要等)的手工操作 当然,最终,如果随机森林计算本身还剩下一些代价高昂的操作,那么你几乎无能为力,因为Andy花了好几年时间来改进它。我希望在采摘过程中几乎不会有低垂的果实……设置。多组合到TRUE可以产生显著的

我并行运行R中的随机林

library(doMC)
registerDoMC()
x <- matrix(runif(500), 100)
y <- gl(2, 50)
库(doMC)
registerDoMC()
您是否知道该软件包可以为您进行大量并行运行(以及数据准备、摘要等)的手工操作


当然,最终,如果随机森林计算本身还剩下一些代价高昂的操作,那么你几乎无能为力,因为Andy花了好几年时间来改进它。我希望在采摘过程中几乎不会有低垂的果实……

设置
。多组合
TRUE
可以产生显著的不同:

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

rf根据您的CPU,您可能会获得5%-30%的速度提升,选择作业数以匹配注册的内核数与系统逻辑内核数。(有时匹配系统物理核心的数量更有效)。
如果您有一台具有超线程(4个逻辑内核)的通用Intel双核笔记本电脑,那么DoMC可能注册了一个4个内核的集群。因此,当计算迭代5和6加上启动/停止两个额外作业的额外时间时,2个内核将空闲。如果只制作2-4个多树的作业,效率会更高。

我想知道该代码是否对您有帮助

它在他的数据集上运行速度快了6倍,内存消耗减少了16倍


还有一个并行实现。

H20包可以用来解决您的问题

根据H20页面,H2O是“开源的” 计算并行分布式数据的大数据数学引擎 机器学习算法,如广义线性模型, 梯度提升机、随机森林和神经网络 (深度学习)在各种集群环境中。”

使用H2O实现随机林:


.combine=combine最好是.combine=randomForest::combine因为还有dplyr::combine也会导致issuesHey@Steve Weston,你知道如何将此表单推广到源代码脚本中吗?我已经在R中跟踪了你几天的并行化问题,我很清楚,如果有人知道怎么做,那就是你。
rf <- foreach(ntree=rep(25000, 6), .combine=combine) %do%
randomForest(x, y, ntree=ntree) 
rf <- foreach(ntree=rep(25000, 6), .combine=randomForest::combine,
              .multicombine=TRUE, .packages='randomForest') %dopar% {
    randomForest(x, y, ntree=ntree)
}