Caret varImp untuk model randomForest

10

Saya mengalami kesulitan memahami bagaimana varImpfungsi ini bekerja untuk model randomForest dengan caretpaket. Pada contoh di bawah ini, fitur var3 sama pentingnya dengan varImpfungsi caret , tetapi model final randomForest yang mendasarinya memiliki kepentingan nol untuk fitur var3. Mengapa demikian?

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
sumber
Saya menetapkan bendera moderator b / c ini di luar topik untuk SO. Lebih tepat untuk CrossValidated.com
DWin

Jawaban:

11

Seperti yang saya mengerti Anda hanya memiliki 3 variabel. Secara default varImpfungsi mengembalikan hasil skala di kisaran 0-100. Var3 memiliki nilai kepentingan terendah dan skala kepentingannya adalah nol. Cobalah menelepon varImp(rf, scale = FALSE).

DrDom
sumber
0

Menambahkan ke jawaban DrDom @, untuk memberikan intuisi lebih lanjut:

Nilai penting yang varImp(rf, scale = FALSE)diberikan, dihitung dengan sederhana sebagai berikut: rf$finalModel$importance[,1]/rf$finalModel$importanceSD

Ini adalah rata-rata fitur% IncMSE dibagi dengan standar deviasinya.

veghokstvd
sumber