Estou tendo problemas para entender como a varImp
função funciona para um modelo randomForest com o caret
pacote. No exemplo abaixo, o recurso var3 recebe zero importância usando a varImp
funçã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
r
caret
random-forest
MangoHands
fonte
fonte
Respostas:
Pelo que entendi, você tem apenas 3 variáveis. Por padrão, a
varImp
funçã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 ligarvarImp(rf, scale = FALSE)
.fonte
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.
fonte