【发布时间】:2015-12-29 14:54:13
【问题描述】:
我现在正在使用 R 中的 randomForest 包。为了加快分类步骤,我对并行执行森林感兴趣。为此,我使用包'foreach'的方式与'foreach'小插图上指示的方式类似。这包括将树的总数除以您想要使用的核心数,然后将它们与包“randomForest”的“组合”功能组合:
require(randomForest)
require(foreach)
require(doParallel)
registerDoParallel(cores=CPUS)
rf <- foreach::foreach(ntree=rep(ceiling(NTREE/CPUS), CPUS), .combine=randomForest::combine, .packages='randomForest') %dopar% {
randomForest::randomForest(x=t(Y), y=A, ntree=ntree, importance=TRUE, ...)
}
我将“平行”森林的结果与一个核心中生成的森林进行了比较。与测试集的预测能力似乎相似,但“重要性”值大大降低,这影响了变量选择的后续步骤。
imp <- importance(rf,type=1)
我想知道为什么会发生这种情况,以及它是正确的还是有任何错误。非常感谢!
【问题讨论】:
-
代码似乎是正确的,据此:cran.r-project.org/web/packages/foreach/vignettes/foreach.pdf。我已经检查了随机生成的示例。重要性似乎确实有点不同,但在使用相同参数训练森林时它也会发生一些变化。我不认为这是一个错误,但你可以发布一个可重现的例子来证明我错了
-
是的,差异肯定只是由于算法的随机性,这取决于您的 NTREE 值是什么,以及数据的维度。您是否验证过这种情况始终如一地发生?
标签: r parallel-processing random-forest parallel-foreach