Dies ist nicht unbedingt eine Antwort auf Ihre Frage. Nur allgemeine Gedanken zur Kreuzvalidierung der Anzahl von Entscheidungsbäumen in einem zufälligen Wald.
Ich sehe viele Leute in Kaggle und Stackexchange, die die Anzahl der Bäume in einem zufälligen Wald kreuzvalidieren. Ich habe auch ein paar Kollegen gefragt, die mir sagen, dass es wichtig ist, sie gegenseitig zu validieren, um eine Überanpassung zu vermeiden.
Das ergab für mich nie einen Sinn. Da jeder Entscheidungsbaum unabhängig trainiert wird, sollte das Hinzufügen weiterer Entscheidungsbäume Ihr Ensemble immer robuster machen.
(Dies unterscheidet sich von Gradienten-Boosting-Bäumen, die ein besonderer Fall von Ada-Boosting sind. Daher besteht die Möglichkeit einer Überanpassung, da jeder Entscheidungsbaum darauf trainiert ist, Residuen stärker zu gewichten.)
Ich habe ein einfaches Experiment gemacht:
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()
Ich sage nicht, dass Sie diesen Irrtum begehen, wenn Sie glauben, dass mehr Bäume zu einer Überanpassung führen können. Sie sind es eindeutig nicht, da Sie um eine Untergrenze gebeten haben. Dies ist nur etwas, das mich schon eine Weile nervt, und ich denke, es ist wichtig, daran zu denken.
(Nachtrag: Elemente des statistischen Lernens erörtert dies auf Seite 596 und stimmt mir darin zu. «Es ist sicher richtig, dass eine Erhöhung von B [B = Anzahl der Bäume] nicht zu einer Überanpassung der zufälligen Waldsequenz führt». Der Autor macht die Beobachtung, dass «diese Grenze die Daten überanpassen kann». Mit anderen Worten, da andere Hyperparameter zu einer Überanpassung führen können, rettet Sie das Erstellen eines robusten Modells nicht vor einer Überanpassung. Sie müssen bei der Kreuzvalidierung Ihrer anderen Hyperparameter aufpassen. )
Um Ihre Frage zu beantworten, ist das Hinzufügen von Entscheidungsbäumen für Ihr Ensemble immer von Vorteil. Es wird es immer robuster machen. Es ist jedoch zweifelhaft, ob die geringfügige Verringerung der Varianz um 0,00000001 die Rechenzeit wert ist.
Wie ich verstehe, ist Ihre Frage daher, ob Sie die Anzahl der Entscheidungsbäume irgendwie berechnen oder schätzen können, um die Fehlervarianz auf unter einen bestimmten Schwellenwert zu reduzieren.
Ich bezweifle es sehr. Wir haben keine klaren Antworten auf viele allgemeine Fragen im Data Mining, geschweige denn auf solche spezifischen Fragen. Wie Leo Breiman (der Autor von Zufallswäldern) schrieb, gibt es bei der statistischen Modellierung zwei Kulturen , und Zufallswälder sind die Art von Modell, von denen er sagt, dass sie nur wenige Annahmen haben, aber auch sehr datenspezifisch sind. Deshalb, sagt er, können wir nicht auf Hypothesentests zurückgreifen, sondern müssen uns für eine Brute-Force-Kreuzvalidierung entscheiden.