テストデータセット(n = 35000)を分割し、Rをより小さなチャンクで実行できるようにすることで、テストデータセット(n = 35000)の予測を高速化しようとしています。モデルはで生成されていparty::cforest
ます。
foreach
ただし、で使用しようとすると、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はすべてにもっと時間とRAMを費やしていますか?randomForestがチャームのように機能する場合にのみ問題が発生します。
(Windows 7、x64、8GB RAM、4コア/ 8スレッドで実行-doSNOW並列化クラスターで6ノードを使用)