VarImp Caret para o modelo randomForest

10

Estou tendo problemas para entender como a varImpfunção funciona para um modelo randomForest com o caretpacote. No exemplo abaixo, o recurso var3 recebe zero importância usando a varImpfunção de cursor , mas o modelo final randomForest subjacente tem importância diferente de zero para o recurso var3. Por que esse é o caso?

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
MangoHands
fonte
Eu defino um sinalizador de moderador b / c, isso não é tópico para SO. Mais apropriado para CrossValidated.com
DWin

Respostas:

11

Pelo que entendi, você tem apenas 3 variáveis. Por padrão, a varImpfunção retorna resultados dimensionados no intervalo de 0 a 100. Var3 tem o menor valor de importância e sua importância em escala é zero. Tente ligar varImp(rf, scale = FALSE).

DrDom
fonte
0

Adicionando à resposta do @ DrDom, a fim de fornecer mais intuição:

As pontuações de importância fornecidas varImp(rf, scale = FALSE)são simplesmente calculadas pelo seguinte: rf$finalModel$importance[,1]/rf$finalModel$importanceSD

Esse é o% IncMSE médio do recurso dividido por seu desvio padrão.

veghokstvd
fonte