【问题标题】:Variable Importance for Caret Random Forest Regression插入符号随机森林回归的变量重要性
【发布时间】:2021-03-29 11:06:03
【问题描述】:

我无法理解 RF 回归插入符号中特征重要性分数的确切含义。如您所知,RF 有许多潜在的重要性度量。但是,没有明确的指示使用哪一种。

这是一个玩具示例:


data(iris)


y_train = iris['Sepal.Length']
X_train = iris[2:4]

mdl_rf_inner <- caret::train(X_train, y_train$Sepal.Length, method = "rf",
                             preProcess = c("center", "scale"),
                             ntrees = 1000, importance = T)

feat_imp_2 <- caret::varImp(mdl_rf_inner, scale=F)

导致:

rf variable importance

             Overall
Petal.Length   48.51
Sepal.Width    23.67
Petal.Width    17.15

请记住,我是在预测萼片长度,因此尽管使用了虹膜数据,但它是一个回归问题。我阅读了文档,但没有明确说明正在计算哪个变量的重要性(基尼杂质减少?、mse 减少?、排列重要性?、out of bag?等等)。

更复杂的是,train 函数还有importance = T 参数,在使用varImp() 时,它似乎并没有明确的用途。对吗?

非常感谢您对此的见解。

祝你好运!

【问题讨论】:

  • 这似乎不是适合 Stack Overflow 的特定编程问题。如果您对解释统计模型的结果有一般性问题,那么您应该通过Cross Validated 询问此类问题。你更有可能在那里得到更好的答案。

标签: r random-forest r-caret


【解决方案1】:

如果您阅读了 varImp (?varImp) 的帮助手册:

*Random Forest*: ‘varImp.randomForest’ and ‘varImp.RandomForest’
are wrappers around the importance functions from the
‘randomForest’ and ‘party’ packages, respectively.

它有效地做的是在你的最终模型上使用 randomForest 中的importance() 函数来给你:

randomForest::importance(mdl_rf_inner$finalModel)
             %IncMSE IncNodePurity
Sepal.Width  26.96516      8.014371
Petal.Length 44.64568     64.381750
Petal.Width  18.27348     27.448665

比较:

caret::varImp(mdl_rf_inner, scale=FALSE)
rf variable importance

             Overall
Petal.Length   44.65
Sepal.Width    26.97
Petal.Width    18.27

这是由他们各自的 SD 缩放的 %IncMSE。您可以从help page 了解更多关于 randomForest::importance 的信息。

对于%IncMSE,您需要在运行randomForest 模型时指定importance=TRUE

【讨论】:

    猜你喜欢
    • 2013-09-05
    • 2017-08-29
    • 2017-01-06
    • 2018-06-24
    • 2016-08-10
    • 2016-06-24
    • 2019-08-08
    • 2019-12-06
    • 2015-10-08
    相关资源
    最近更新 更多