随机森林模型的插入符号 varImp

机器算法验证 r 插入符号 随机森林
2022-02-10 13:02:31

我无法理解该varImp函数如何用于带有caret包的 randomForest 模型。在下面的示例中,特征 var3 使用 caretvarImp函数的重要性为零,但底层的 randomForest 最终模型对特征 var3 的重要性不为零。为什么会这样?

require(randomForest)
require(caret)


rf <- train(x, y, 
      method = "rf",
      trControl = trainControl(method = "oob"),
      importance = TRUE,
      verbose = TRUE,
      tuneGrid = data.frame(mtry = num.predictors) )


fm <- rf$finalModel


> varImp(f)
rf variable importance

       Overall
var1    100.00
var2    80.14
var3    0.00


> importance(fm)
        %IncMSE IncNodePurity
var2    872.7935      40505276
var1    1021.4707      55682866
var3     273.0168       3078731
2个回答

据我了解,您只有 3 个变量。默认情况下varImp,函数返回 0-100 范围内的缩放结果。Var3 具有最低的重要性值,其缩放重要性为零。试着打电话varImp(rf, scale = FALSE)

添加到@DrDom 的答案,以提供进一步的直觉:

给出的重要性分数varImp(rf, scale = FALSE)简单地通过以下方式计算: rf$finalModel$importance[,1]/rf$finalModel$importanceSD

这是特征的平均 %IncMSE 除以其标准差。