randomForestSRC包中的rfsrc()命令R不使用多核功能

时间:2015-04-22 23:28:01

标签: r parallel-processing multicore random-forest

我使用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和多核利用率的任何其他有效方法也会有所帮助!

1 个答案:

答案 0 :(得分:4)

问题是randomForestSRC使用mclapply函数进行并行执行,但mclapply不支持Windows上的并行执行。 randomForestSRC也可以使用OpenMP进行多线程并行执行,但是不能从CRAN构建到二进制分发中,因此必须在启用了OpenMP支持的情况下从源构建包。

我认为你的两个选择是:

  • 在Windows计算机上使用OpenMP支持构建randomForestSRC;
  • 自己并行调用随机林功能。

这是一个简单的并行示例,使用的randomForestforeachdoParallel来自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