I’m having trouble understanding how the
varImpfunction works for a randomForest model with the
caretpackage. In the example below feature var3 gets zero importance using caret’s
varImpfunction, 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
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).