Mam problem ze zrozumieniem, jak varImp
działa ta funkcja dla modelu randomForest z caret
pakietem. W poniższym przykładzie funkcja var3 uzyskuje zerową ważność za pomocą varImp
funkcji Careta, ale leżący u jej podstaw model końcowy randomForest ma niezerowe znaczenie dla cechy var3. Dlaczego tak jest?
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
r
caret
random-forest
MangoHands
źródło
źródło
Odpowiedzi:
Jak zrozumiałem, masz tylko 3 zmienne. Domyślnie
varImp
funkcja zwraca skalowane wyniki z zakresu 0-100. Var3 ma najniższą wartość ważności, a jego skalowana ważność wynosi zero. Spróbuj zadzwonićvarImp(rf, scale = FALSE)
.źródło
Dodanie do odpowiedzi @ DrDom w celu zapewnienia dalszej intuicji:
Podane oceny ważności
varImp(rf, scale = FALSE)
oblicza się w następujący sposób:rf$finalModel$importance[,1]/rf$finalModel$importanceSD
Jest to średni% IncMSE funkcji podzielony przez odchylenie standardowe.
źródło