use*_*306 28 parallel-processing r
我在R中并行运行随机森林
library(doMC)
registerDoMC()
x <- matrix(runif(500), 100)
y <- gl(2, 50)
Run Code Online (Sandbox Code Playgroud)
并行执行(耗时73秒)
rf <- foreach(ntree=rep(25000, 6), .combine=combine, .packages='randomForest') %dopar%
randomForest(x, y, ntree=ntree)
Run Code Online (Sandbox Code Playgroud)
顺序执行(耗时82秒)
rf <- foreach(ntree=rep(25000, 6), .combine=combine) %do%
randomForest(x, y, ntree=ntree)
Run Code Online (Sandbox Code Playgroud)
在并行执行中,树生成非常快,如3-7秒,但其余时间用于组合结果(组合选项).因此,它唯一值得运行并行执行的是树的数量真的很高.有什么方法可以调整"组合"选项,以避免在我不需要的每个节点上的任何计算,并使其更快
PS.以上只是数据的一个例子.实际上,对于大约100个观察,我有大约10万个特征.
Ste*_*ton 33
设置.multicombine为TRUE可以产生显着差异:
rf <- foreach(ntree=rep(25000, 6), .combine=randomForest::combine,
.multicombine=TRUE, .packages='randomForest') %dopar% {
randomForest(x, y, ntree=ntree)
}
Run Code Online (Sandbox Code Playgroud)
这导致combine被调用一次而不是五次.在我的桌面计算机上,它运行8秒而不是19秒.
小智 5
H20软件包可用于解决您的问题。
根据H20 文档页面,H2O是“用于大数据的开源数学引擎,可在各种集群环境中计算并行分布式机器学习算法,例如广义线性模型,梯度提升机,随机森林和神经网络(深度学习)。”
使用H2O的随机森林实现:
https://www.analyticsvidhya.com/blog/2016/05/h2o-data-table-build-models-large-data-sets/