【发布时间】:2013-01-23 06:43:04
【问题描述】:
我正在尝试通过拆分测试数据集 (n=35000) 并让 R 在较小的块上运行来加速预测。该模型已使用party::cforest 生成。
但是,当我尝试使用 foreach 和 %dopar% 时,我无法让 R 计算即使是最小的部分。
我的预测功能都需要大约 7 秒
predict(fit,newdata=a[1:100,]) 和 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 速度?
使用另一个函数进行测试运行(按照here 的建议重复计算 sqrt(3))已经显示出显着的改进,因此 %dopar% 也可以正常工作。
使用 randomForest 的预测表现类似,不同之处在于,即使 %do% 用于 10x1:10 的预测,也比仅预测 1:100 需要更多的时间
不过,对于 randomForest,我并不在意,因为无论如何预测所有 35k 数据集都不是问题。
顺便提一句。只有我,还是 cforest 需要更多时间和内存来完成所有事情?只有在 randomForest 像魅力一样工作时遇到麻烦..
(在 Windows 7、x64、8GB RAM、4 核/8 线程上运行 - 在 doSNOW 并行化集群中使用 6 个节点)
【问题讨论】:
标签: r foreach parallel-processing random-forest party