Variante Caret per il modello randomForest


10

Ho difficoltà a capire come varImpfunziona la funzione per un modello randomForest con il caretpacchetto. Nell'esempio seguente, la funzione var3 assume un'importanza zero utilizzando la varImpfunzione caret , ma il modello finale randomForest sottostante ha un'importanza diversa da zero per la funzione var3. Perché è così?

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

Ho impostato un flag moderatore b / c che è fuori tema per SO. Più appropriato per CrossValidated.com
DWin

Risposte:


11

Come ho capito hai solo 3 variabili. Per impostazione predefinita, la varImpfunzione restituisce risultati in scala nell'intervallo 0-100. Var3 ha il valore di importanza più basso e la sua importanza in scala è zero. Prova a chiamare varImp(rf, scale = FALSE).


0

Aggiungendo alla risposta di @ DrDom, al fine di fornire ulteriore intuizione:

I punteggi di importanza che varImp(rf, scale = FALSE)danno, sono semplicemente calcolati come segue: rf$finalModel$importance[,1]/rf$finalModel$importanceSD

Questa è la% IncMSE media della funzione divisa per la sua deviazione standard.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.