Come evitare l'adattamento eccessivo nella foresta casuale?


11
  1. Voglio evitare il sovradimensionamento nella foresta casuale. A questo proposito, intendo utilizzare mtry, nodesize, maxnodi ecc. Potreste aiutarmi, per favore, a scegliere i valori per questi parametri? Sto usando R.

  2. Inoltre, se possibile, per favore dimmi come posso usare la validazione incrociata di k-fold per la foresta casuale (in R).

Risposte:


7

Rispetto ad altri modelli, le foreste casuali hanno meno probabilità di adattarsi eccessivamente, ma è ancora qualcosa che si desidera fare uno sforzo esplicito per evitare. L'ottimizzazione dei parametri del modello è sicuramente un elemento per evitare un eccesso di adattamento, ma non è l'unico. In effetti direi che le tue caratteristiche di allenamento hanno maggiori probabilità di portare a un overfitting rispetto ai parametri del modello, specialmente con le foreste casuali. Quindi penso che la chiave stia davvero avendo un metodo affidabile per valutare il tuo modello per verificare il sovra-adattamento più di ogni altra cosa, il che ci porta alla tua seconda domanda.

Come accennato in precedenza, l'esecuzione della convalida incrociata ti consentirà di evitare un eccesso di adattamento. La scelta del modello migliore in base ai risultati del CV porterà a un modello che non si è adattato troppo, il che non è necessariamente il caso di un errore fuori dal comune. Il modo più semplice per eseguire CV in R è con il caretpacchetto. Di seguito è riportato un semplice esempio:

> library(caret)
> 
> data(iris)
> 
> tr <- trainControl(method = "cv", number = 5)
> 
> train(Species ~ .,data=iris,method="rf",trControl= tr)
Random Forest 

150 samples
  4 predictor
  3 classes: 'setosa', 'versicolor', 'virginica' 

No pre-processing
Resampling: Cross-Validated (5 fold) 

Summary of sample sizes: 120, 120, 120, 120, 120 

Resampling results across tuning parameters:

  mtry  Accuracy  Kappa  Accuracy SD  Kappa SD  
  2     0.96      0.94   0.04346135   0.06519202
  3     0.96      0.94   0.04346135   0.06519202
  4     0.96      0.94   0.04346135   0.06519202

Accuracy was used to select the optimal model using  the largest value.
The final value used for the model was mtry = 2. 

Grazie mille per la risposta e il consiglio. Vuoi solo sapere quanto è diverso l'utilizzo di un pacchetto di cursore per la selezione delle funzionalità rispetto alla selezione di variabili importanti utilizzando l'algoritmo randomForest?
Arun,

Sembra una domanda diversa da pubblicare: le differenze sono enormi dato che si eseguono cose come la selezione ricorsiva di funzionalità utilizzando qualsiasi algoritmo di propria scelta nel punto di inserimento.
David,

@David Che cosa intendi con "che non è necessariamente il caso di qualcosa come un errore out of the bag"? Vuoi dire che la stima fuori borsa non è un buon modo per evitare un eccesso di adattamento?
Pierre,

5

@ xof6 è corretto nel senso che maggiore è la profondità del modello, più tende a sovralimentarsi, ma volevo aggiungere altri parametri che potrebbero esserti utili. Non so quale pacchetto stai usando con R e non conosco affatto R, ma penso che ci debbano essere controparti di questi parametri implementati lì.

Numero di alberi: maggiore è questo numero, minore è la probabilità che la foresta si allesti. Ciò significa che mentre ogni albero decisionale sta imparando alcuni aspetti dei dati di addestramento, si ottengono più opzioni tra cui scegliere, per così dire. Numero di funzioni: questo numero rappresenta il numero di funzioni apprese da ogni singolo albero. Man mano che questo numero aumenta, gli alberi diventano sempre più complicati, quindi stanno imparando modelli che potrebbero non essere presenti nei dati di test. Ci vorrà qualche esperimento per trovare il giusto valore, ma tale è l'apprendimento automatico. Sperimenta anche la profondità generale, come abbiamo già detto!


4

Ecco un bel link su quello su stackexchange /stats/111968/random-forest-how-to-handle-overfitting , tuttavia la mia esperienza generale è maggiore è la profondità del modello, più tende troppo vestito.


Questo ha senso con un singolo classificatore ad albero. Tuttavia, ho letto su questi forum che le foreste casuali sono protette dall'adattamento eccessivo e che gli alberi dovrebbero essere coltivati ​​completamente (cioè nodesize = 1 per la classificazione).
Seanosapien,

0

mtryDiminuisco sempre finché l'errore sul set di dati del treno non aumenta, quindi riduco la dimensione dei nodi e la profondità fino a quando la differenza tra errore sul treno e il set di dati si arresta per diminuire

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.