Esta não é necessariamente uma resposta para sua pergunta. Apenas pensamentos gerais sobre a validação cruzada do número de árvores de decisão em uma floresta aleatória.
Vejo muitas pessoas no kaggle e na stackexchange validando cruzadamente o número de árvores em uma floresta aleatória. Também perguntei a alguns colegas e eles me disseram que é importante validá-los de forma cruzada para evitar ajustes excessivos.
Isso nunca fez sentido para mim. Como cada árvore de decisão é treinada de forma independente, a adição de mais árvores de decisão deve tornar seu conjunto cada vez mais robusto.
(Isso é diferente das árvores de aumento de gradiente, que são um caso particular de aumento de ada e, portanto, há potencial de sobreajuste, pois cada árvore de decisão é treinada para ponderar os resíduos com mais força.)
Eu fiz um experimento simples:
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()
Não estou dizendo que você está cometendo essa falácia de pensar que mais árvores podem causar super ajuste. Você claramente não o é desde que pediu um limite inferior. Isso é apenas algo que me incomoda há algum tempo, e acho importante ter em mente.
(Adendo: Elements of Statistical Learning discute isso na página 596, e concorda comigo comigo. «É certamente verdade que o aumento de B [B = número de árvores] não faz com que a sequência aleatória da floresta se ajuste demais». O autor faz a observação de que "esse limite pode superestimar os dados". Em outras palavras, como outros hiperparâmetros podem levar ao super ajuste, a criação de um modelo robusto não o resgata do super ajuste. Você deve prestar atenção ao validar cruzadamente seus outros hiper parâmetros. )
Para responder sua pergunta, adicionar árvores de decisão sempre será benéfico para o seu conjunto. Sempre o tornará cada vez mais robusto. Mas, é claro, é duvidoso que a redução marginal de 0,00000001 na variância valha o tempo computacional.
Sua pergunta, portanto, como eu entendo, é se você pode, de alguma forma, calcular ou estimar a quantidade de árvores de decisão para reduzir a variação do erro abaixo de um determinado limite.
Eu duvido muito. Não temos respostas claras para muitas perguntas amplas na mineração de dados, muito menos para perguntas específicas como essa. Como escreveu Leo Breiman (o autor de florestas aleatórias), existem duas culturas na modelagem estatística , e florestas aleatórias são o tipo de modelo que ele diz ter poucas suposições, mas também é muito específico para os dados. É por isso que, diz ele, não podemos recorrer a testes de hipóteses, precisamos seguir a validação cruzada de força bruta.