Esto no es necesariamente una respuesta a su pregunta. Solo pensamientos generales sobre la validación cruzada del número de árboles de decisión dentro de un bosque aleatorio.
Veo a muchas personas en kaggle y stackexchange validando de forma cruzada el número de árboles en un bosque aleatorio. También le pregunté a un par de colegas y me dijeron que es importante validarlos para evitar el sobreajuste.
Esto nunca tuvo sentido para mí. Dado que cada árbol de decisión se entrena de manera independiente, agregar más árboles de decisión debería hacer que su conjunto sea más y más robusto.
(Esto es diferente de los árboles que aumentan el gradiente, que son un caso particular de aumento de ada y, por lo tanto, existe un potencial de sobreajuste, ya que cada árbol de decisión está entrenado para pesar más los residuos).
Hice un experimento simple:
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()
No digo que estés cometiendo esta falacia de pensar que más árboles pueden causar un sobreajuste. Claramente no lo eres ya que has pedido un límite inferior. Esto es algo que me ha estado molestando por un tiempo, y creo que es importante tenerlo en cuenta.
(Anexo: Elementos de aprendizaje estadístico discute esto en la página 596, y está de acuerdo conmigo en esto. «Es cierto que aumentar B [B = número de árboles] no hace que la secuencia aleatoria del bosque se sobreajuste». El autor sí hace la observación de que "este límite puede sobreajustar los datos". En otras palabras, dado que otros hiperparámetros pueden conducir a un sobreajuste, crear un modelo robusto no lo rescata del sobreajuste. Debe prestar atención al validar de forma cruzada sus otros hiperparámetros. )
Para responder a su pregunta, agregar árboles de decisión siempre será beneficioso para su conjunto. Siempre lo hará más y más robusto. Pero, por supuesto, es dudoso que la reducción marginal de la varianza 0.00000001 valga el tiempo computacional.
Por lo tanto, su pregunta, según tengo entendido, es si de alguna manera puede calcular o estimar la cantidad de árboles de decisión para reducir la varianza del error por debajo de un cierto umbral.
Lo dudo mucho. No tenemos respuestas claras para muchas preguntas amplias en minería de datos, y mucho menos preguntas específicas como esa. Como escribió Leo Breiman (autor de bosques aleatorios), existen dos culturas en el modelado estadístico , y los bosques aleatorios son el tipo de modelo que, según él, tiene pocas suposiciones, pero también es muy específico de los datos. Por eso, dice, no podemos recurrir a la prueba de hipótesis, tenemos que ir con la validación cruzada de fuerza bruta.