在 Macbook 中并行执行随机森林的小速度增益(使用 R,插入符号)

JG11235

我正在使用包 caret 和 ranger 拟合随机森林模型,并尝试使用并行进程加快速度。然而,速度增益非常小。我使用的是 MacBook Pro(Retina,13 英寸,2013 年末)、2.4 GHz Intel Core i5、8 GB 1600 MHz DDR3、macOS Sierra 10.12。一个可重现的例子:

library(caret)
library(mlbench)
data("Sonar")

start <- Sys.time()
mod_1 <- train(Class ~ ., data = Sonar, method = "ranger", num.trees = 10000)
stop <- Sys.time()
duration1 <- stop - start
duration1

这需要 3.47 分钟。在此期间,在活动监视器中,我看到一个 R 进程的 CPU 使用率约为 300-330%。现在并行:

library(parallel)
library(doParallel)
cluster <- makeCluster(detectCores() - 1)
registerDoParallel(cluster)

start <- Sys.time()
mod_2 <- train(Class ~ ., data = Sonar, method = "ranger", num.trees = 10000)
stop <- Sys.time()
duration2 <- stop - start
duration2

这将在 3.06 分钟内运行。在此期间,在活动监视器中,我看到 3 个 R 进程,每个进程的 CPU 使用率约为 100-120%。我还测试了 caret 文档 ( http://topepo.github.io/caret/parallel-processing.html ) 中建议的 doMC 包,耗时 3.10 分钟。从插入符号文档中的图表来看,这种速度增益比我预期的要小得多。有任何想法吗?

会话信息:

R version 3.3.2 (2016-10-31)
Platform: x86_64-apple-darwin13.4.0 (64-bit)
Running under: macOS Sierra 10.12

locale:
[1] en_CA.UTF-8/en_CA.UTF-8/en_CA.UTF-8/C/en_CA.UTF-8/en_CA.UTF-8

attached base packages:
[1] parallel  stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
 [1] doParallel_1.0.10 ranger_0.6.0      e1071_1.6-7       doMC_1.3.4        iterators_1.0.8  
 [6] foreach_1.4.3     mlbench_2.1-1     caret_6.0-73      ggplot2_2.2.1     lattice_0.20-34  

loaded via a namespace (and not attached):
 [1] Rcpp_0.12.9        magrittr_1.5       splines_3.3.2      MASS_7.3-45        munsell_0.4.3     
 [6] colorspace_1.3-2   minqa_1.2.4        stringr_1.1.0      car_2.1-4          plyr_1.8.4        
[11] tools_3.3.2        nnet_7.3-12        pbkrtest_0.4-6     grid_3.3.2         gtable_0.2.0      
[16] nlme_3.1-130       mgcv_1.8-16        quantreg_5.29      class_7.3-14       MatrixModels_0.4-1
[21] lme4_1.1-12        lazyeval_0.2.0     assertthat_0.1     tibble_1.2         Matrix_1.2-8      
[26] nloptr_1.0.4       reshape2_1.4.2     ModelMetrics_1.1.0 codetools_0.2-15   stringi_1.1.2     
[31] compiler_3.3.2     scales_0.4.1       stats4_3.3.2       SparseM_1.74 

更新:在 slonopotam 响应后,我使用包 randomForest(4.6-12 版)测试了上述相同的模型。顺序运行(非并行)需要 8.14 分钟。在此期间,在活动监视器中,我看到一个 R 进程的 CPU 为 95-100%。并行运行需要 3.72 分钟,在此期间有 3 个 R 进程,每个进程的 CPU 为 95-100%。添加此信息只是为了完成。谢谢,斯洛诺波坦!

斯洛波坦

您正在使用的包“游侠”确实具有内部多线程支持。这就是为什么您在第一种情况下观察到 CPU 使用率大约为 300..330% - 这意味着它已经使用至少 3 个内核进行训练。

使用 doParallel 时,使用的是多处理而不是多线程,但训练中使用的计算资源总数几乎相同,因此您看不到太多收益。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用插入符号在R中进行交叉验证的SVM

来自分类Dev

R中插入符号的多核多节点示例

来自分类Dev

如何通过使用插入符号R对神经网络建模

来自分类Dev

R的插入符号包中的rfe()中的ROC

来自分类Dev

R中地球(MARS)和插入符号的“响应”谓词

来自分类Dev

鼠标r包中执行随机森林时出错

来自分类Dev

R,插入符号:保存/加载并行随机森林失败

来自分类Dev

VID或R3-Gui中的文本和插入符号

来自分类Dev

插入符号包中的“随机森林”错误

来自分类Dev

在插入符号中拟合随机森林模型后使用partialPlot

来自分类Dev

在R markdown文档中插入节符号

来自分类Dev

在R中由插入符号包训练的SVM线性模型

来自分类Dev

使用R中的插入符号将100次随机训练和测试数据进行拆分

来自分类Dev

在R图的图例中插入数学符号

来自分类Dev

如何在R的随机森林的插入符中设置ppv?

来自分类Dev

如何在r的列中插入符号%

来自分类Dev

在R中暂停和恢复插入符号训练

来自分类Dev

消除插入符号R中的迭代信息文本

来自分类Dev

R:插入符号中的upSample正在完全删除目标变量

来自分类Dev

R中的glm插入符号模型的方差膨胀VIF

来自分类Dev

如何通过使用插入符号R对神经网络建模

来自分类Dev

R,插入符号:保存/加载并行随机森林失败

来自分类Dev

插入符号包中的“随机森林”错误

来自分类Dev

控制插入符号R包中的交叉验证的采样

来自分类Dev

Macbook air中的openGL版本?

来自分类Dev

在R markdown文档中插入节符号

来自分类Dev

在R中使用“插入符号简介”小插图样本代码时出错

来自分类Dev

在 R 中使用插入符号逐步回归

来自分类Dev

在 R 中使用插入符号实现 K 个最近邻

Related 相关文章

热门标签

归档