10
$\begingroup$

I'm having trouble understanding how the varImp function works for a randomForest model with the caret package. In the example below feature var3 gets zero importance using caret's varImp function, but the underlying randomForest final model has non-zero importance for feature var3. Why is this the case?

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
$\endgroup$

migrated from stackoverflow.com Jul 24 '14 at 20:47

This question came from our site for professional and enthusiast programmers.

  • $\begingroup$ I set a moderator flag b/c this is off-topic for SO. More appropriate for CrossValidated.com $\endgroup$ – DWin Jul 24 '14 at 19:28
9
$\begingroup$

As I understood you have only 3 variables. By default varImp function returns scaled results in range 0-100. Var3 has the lowest importance value and its scaled importance is zero. Try to call varImp(rf, scale = FALSE).

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.