J'ai du mal à comprendre comment varImp
fonctionne la fonction pour un modèle randomForest avec le caret
package. Dans l'exemple ci-dessous, la fonction var3 n'a aucune importance en utilisant la varImp
fonction caret , mais le modèle final randomForest sous-jacent a une importance non nulle pour la fonction var3. pourquoi est-ce le cas?
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
la source
la source
Réponses:
Si j'ai bien compris, vous n'avez que 3 variables. Par défaut, la
varImp
fonction renvoie des résultats mis à l'échelle dans une plage de 0 à 100. Var3 a la valeur d'importance la plus faible et son importance mise à l'échelle est zéro. Essayez d'appelervarImp(rf, scale = FALSE)
.la source
Ajout à la réponse de @ DrDom, afin de fournir une intuition supplémentaire:
Les scores d'importance que cela
varImp(rf, scale = FALSE)
donne sont simplement calculés comme suit:rf$finalModel$importance[,1]/rf$finalModel$importanceSD
Il s'agit du% IncMSE moyen de la fonction divisé par son écart-type.
la source