【发布时间】:2017-10-23 12:47:28
【问题描述】:
在计算randomForest 回归时,对象包含 R 平方为“% Var explained: ...”。
library(randomForest)
library(doSNOW)
library(foreach)
library(ggplot2)
dat <- data.frame(ggplot2::diamonds[1:1000,1:7])
rf <- randomForest(formula = carat ~ ., data = dat, ntree = 500)
rf
# Call:
# randomForest(formula = carat ~ ., data = dat, ntree = 500)
# Type of random forest: regression
# Number of trees: 500
# No. of variables tried at each split: 2
#
# Mean of squared residuals: 0.001820046
# % Var explained: 95.22
但是,当使用foreach 循环计算和combine 多个randomForest 对象时,R 平方值不可用,如?combine 中所述:
组合对象的
confusion、err.rate、mse和rsq组件(以及测试组件中的相应组件,如果存在)将为NULL
cl <- makeCluster(8)
registerDoSNOW(cl)
rfPar <- foreach(ntree=rep(63,8),
.combine = combine,
.multicombine = T,
.packages = "randomForest") %dopar%
{
randomForest(formula = carat ~ ., data = dat, ntree = ntree)
}
stopCluster(cl)
rfPar
# Call:
# randomForest(formula = carat ~ ., data = dat, ntree = ntree)
# Type of random forest: regression
# Number of trees: 504
# No. of variables tried at each split: 2
因为在this question 中没有真正回答:之后是否可以从randomForest 对象计算 R 平方(% Var 解释)和平方残差的平均值?
(这种并行化的批评者可能会争辩使用caret::train(... method = "parRF") 或其他人。然而,事实证明这需要永远。事实上,这对于使用combine 合并randomForest 对象的任何人都可能有用。 .)
【问题讨论】:
标签: r random-forest