Questa non è necessariamente una risposta alla tua domanda. Solo pensieri generali sulla convalida incrociata del numero di alberi decisionali all'interno di una foresta casuale.
Vedo molte persone in kaggle e stackexchange convalidare il numero di alberi in una foresta casuale. Ho anche chiesto a un paio di colleghi e mi hanno detto che è importante convalidarli in modo incrociato per evitare un eccesso di adattamento.
Questo non ha mai avuto senso per me. Poiché ogni albero decisionale viene addestrato in modo indipendente, l'aggiunta di più alberi decisionali dovrebbe rendere il tuo gruppo sempre più robusto.
(Ciò è diverso dagli alberi con incremento gradiente, che sono un caso particolare di potenziamento degli ada, e quindi esiste un potenziale di sovradimensionamento poiché ogni albero decisionale è addestrato per pesare i residui più pesantemente.)
Ho fatto un semplice esperimento:
from sklearn.datasets import load_digits
from sklearn.ensemble import RandomForestClassifier
from sklearn.grid_search import GridSearchCV
import numpy as np
import matplotlib.pyplot as plt
plt.ioff()
df = load_digits()
X = df['data']
y = df['target']
cv = GridSearchCV(
RandomForestClassifier(max_depth=4),
{'n_estimators': np.linspace(10, 1000, 20, dtype=int)},
'accuracy',
n_jobs=-1,
refit=False,
cv=50,
verbose=1)
cv.fit(X, y)
scores = np.asarray([s[1] for s in cv.grid_scores_])
trees = np.asarray([s[0]['n_estimators'] for s in cv.grid_scores_])
o = np.argsort(trees)
scores = scores[o]
trees = trees[o]
plt.clf()
plt.plot(trees, scores)
plt.xlabel('n_estimators')
plt.ylabel('accuracy')
plt.savefig('trees.png')
plt.show()
Non sto dicendo che stai commettendo questo errore nel pensare che più alberi possano causare un eccesso di adattamento. Chiaramente non lo sei poiché hai chiesto un limite inferiore. Questo è solo qualcosa che mi ha infastidito per un po 'e penso che sia importante tenere a mente.
(Addendum: Elements of Statistical Learning discute di questo a pagina 596, ed è d'accordo su questo con me. «È certamente vero che l'aumento di B [B = numero di alberi] non causa un eccesso di sequenza casuale delle foreste». L'autore fa l'osservazione che «questo limite può sovrautilizzare i dati». In altre parole, poiché altri iperparametri possono portare a un eccesso di adattamento, la creazione di un modello robusto non ti salva dall'eccessivo equipaggiamento. )
Per rispondere alla tua domanda, l'aggiunta di alberi decisionali sarà sempre utile per il tuo gruppo. Lo renderà sempre più robusto. Ma, naturalmente, è dubbio se la riduzione marginale di 0,00000001 nella varianza valga il tempo di calcolo.
La tua domanda quindi, come ho capito, è se puoi in qualche modo calcolare o stimare la quantità di alberi decisionali per ridurre la varianza dell'errore al di sotto di una certa soglia.
Ne dubito moltissimo. Non abbiamo risposte chiare a molte domande di ampia portata nel data mining, domande molto meno specifiche come questa. Come ha scritto Leo Breiman (l'autore di foreste casuali), ci sono due culture nella modellistica statistica , e le foreste casuali sono il tipo di modello che dice ha pochi presupposti, ma è anche molto specifico per i dati. Ecco perché, dice, non possiamo ricorrere al test delle ipotesi, dobbiamo procedere con la validazione incrociata della forza bruta.