Выбор каретки для модели randomForest

10

У меня проблемы с пониманием того, как varImpфункция работает для модели randomForest с caretпакетом. В приведенном ниже примере функция var3 получает нулевую важность с помощью varImpфункции caret , но базовая конечная модель randomForest имеет ненулевую важность для функции var3. Почему это так?

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
источник
Я установил флаг модератора b / c, это не по теме для SO. Больше подходит для CrossValidated.com
DWin

Ответы:

11

Как я понял у вас есть только 3 переменные. По умолчанию varImpфункция возвращает масштабированные результаты в диапазоне 0-100. Var3 имеет наименьшее значение важности, а его масштабируемая важность равна нулю. Попробуй позвонить varImp(rf, scale = FALSE).

DrDom
источник
0

Добавление к ответу @ DrDom, чтобы обеспечить дальнейшую интуицию:

Оценка важности, которая varImp(rf, scale = FALSE)дает, просто рассчитывается следующим образом: rf$finalModel$importance[,1]/rf$finalModel$importanceSD

Это среднее значение% IncMSE функции, деленное на стандартное отклонение.

veghokstvd
источник