VarImp du curseur pour le modèle randomForest

10

J'ai du mal à comprendre comment varImpfonctionne la fonction pour un modèle randomForest avec le caretpackage. Dans l'exemple ci-dessous, la fonction var3 n'a aucune importance en utilisant la varImpfonction 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
MangoHands
la source
J'ai placé un indicateur de modérateur b / c c'est hors sujet pour SO. Plus approprié pour CrossValidated.com
DWin

Réponses:

11

Si j'ai bien compris, vous n'avez que 3 variables. Par défaut, la varImpfonction 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'appeler varImp(rf, scale = FALSE).

DrDom
la source
0

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.

veghokstvd
la source