我无法理解 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() 时似乎并没有真正起到明确的作用。对吗?
非常感谢您对此的见解。
最好的祝福!
答案 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
。