Estoy experimentando con los bosques aleatorios con scikit-learn y estoy obteniendo grandes resultados de mi conjunto de entrenamiento, pero relativamente pobres resultados en mi conjunto de prueba ...
He aquí el problema (inspirado en el póquer) que intento resolver: Dadas las cartas ocultas del jugador A, las cartas ocultas del jugador B y un flop (3 cartas), ¿qué jugador tiene la mejor mano? Matemáticamente, se trata de 14 entradas (7 cartas - un rango y un palo para cada uno) 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%
Este es el código 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 pruebas, a pesar de un conjunto de entrenamiento relativamente grande y un número razonablemente pequeño de características...