Domande pratiche sull'ottimizzazione delle foreste casuali


65

Le mie domande riguardano le foreste casuali. Il concetto di questo bellissimo classificatore mi è chiaro, ma ci sono ancora molte domande pratiche sull'uso. Sfortunatamente, non sono riuscito a trovare alcuna guida pratica alla RF (ho cercato qualcosa come "Una guida pratica per l'addestramento delle macchine Boltzman limitate" di Geoffrey Hinton, ma per le foreste casuali!

Come si può sintonizzare la RF in pratica?

È vero che un numero maggiore di alberi è sempre migliore? Esiste un limite ragionevole (tranne la capacità comp. Ovviamente) per aumentare il numero di alberi e come stimarlo per un determinato set di dati?

Che dire della profondità degli alberi? Come scegliere quello ragionevole? Ha senso sperimentare alberi di diversa lunghezza in una foresta e qual è la guida per questo?

Ci sono altri parametri che vale la pena guardare quando si allena RF? Algos per la costruzione di singoli alberi può essere?

Quando dicono che le RF sono resistenti al sovradimensionamento, quanto è vero?

Apprezzerò eventuali risposte e / o collegamenti a guide o articoli che potrei aver perso durante la mia ricerca.


Per la messa a punto del perfoamnce, vedi anche SO: "Come migliorare le prestazioni randomForest"
smci,

Risposte:


43

Non sono una figura autorevole, quindi considera queste brevi note del professionista:

Più alberi è sempre meglio con rendimenti decrescenti. Gli alberi più profondi sono quasi sempre meglio soggetti a richiedere più alberi per prestazioni simili.

I due punti precedenti sono direttamente il risultato del compromesso di bias-varianza. Gli alberi più profondi riducono il pregiudizio; più alberi riduce la varianza.

L'iperparametro più importante è il numero di funzioni da testare per ciascuna divisione. Più funzioni inutili ci sono, più funzionalità dovresti provare. Questo deve essere sintonizzato. È possibile sintonizzarlo tramite le stime OOB se si desidera semplicemente conoscere le proprie prestazioni sui dati di allenamento e non esiste un gemellaggio (~ misure ripetute). Anche se questo è il parametro più importante, è ottimale, di solito è ancora abbastanza vicino ai valori di default suggeriti originali (sqrt (p) o (p / 3) per classificazione / regressione).

Ricerche abbastanza recenti mostrano che non è nemmeno necessario eseguire ricerche di divisione esaustive all'interno di una funzione per ottenere buone prestazioni. Basta provare alcuni punti di taglio per ogni funzione selezionata e andare avanti. Questo rende l'allenamento ancora più veloce. (~ Foreste / alberi estremamente casuali).


Un paio di altre note: in pratica confermo solitamente la convergenza confrontando le previsioni da una metà degli alberi all'altra. Per quanto riguarda il sovradimensionamento, è più una funzione di ciò che stai cercando di generalizzare. Non si esagereranno se ci si sta allenando su un campione rappresentativo, ma raramente è così che funziona davvero.
Shea Parkes,

I tuoi 'alberi più profondi = migliore, tutto il resto costante' sono veri per dati estremamente rumorosi con strutture di dipendenza che cambiano nel tempo, in cui le relazioni lineari sono le più robuste per non cambiare tra il set di addestramento e il set di test?
Jase,

Potrei vedere il potenziale per gli alberi più bassi di essere migliori se hai una situazione in cui dovresti imparare solo relazioni superficiali, ma vorrei davvero usare prove empiriche per dimostrarlo (e non ho tempo di lavorarci su). Se credi o hai la prova che le relazioni lineari sono le più resistenti, allora prenderei fortemente in considerazione qualcosa che non sia basato sugli alberi. Forse reti neurali con skip layer?
Shea Parkes,

Bene, diciamo che hai un set di dati con 3 funzionalità pertinenti e 100 funzionalità che sono rumore bianco e 50 punti dati. Ma non sai quali sono i rumori bianchi e quali sono rilevanti in anticipo, sai solo che i tuoi dati sono così rumorosi che è così. Chiaramente alberi estremamente bassi con una grande mtryè meglio, non sono necessarie prove o prove empiriche per vederlo.
Jase,

22
  • Numero di alberi : maggiore è il migliore: sì. Un modo per valutare e sapere quando fermarsi è monitorare il tasso di errore durante la costruzione della foresta (o qualsiasi altro criterio di valutazione che è possibile utilizzare) e rilevare quando converge. Potresti farlo sul set di apprendimento stesso o, se disponibile, su un set di test indipendente. Inoltre, va notato che il numero di nodi di test nei tuoi alberi è delimitato in alto dal numero di oggetti, quindi se hai molte variabili e non così tanti oggetti di addestramento, ti consigliamo vivamente una foresta più grande per aumentare il possibilità di valutare tutti i descrittori almeno una volta nella foresta.

  • Profondità dell'albero : esistono diversi modi per controllare la profondità degli alberi (limitare la profondità massima, limitare il numero di nodi, limitare il numero di oggetti necessari per la divisione, interrompere la divisione se la divisione non migliora sufficientemente l'adattamento, ... ). Il più delle volte, si consiglia di potare (limitare la profondità di) gli alberi se si hanno a che fare con dati rumorosi. Infine, puoi utilizzare i tuoi alberi completamente sviluppati per calcolare le prestazioni di alberi più corti in quanto si tratta di un "sottoinsieme" di quelli completamente sviluppati.

  • Quante funzionalità da testare su ciascun nodo : convalida incrociata delle tue esperienze con una vasta gamma di valori (compresi quelli consigliati), dovresti ottenere una curva delle prestazioni ed essere in grado di identificare un massimo indicando qual è il valore migliore per questo parametro + Risposta di Shea Parkes.

  • Shea Parkes ha menzionato gli alberi extra, ecco il documento originale che descrive in dettaglio il metodo: http://orbi.ulg.ac.be/bitstream/2268/9357/1/geurts-mlj-advance.pdf

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.