与Rborist并行化

时间:2016-08-18 09:54:33

标签: r machine-learning random-forest parallel-processing

我有一个大的n(> 1,000,000)数据集,其中包含少量特征来估计(回归)随机森林,并且一直在寻求实施Rborist(在R中)。我希望将我的工作并行化,但是没有找到关于如何完成工作的指导。我有16个处理器可以在它运行的机器上使用。当我使用doParallel和randomForest包时,例如,命令:

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)

2 个答案:

答案 0 :(得分:1)

Rborist独自运行。它使用我机器上的所有线程(赢得10 64位)。但后来我没有首先加载doParallel / foreach。

同样适用于游侠包,但在游侠中,您可以设置要使用的线程数。

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

  • 树艺师(大n,低p)
  • ranger(处理大p,适度n)
  • 随机的forest.ddr(没有经过测试)
  • 在H2O中分布随机森林。非常快,但利用 停止标准。

答案 1 :(得分:0)

Rborist目前使用所有可用内核。提供一种调整方法是否有用?

您是否尝试过CRAN的最新版本,0.1-3?这包含对回归的默认最小节点大小的更改,在某些情况下提高了准确性。

我们已经在通过适度(而非小型)预测计数来提高绩效方面取得了一些进展。这也应该通过最新版本的更改来反映。

运行内存占用可能是广度优先分割方法的结果。保存记忆的一种方法是将问题分成几块,但我们还没有到达那里。

最终内存大小主要是由于缓存叶信息以供其他软件包后续使用或进行分位数回归。也许我们应该添加一个&#34; noLeaf&#34;对那些选项不感兴趣的用户的选项。