Estou experimentando florestas aleatórias com o scikit-learn e estou obtendo ótimos resultados do meu conjunto de treinamento, mas resultados relativamente ruins no meu conjunto de testes ...
Aqui está o problema (inspirado no poker) que estou tentando resolver: Dadas as cartas do jogador A, as cartas do jogador B e o flop (3 cartas), qual jogador tem a melhor mão? Matematicamente, são 14 entradas (7 cartões - um rank e um naipe para cada) e uma saída (0 ou 1).
Aqui estão alguns dos meus resultados até agora:
Training set size: 600k, test set size: 120k, number of trees: 25
Success rate in training set: 99.975%
Success rate in testing set: 90.05%
Training set size: 400k, test set size: 80k, number of trees: 100
Success rate in training set: 100%
Success rate in testing set: 89.7%
Training set size: 600k, test set size: 120k, number of trees: 5
Success rate in training set: 98.685%
Success rate in testing set: 85.69%
Aqui está o código relevante usado:
from sklearn.ensemble import RandomForestClassifier
Forest = RandomForestClassifier(n_estimators = 25) #n_estimator varies
Forest = Forest.fit(inputs[:trainingSetSize],outputs[:trainingSetSize])
trainingOutputs = Forest.predict(inputs[:trainingSetSize])
testOutputs = Forest.predict(inputs[trainingSetSize:])
Parece que, independentemente do número de árvores usadas, o desempenho no conjunto de treinamento é muito melhor do que no conjunto de testes, apesar de um conjunto de treinamento relativamente grande e de um número razoavelmente pequeno de recursos ...