【问题标题】:Calculate R-squared (%Var explained) from combined randomForest regression object从组合 randomForest 回归对象计算 R 平方(%Var 解释)
【发布时间】: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 中所述:

组合对象的confusionerr.ratemsersq组件(以及测试组件中的相应组件,如果存在)将为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


    【解决方案1】:

    是的。您可以在事后计算 R 平方值,方法是从您的训练数据和经过训练的模型中得出预测并将它们与实际值进行比较:

    # taking the object from the question:
    actual <- dat$carat
    predicted <- unname(predict(rfPar, dat))
    
    R2 <- 1 - (sum((actual-predicted)^2)/sum((actual-mean(actual))^2))
    

    或均方误差:

    caret::RMSE(predicted,actual)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-05-21
      • 2017-05-14
      • 2012-03-04
      • 2018-11-09
      • 2014-09-11
      • 1970-01-01
      • 2018-08-20
      相关资源
      最近更新 更多