插入符号随机森林回归的变量重要性

时间:2020-12-18 19:43:46

标签: r random-forest r-caret

我无法理解 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 减少?,置换重要性?,袋外?等)。

让事情变得更复杂的是,train 函数还具有 important = T 参数,这在使用 varImp() 时似乎并没有真正起到明确的作用。对吗?

非常感谢您对此的见解。

最好的祝福!

1 个答案:

答案 0 :(得分:0)

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

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

它有效地做的是在最终模型上使用 randomForest 中的 important() 函数为您提供:

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