Ich experimentiere mit Scikit-Learn in zufälligen Wäldern und erhalte großartige Ergebnisse mit meinem Trainingssatz, aber relativ schlechte Ergebnisse mit meinem Testsatz ...
Hier ist das Problem (inspiriert vom Poker), das ich zu lösen versuche: Mit den Hole Cards von Spieler A, den Hole Cards von Spieler B und einem Flop (3 Karten), welcher Spieler hat das beste Blatt? Mathematisch sind dies 14 Eingänge (7 Karten - jeweils ein Rang und eine Farbe) und ein Ausgang (0 oder 1).
Hier sind einige meiner bisherigen Ergebnisse:
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%
Hier wird der relevante Code verwendet:
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:])
Unabhängig von der Anzahl der verwendeten Bäume scheint die Leistung des Trainingssatzes trotz eines relativ großen Trainingssatzes und einer relativ geringen Anzahl von Merkmalen viel besser zu sein als bei einem Testsatz.