Risposte:
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.
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 ntree
parametri (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).ntree
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.
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=-1
di 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