Selezione delle caratteristiche e regolazione dei parametri con cursore per foresta casuale


12

Ho dati con alcune migliaia di funzionalità e voglio fare la selezione ricorsiva delle funzionalità (RFE) per rimuovere quelle non informative. Lo faccio con il cursore e RFE. Tuttavia, ho iniziato a pensare, se voglio ottenere la migliore misura di regressione (foresta casuale, ad esempio), quando devo eseguire la regolazione dei parametri ( mtryper RF)? Cioè, se ho capito Caret treni radiofrequenza al più volte su diverse funzionalità sottoinsiemi con mtry fisso. Suppongo che l'ottimale mtrydebba essere trovato al termine della selezione della funzione, ma il mtryvalore che il punto di inserimento utilizza influenza il sottoinsieme selezionato di funzioni? L'utilizzo del cursore con basso mtryè molto più veloce, ovviamente.

Spero che qualcuno possa spiegarmelo.


2
RF ha una robusta selezione di funzionalità integrate: non è necessario utilizzare RFE, quindi è possibile sintonizzare semplicemente Mtry ed eseguire l'operazione.
Evgenij

Risposte:


11

Una cosa che potresti voler esaminare sono foreste casuali regolarizzate, specificamente progettate per la selezione delle caratteristiche. Questo documento spiega il concetto e come differiscono dalle normali foreste casuali

Selezione delle caratteristiche tramite alberi regolarizzati

C'è anche un pacchetto CRAN RRF che si basa su randomForest che ti permetterà di implementarli facilmente in R. Ho avuto buona fortuna con questa metodologia.

Per quanto riguarda la tua domanda iniziale, l'unico consiglio che posso dare è che se hai molta collinearità, devi usare alberi di dimensioni inferiori. Ciò consente all'algoritmo di determinare l'importanza con meno interferenze dagli effetti di collinearità.


1

Potresti essere in grado di utilizzare caretFuncs qualcosa del genere:

myRFE <- caretFuncs
myRFE$summary <- twoClassSummary  (default is defaultSummary)

rctrl <- rfeControl(method='repeatedcv', repeats=5, number=10,
                   functions=myRFE)

tctrl <- trainControl(method = "cv",
                      classProbs = TRUE,
                      summaryFunction = twoClassSummary)

rfeObj = rfe(x,y,sizes=seq(1,ncol(x),2),
             rfeControl=rctrl,  
             # to be passed to train()
             method='rf',
             importance=T,  # do not forget this
             ntree=1000,
             metric = "ROC",
             tuneLength = 10,
             # mtry=c(1,3,5,50),
             # specify the exact mtry, or tuneLength
             # can auto truncate the grid to minimal sizes (with or without warning)
             # p <- ncol(x) ... if (mtry < 1 || mtry > p) warning("invalid try: reset to within valid range") try <- max(1, min(p, round(try))) 
             trControl=tctrl)

Inoltre, si può controllare il valSelRFpacchetto. Non sono sicuro di come differisca da regularized random forestmenzionato qui.

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.