Variedad de cuidados para el modelo randomForest

10

Tengo problemas para entender cómo varImpfunciona la función para un modelo randomForest con el caretpaquete. En el ejemplo a continuación, la característica var3 tiene cero importancia usando la varImpfunción de caret , pero el modelo final randomForest subyacente tiene una importancia distinta de cero para la característica var3. ¿Por qué es este el 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
MangoManos
fuente
Configuré un indicador de moderador b / c que está fuera de tema para SO Más apropiado para CrossValidated.com
DWin

Respuestas:

11

Como entendí, solo tienes 3 variables. Por defecto, la varImpfunción devuelve resultados escalados en el rango 0-100. Var3 tiene el valor de importancia más bajo y su importancia escalada es cero. Intenta llamar varImp(rf, scale = FALSE).

DrDom
fuente
0

Agregando a la respuesta de @ DrDom, para proporcionar una mayor intuición:

El puntaje de importancia que varImp(rf, scale = FALSE)otorga, simplemente se calcula de la siguiente manera: rf$finalModel$importance[,1]/rf$finalModel$importanceSD

Este es el% IncMSE medio de la función dividido por su desviación estándar.

veghokstvd
fuente