Estoy experimentando con bosques aleatorios con scikit-learn y obtengo excelentes resultados de mi conjunto de entrenamiento, pero resultados relativamente pobres en mi conjunto de pruebas ...
Aquí está el problema (inspirado en el póker) que estoy tratando de resolver: Dadas las cartas de mano del jugador A, las cartas de mano del jugador B y un flop (3 cartas), ¿qué jugador tiene la mejor mano? Matemáticamente, esto es 14 entradas (7 cartas - un rango y un palo para cada una) y una salida (0 o 1).
Estos son algunos de mis resultados hasta ahora:
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%
Aquí está el código relevante utilizado:
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, independientemente del número de árboles utilizados, el rendimiento en el conjunto de entrenamiento es mucho mejor que en el conjunto de prueba, a pesar de un conjunto de entrenamiento relativamente grande y un número razonablemente pequeño de características ...