J'expérimente avec des forêts aléatoires avec scikit-learn et j'obtiens d'excellents résultats de mon ensemble d'entraînement, mais des résultats relativement médiocres sur mon ensemble de test ...
Voici le problème (inspiré du poker) que j'essaie de résoudre: étant donné les cartes fermées du joueur A, les cartes fermées du joueur B et un flop (3 cartes), quel joueur a la meilleure main? Mathématiquement, cela fait 14 entrées (7 cartes - un rang et une couleur pour chacune) et une sortie (0 ou 1).
Voici certains de mes résultats jusqu'à présent:
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%
Voici le code pertinent utilisé:
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:])
Il semble que quel que soit le nombre d'arbres utilisés, les performances sur l'ensemble d'entraînement sont bien meilleures que sur l'ensemble de test, malgré un ensemble d'entraînement relativement important et un nombre raisonnablement petit de fonctionnalités ...