如何使用parRF方法使随机林运行得更快

时间:2014-05-12 11:12:24

标签: r parallel-processing random-forest r-caret

我想在大型数据集上运行随机森林:100k * 400.当我使用随机森林时需要花费很多时间。我可以使用插入包中的parRF方法来减少运行时间吗? 什么是正确的语法? 以下是一个示例数据框:

dat <- read.table(text = " TargetVar  Var1    Var2       Var3
 0        0        0         7
 0        0        1         1
 0        1        0         3
 0        1        1         7
 1        0        0         5
 1        0        1         1
 1        1        0         0
 1        1        1         6
 0        0        0         8
 0        0        1         5
 1        1        1         4
 0        0        1         2
 1        0        0         9
 1        1        1         2  ", header = TRUE)

我试过了:

library('caret')
m<-randomForest(TargetVar ~ Var1 + Var2 + Var3, data = dat, ntree=100, importance=TRUE, method='parRF')

但我没有看到太大的差异。任何想法?

1 个答案:

答案 0 :(得分:9)

您没有看到差异的原因是您没有使用caret包。您可以使用library()命令将其加载到您的环境中,但随后运行不使用插入符号的randomForest()

我建议首先创建一个仅包含输入变量的数据框(或data.table),以及一个包含结果的向量。我指的是最近更新的caret docs

x <- data.frame(dat$Var1, dat$Var2, dat$Var3)
y <- dat$TargetVar

接下来,验证您是否有parRF方法。直到我将我的插入包更新到最新版本(6.0-29)之后我没有。

library("randomForest")
library("caret")
names(getModelInfo())

您应该在输出中看到parRF。现在您已准备好创建培训模型。

library(foreach)

rfParam <- expand.grid(ntree=100, importance=TRUE)

m <- train(x, y, method="parRF", tuneGrid=rfParam)