并行化随机森林
Posted
技术标签:
【中文标题】并行化随机森林【英文标题】:Parallelizing random forests 【发布时间】:2016-09-09 20:15:31 【问题描述】:通过搜索和询问,我发现了许多可以用来利用服务器所有内核的软件包,以及许多可以执行随机森林的软件包。
我对此很陌生,我迷失在所有训练的方法之间。您能否就使用和/或避免使用它们中的每一个的原因或它们的某些特定组合(有或没有caret
?)提供一些建议?
并行化包:
doParallel
,
doSNOW
,
doSMP
(已停产?),
doMC
(那么mclapply
呢?)
随机森林包:
[caret
+ 以下一些]
rf
,
parRF
,
randomForest
,
ranger
,
Rborist
,
parallelRandomForest
(使我的 R Studio 会话崩溃...)
谢谢
【问题讨论】:
这是否意味着您决定需要大量的树? 感谢您的建议(以及一些特征工程)以及培训时间,我已经设法减少了使用的特征数量。但不幸的是,我似乎仍然需要有很多树,是的。 (但我可能做错了一些事情,我还在探索中。 一般建议:这个问题有点宽泛,所以它可能不会吸引太多答案。例如,最好只关注并行计算的 R 包,甚至更好地询问带有随机森林的单个包。 我知道,我什至预计它会被否决。问题是,我发现了很多东西,以及并行化包和随机森林包的组合,我迷失了哪种组合适合我的需求。 【参考方案1】:关于 SO 有几个答案,比如parallel execution of random forest in R 和Suggestions for speeding up Random Forests,我会看看。
这些帖子很有帮助,但有点旧。 ranger
包是随机森林的一个特别快速的实现,所以如果你是新手,它可能是加速模型训练的最简单方法。 Their paper 讨论了一些可用包的权衡 - 根据您的数据大小和功能数量,哪个包为您提供最佳性能会有所不同。
【讨论】:
谢谢。关于第一个链接,.multicombine=TRUE
将与 caret
+ ranger
一起使用吗?如果是这样,我如何通过train()
传递它?
关于你的第二个链接:如果我在train()
中使用caret
+ allowParallel = TRUE
,我一定不能使用foreach
语法,对吧?我之前还需要做registerDoParallel(makeCluster(detectCores()))
(例如来自doParallel
)吗?或者相反,会不会出问题?
'ranger' 包是加速随机森林计算的非常酷的工具。最近查了一下。以上是关于并行化随机森林的主要内容,如果未能解决你的问题,请参考以下文章