我在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,000个特征,大约100个观察值。
发布于 2013-04-03 02:22:11
将.multicombine设置为TRUE可以产生很大的差异:
rf <- foreach(ntree=rep(25000, 6), .combine=randomForest::combine,
.multicombine=TRUE, .packages='randomForest') %dopar% {
randomForest(x, y, ntree=ntree)
}这会导致combine被调用一次而不是五次。在我的台式机上,运行时间是8秒,而不是19秒。
发布于 2013-01-01 05:04:44
您是否知道caret包可以为并行运行做很多手把手操作(以及数据准备、汇总等)。为了你?
当然,最终,如果在随机森林计算本身中留下了一些代价高昂的操作,那么您几乎没有什么可以做的,因为Andy花了相当多的时间来改进它。我希望几乎没有低垂的果实可以供采摘。
发布于 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/
https://stackoverflow.com/questions/14106010
复制相似问题