我试图通过拆分测试数据集(n = 35000)并让 R 在较小的块上运行来加快对测试数据集(n = 35000)的预测。该模型是用 生成的party::cforest
。
foreach
但是,在尝试使用with时,我无法让 R 计算即使是最小的部分%dopar%
。
predict(fit,newdata=a[1:100,])
我的预测函数对于和都需要大约 7 秒
foreach(i=1:10) %do% {predict(fit,newdata=a[1:10,])}
。
但是当我尝试使用时%dopar%
,R 似乎冻结了。不应该:
foreach(i=1:10, .packages=c('party')) %dopar% {predict(fit,newdata=a[1:10,])}
更快?或者并行化本身是否会以某种方式减慢 R 速度?
使用另一个函数进行测试运行(按照此处的建议重复计算 sqrt(3) )已显示出显着的改进,因此%dopar%
也可以正常工作。
使用 randomForest 进行预测的行为类似,不同之处在于,即使%do%
对于 10x1:10 的预测,也比仅预测 1:100 需要更多的时间。对于 randomForest,我并不关心,因为无论如何预测所有 35k 数据集都不是问题。顺便提一句。只有我,还是 cforest 需要更多时间和内存来完成所有事情?只有在 randomForest 像魅力一样工作时遇到麻烦..
(在 Windows 7、x64、8GB RAM、4 核/8 线程上运行 - 在 doSNOW 并行化集群中使用 6 个节点)