Caret varImp для моделі randomForest


10

У мене виникають проблеми з розумінням того, як varImpфункція працює для моделі randomForest з caretпакетом. У наведеному нижче прикладі функція var3 набуває нульового значення, використовуючи функцію caret varImp, але основна випадкова кінцева модельForest має ненульове значення для функції 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

Я встановлюю прапор модератора б / с, це поза темою для ТА. Більше підходить для CrossValidated.com
DWin

Відповіді:


11

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


0

Додавання до відповіді @ DrDom з метою подальшої інтуїції:

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

Це середній відсоток функції IncMSE, поділений на його стандартне відхилення.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.