Esiste una formula o una regola per determinare il sampSize corretto per un randomForest?


13

Sto giocando con un randomForest e ho scoperto che generalmente aumentare il sampSize porta a prestazioni migliori. Esiste una regola / formula / ecc. Che suggerisce quale dovrebbe essere il sampSize ottimale o è una cosa di prova ed errore? Immagino un altro modo di esprimerlo; quali sono i miei rischi di una dimensione del campione troppo piccola o troppo grande (overfitting?)?


Questa domanda si riferisce all'implementazione R della foresta casuale nel randomForestpacchetto. La funzione randomForestha un parametro sampSizeche è descritto nella documentazione come

Dimensioni del campione da disegnare. Per la classificazione, se sampsize è un vettore della lunghezza del numero di strati, il campionamento viene stratificato per strati e gli elementi di sampsize indicano i numeri da trarre dagli strati.

Risposte:


21

In generale, la dimensione del campione per una foresta casuale funge da controllo sul "grado di casualità" coinvolto, e quindi come un modo per regolare il compromesso di bias varianza. Aumentando la dimensione del campione si ottiene una foresta "meno casuale" e quindi si tende a sovrautilizzare. Diminuendo la dimensione del campione si aumenta la variazione dei singoli alberi all'interno della foresta, evitando l'adattamento eccessivo, ma generalmente a scapito delle prestazioni del modello. Un utile effetto collaterale è che dimensioni del campione inferiori riducono il tempo necessario per addestrare il modello.

La consueta regola empirica per la migliore dimensione del campione è un "campione bootstrap", un campione di dimensioni uguali all'insieme di dati originale, ma selezionato con sostituzione, quindi alcune righe non sono selezionate e altre sono selezionate più di una volta. Questo in genere fornisce prestazioni quasi ottimali ed è il valore predefinito nell'implementazione R standard. Tuttavia, è possibile che nelle applicazioni del mondo reale la regolazione della dimensione del campione possa migliorare le prestazioni. In caso di dubbi, selezionare la dimensione del campione appropriata (e altri parametri del modello) utilizzando la convalida incrociata.


2

Ho gestito 4500 foreste casuali durante la notte con alcune impostazioni di parametri casuali:

Problema di regressione in Ysignal = x1^2+sin(x2*pi) + x3 * x4 + x5 cui qualsiasi xcampione viene campionato indipendentemente da una distribuzione normale, sd = 1, mean = 1

Ytotal = Ysignal + Yerror

dove Yerror = rnorm(n.observations,sd=sd(Ysignal))*noise.factor

theoretical.explainable.variance"TEV" = var(Ysignal= / var(Ytotal)

randomForest.performance = explained.variance(OOB cross-validation) / TEV

i set di dati sono stati campionati dal problema di regressione e il rumore aggiunto n.obsera un numero casuale compreso tra 1000 e 5000 n.extra.dummy.variablestra 1 e 20

ntree sempre 1000

sample_replacement sempre true

mtryè da 5 a 25, limitato da n.obs noise.factor0 a 9

samplesize.ratio un numero casuale compreso tra il 10% e il 100%, la dimensione del rapporto di ciascun bootstrap

tutti i modelli sono stati addestrati come rfo = randomForest(x=X, y=Ytotal, <more args>)

il randomForest.performance, la sua capacità di spiegare la frazione più alta degli TEVaumenti in generale quando si samplesizeabbassa quando TEVè inferiore al 50% e diminuisce quando TEVè superiore al 50%.

Pertanto, se i tuoi randomForest-modelfitrapporti, ad esempio il 15%, spiegano la varianza di OOB-CV, e questa è una precisione accettabile del modello per te, allora puoi probabilmente modificare le prestazioni un po 'più in alto abbassando sampsizea un terzo del numero di osservazioni, dato ntree > 1000.

Morale : per dati molto rumorosi è meglio de-correlare gli alberi piuttosto che ridurre la distorsione crescendo alberi di dimensioni massime.


1

Affinché le foreste casuali funzionino anche nei nuovi dati come nei dati di addestramento, la dimensione del campione richiesta è enorme, spesso 200 volte il numero di funzionalità candidate . Vedi qui .


2
Dr. Harrell, penso che OP stia chiedendo le dimensioni del ricampionamento utilizzato per costruire ogni singolo albero, piuttosto che le dimensioni totali del set di dati.
Sycorax dice di reintegrare Monica il
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.