我正在使用 R(适用于 Windows 7,32 位)使用 randomForests
进行文本分类.由于数据集很大,我在网上查了加快模型构建的速度,遇到了randomForestSRC
包裹。
我已按照软件包安装手册中的所有步骤进行操作,但在执行 rfsrc()
期间命令,R 仅使用其中一个逻辑核心(与 randomforest()
相同),最大 CPU 利用率为 25%。
我按照手册使用了以下命令。
options(mc.cores=detectcores()-1, rf.cores = detectcores()-1)
我在具有 4 个逻辑内核的 Intel i3 2120 CPU 上使用 Windows 7 Professional 32 位 Service Pack 1。任何人都可以对我可能缺少的东西有所了解吗?任何其他有效的使用方式
randomForest
多核利用也会有帮助!
最佳答案
问题是randomForestSRC
使用 mclapply
并行执行的函数,但 mclapply
不支持在 Windows 上并行执行。 randomForestSRC
也可以使用 OpenMP 进行多线程并行执行,但这并未内置在 CRAN 的二进制分发版中,因此您必须在启用 OpenMP 支持的情况下从源代码构建包。
我认为你的两个选择是:
randomForestSRC
在您的 Windows 机器上支持 OpenMP; 这是一个使用
randomForest
的简单并行示例包装与 foreach
和 doParallel
源自 foreach
中的示例小插图:library(randomForest)
library(doParallel)
workers <- detectCores()
cl <- makePSOCKcluster(workers)
registerDoParallel(cl)
x <- matrix(runif(500), 100)
y <- gl(2, 50)
ntree <- 1000
rf <- foreach(n=rep(ceiling(ntree/workers), workers),
.combine=combine, .multicombine=TRUE,
.packages='randomForest') %dopar% {
randomForest(x, y, ntree=n)
}
这个例子应该适用于 Windows、Mac OS X 和 Linux。见 foreach vignette想要查询更多的信息。
关于randomForestSRC 包 R 中的 rfsrc() 命令不使用多核功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29810781/