Tengo problemas para entender cómo varImp
funciona la función para un modelo randomForest con el caret
paquete. En el ejemplo a continuación, la característica var3 tiene cero importancia usando la varImp
funció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
r
caret
random-forest
MangoManos
fuente
fuente
Respuestas:
Como entendí, solo tienes 3 variables. Por defecto, la
varImp
funció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 llamarvarImp(rf, scale = FALSE)
.fuente
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.
fuente