首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R中随机森林的并行执行

R中随机森林的并行执行
EN

Stack Overflow用户
提问于 2013-01-01 04:58:05
回答 5查看 27.5K关注 0票数 31

我在R中并行运行随机森林

代码语言:javascript
复制
library(doMC)
registerDoMC()
x <- matrix(runif(500), 100)
y <- gl(2, 50)

并行执行(耗时73秒)

代码语言:javascript
复制
rf <- foreach(ntree=rep(25000, 6), .combine=combine, .packages='randomForest') %dopar%
randomForest(x, y, ntree=ntree) 

顺序执行(耗时82秒)

代码语言:javascript
复制
rf <- foreach(ntree=rep(25000, 6), .combine=combine) %do%
randomForest(x, y, ntree=ntree) 

在并行执行中,树的生成非常快,比如3-7秒,但其余的时间都花在合并结果上(合并选项)。因此,运行并行执行的唯一价值是树的数量非常高。有没有办法调整“组合”选项,以避免在每个节点上进行我不需要的任何计算,并使其更快

PS。上面只是一个数据的例子。在现实中,我有大约100,000个特征,大约100个观察值。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-04-03 02:22:11

.multicombine设置为TRUE可以产生很大的差异:

代码语言:javascript
复制
rf <- foreach(ntree=rep(25000, 6), .combine=randomForest::combine,
              .multicombine=TRUE, .packages='randomForest') %dopar% {
    randomForest(x, y, ntree=ntree)
}

这会导致combine被调用一次而不是五次。在我的台式机上,运行时间是8秒,而不是19秒。

票数 35
EN

Stack Overflow用户

发布于 2013-01-01 05:04:44

您是否知道caret包可以为并行运行做很多手把手操作(以及数据准备、汇总等)。为了你?

当然,最终,如果在随机森林计算本身中留下了一些代价高昂的操作,那么您几乎没有什么可以做的,因为Andy花了相当多的时间来改进它。我希望几乎没有低垂的果实可以供采摘。

票数 12
EN

Stack Overflow用户

发布于 2016-09-21 16:49:34

H20包可以用来解决你的问题。

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

使用H2O的随机森林实现:

https://www.analyticsvidhya.com/blog/2016/05/h2o-data-table-build-models-large-data-sets/

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14106010

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档