我有一个较大的n(> 1,000,000)数据集,具有少量用于估计(回归)随机森林的功能,并且一直在寻求实现Rborist(在R中)。我想并行处理我的工作,但没有找到有关如何完成工作的指导。我有16个处理器要在运行它的机器上使用。例如,当我对randomForest包使用doParallel时,命令:

rf <- foreach(ntree=rep(32, 16), .combine=combine, .packages='randomForest') %dopar% randomForest(x, y, nodesize = 25, ntree=ntree)


它启动16个R进程,并且像randomForest一样缓慢运行,但是可以工作。

Rborist的类似命令:

rb <- foreach(ntree=rep(32, 16), .combine=combine, .packages='Rborist') %dopar% Rborist(x, y, minNode = 25, ntree=ntree)


引发错误:


  错误调用合并功能:
  
  警告消息:在mclapply(argsList,FUN,mc.preschedule =
  preschedule,mc.set.seed = set.seed ,:所有已调度核心
  用户代码中遇到错误


有谁知道如何与Rborist并行化?它似乎没有发生在幕后,因为我在运行时仅使用1 cpu:

rb <- Rborist(x, y, minNode = 25, ntree = 512)

最佳答案

Rborist本身并行运行。它使用了我机器上的所有线程(win 10 64bit)。但是后来我没有先加载doParallel / foreach。

游侠包也是如此,但在游侠中,您可以设置要使用的线程数。

射频的快速实现是我的首要任务:


Rborist(大n,低p)
护林员(处理大p,适度n)
随机的forest.ddr(尚未测试)
H2O中的分布式随机森林。非常快,但是利用
停止标准。

09-16 17:43