Il numero ottimale di alberi in una foresta casuale dipende dal numero di predittori?


46

Qualcuno può spiegare perché abbiamo bisogno di un gran numero di alberi nella foresta casuale quando il numero di predittori è grande? Come possiamo determinare il numero ottimale di alberi?

Risposte:


70

La foresta casuale utilizza il bagging (raccolta di un campione di osservazioni anziché tutte) e il metodo subspaziale casuale (la selezione di un campione di funzionalità anziché tutte, in altre parole, il bagging degli attributi ) per far crescere un albero. Se il numero di osservazioni è grande, ma il numero di alberi è troppo piccolo, allora alcune osservazioni saranno previste solo una volta o addirittura per niente. Se il numero di predittori è elevato ma il numero di alberi è troppo piccolo, alcune funzionalità possono (teoricamente) mancare in tutti i sottospazi utilizzati. Entrambi i casi comportano la riduzione del potere predittivo di foreste casuali. Ma l'ultimo è un caso piuttosto estremo, poiché la selezione del sottospazio viene eseguita su ciascun nodo.

Durante la classificazione la dimensionalità del sottospazio è (piuttosto piccola, è il numero totale di predittori) per impostazione predefinita, ma un albero contiene molti nodi. Durante la regressione, la dimensionalità del sottospazio è (abbastanza grande) per impostazione predefinita, sebbene un albero contenga meno nodi. Quindi il numero ottimale di alberi in una foresta casuale dipende dal numero di predittori solo in casi estremi.ppp/3

La pagina ufficiale dell'algoritmo afferma che la foresta casuale non si adatta eccessivamente e puoi usare tutti gli alberi che vuoi. Ma Mark R. Segal (14 aprile 2004. "Benchmark sull'apprendimento automatico e regressione casuale delle foreste". Centro per la bioinformatica e la biostatistica molecolare) ha scoperto che si adatta a set di dati rumorosi. Quindi, per ottenere il numero ottimale, puoi provare ad addestrare una foresta casuale su una griglia di ntreeparametri (semplice, ma che consuma più CPU) o costruire una foresta casuale con molti alberi con keep.inbag, calcolare i tassi di errore out-of-bag (OOB) per i primi alberi (dove cambia da a ) e traccia il tasso di errore OOB rispetto al numero di alberi (più complesso, ma che consuma meno CPU).nn1ntree


-2

Di conseguenza a questo articolo

Suggeriscono che una foresta casuale dovrebbe avere un numero di alberi tra 64 e 128 alberi . Con ciò, dovresti avere un buon equilibrio tra ROC AUC e tempo di elaborazione.


10
Sembra strano che non ci sia dipendenza nei loro risultati dal numero di funzionalità nel set di dati ...
naught101

-5

voglio aggiungere qualcosa se hai più di 1000 funzioni e 1000 righe che non puoi semplicemente prendere il numero di albero dell'albero.

il mio suggerimento è necessario rilevare prima il numero di CPU e RAM prima di provare ad avviare la convalida incrociata per trovare il rapporto tra loro e il numero di albero

se usi sikit learn in python hai la possibilità n_jobs=-1di usare tutto il processo ma il costo di ogni core richiede di ricopiare una copia dei dati dopo che puoi tris questa formula

ntree = sqrt (numero di riga * numero di colonne) / numberofcpu


6
Penso che sia necessario modificarlo per fornire prove e giustificazioni per le tue dichiarazioni.
mdewey,
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.