【问题标题】:Using foreach for parallel boosting in R在 R 中使用 foreach 进行并行提升
【发布时间】:2014-08-22 04:22:36
【问题描述】:

我经常使用 foreach 包在 R 中训练随机森林,我正在尝试找到一个粗略的等价物来训练 adaboost 模型,但我遇到了如何组合结果的问题。 randomForest 包具有“组合”功能,允许将多个 randomForest 对象组合成一个 RF 对象,是否有任何具有类似功能的增强包?我通常使用包 adabag,但我不知道如何组合输出的模型(或者是否有办法)。有没有人试过这个并想出一个解决方案?这个 sn-p 可以并行创建模型:

library(foreach)
library(adabag)
library(doMC)
library(rpart)

registerDoMC(4)

data(iris)

testADA <- foreach(mfinal = rep(5, 4), .combine = c, .packages = "adabag") %dopar% boosting(Species ~ ., data = iris, boos = TRUE, mfinal = mfinal, control = c(minsplit = 0, cp = 0.000001))

但是我最终只是得到了一个模型列表而不是一个模型,我不知道如何组合它们。

【问题讨论】:

    标签: r foreach parallel-processing adaboost


    【解决方案1】:

    你可以使用 caret 包。示例可以在这里找到 - http://caret.r-forge.r-project.org/parallel.html

    在你的情况下,它可能看起来像这样:

    library(caret)
    library(doMC)
    registerDoMC(cores = 4)
    model <- train(Species ~ ., data = iris, method = "ada")
    

    “doMC”包在 Windows 上不起作用。或者,这里是 Windows 机器的解决方案:

    library('doParallel')
    cl <- makeCluster(4) #number of cores
    registerDoParallel(cl)
    model <- train(Species ~ ., data = iris, method = "ada")
    stopCluster(cl)
    

    【讨论】:

    • 包“doMC”不支持 R 3.2。有没有其他方法可以并行制作插入符号?
    • Cina,我尝试在 R 3.2 和 Ubuntu 14.04 上安装“doMC”并且它正在工作。 “doMC”包在 Windows 上不起作用。我已经为 Windows 用户编辑了我的答案。
    • 那么上面的代码是不是把你的数据在4核之间分成了4等份呢?
    猜你喜欢
    • 2014-06-25
    • 1970-01-01
    • 1970-01-01
    • 2019-06-29
    • 1970-01-01
    • 2013-01-16
    • 2015-09-28
    • 1970-01-01
    • 2016-07-11
    相关资源
    最近更新 更多