2015-01-13 15 views
8

Ho usato RandomForest per un problema di regressione. Ho usato importance(rf,type=1) per ottenere% IncMSE per le variabili e uno di loro ha% IncMSE negativo. Questo significa che questa variabile è dannosa per il modello? Ho cercato Internet per ottenere delle risposte, ma non ne ho trovato una chiara. Ho anche trovato qualcosa di strano nella sintesi del modello (allegata sotto), sembra che un solo albero è stato utilizzato anche se ho definito ntrees come 800.Che cosa significa negativo% IncMSE nel pacchetto RandomForest?

modello:

rf<-randomForest(var1~va2+var3+..+var35,data=d7depo,ntree=800,keep.forest=FALSE, importance=TRUE) 

summary(rf) 
       Length Class Mode  
call    6 -none- call  
type    1 -none- character 
predicted  26917 -none- numeric 
mse    800 -none- numeric 
rsq    800 -none- numeric 
oob.times  26917 -none- numeric 
importance   70 -none- numeric 
importanceSD  35 -none- numeric 
localImportance  0 -none- NULL  
proximity   0 -none- NULL  
ntree    1 -none- numeric 
mtry    1 -none- numeric 
forest    0 -none- NULL  
coefs    0 -none- NULL  
y    26917 -none- numeric 
test    0 -none- NULL  
inbag    0 -none- NULL  
terms    3 terms call 

risposta

20

Domanda 1 - perché ntree mostra 1?:

summary(rf) indica la lunghezza degli oggetti inclusi nella variabile rf. Ciò significa che rf$ntree è di lunghezza 1. Se si digita sulla console rf$tree vedrete che mostra 800.

Domanda 2 - fa un negativo% IncMSE mostrano una variabile "cattivo"?

IncMSE:
Il modo in cui questo viene calcolato è calcolando il MSE del tutto il modello inizialmente. Chiamiamo questo MSEmod. Dopo questo per ognuna delle variabili (colonne nel set di dati) i valori vengono mescolati casualmente (permutato) in modo che venga creata una variabile "cattiva" e venga calcolato un nuovo MSE. Cioè immagina per quello per una colonna hai avuto righe 1,2,3,4,5. Dopo la permutazione questi finiranno per essere 4,3,1,2,5 a caso. Dopo la permutazione (tutte le altre colonne rimangono esattamente le stesse poiché vogliamo esaminare l'importanza di col1's), viene calcolato il nuovo MSE del modello, chiamiamolo MSEcol1 (in modo simile avrete MSEcol2, MSEcol3 ma continuiamo è semplice e tratta solo con MSEcol1 qui). Ci aspetteremmo che dal momento che il secondo MSE è stato creato utilizzando una variabile completamente casuale, MSEcol1 sarebbe superiore a MSEmod (maggiore è il valore MSE, peggio). Pertanto, quando prendiamo la differenza dei due MSEcol1 - MSEmod di solito ci aspettiamo un numero positivo. Nel tuo caso un numero negativo mostra che la variabile casuale ha funzionato meglio, il che dimostra che probabilmente la variabile non è sufficientemente predittiva, cioè non importante.

Ricordare che questa descrizione che ti ho dato è il livello alto, in realtà i due valori MSE vengono ridimensionati e viene calcolata la differenza percentuale. Ma la storia di alto livello è questa.

In forma algoritmo:

  1. modello Calcola MSE
  2. Per ogni variabile nel modello:
    • Permutare variabile
    • Calcolare nuovo modello MSE secondo permutazione variabile
    • Fai la differenza tra il modello MSE e il nuovo modello MSE
  3. raccogliere i risultati in una lista importanza
  4. variabili Classifica in base al valore del IncMSE%. Maggiore è il valore, meglio è

Spero sia chiaro ora!

+0

Grazie mille LyzandeR per la tua risposta dettagliata e chiara, Saluti, Ron – mql4beginner

+1

Felice di aver aiutato Ron :). Se vuoi approfondire puoi dare un'occhiata [qui] (http://www.stat.berkeley.edu/~breiman/RandomForests/cc_home.htm). Questo è dello stesso Breiman (l'inventore delle foreste casuali) e spiega esattamente come lavorano in un inglese semplice senza (un sacco di) formule matematiche. Questo è esattamente il riferimento al pacchetto rf utilizzato per l'implementazione. – LyzandeR

+0

Grazie, lo verificherò .. – mql4beginner