Sto sperimentando foreste casuali con scikit-learn e sto ottenendo grandi risultati dal mio set di allenamento, ma risultati relativamente scarsi sul mio set di test ...
Ecco il problema (ispirato al poker) che sto cercando di risolvere: date le carte coperte del giocatore A, le carte coperte del giocatore B e un flop (3 carte), quale giocatore ha la mano migliore? Matematicamente, si tratta di 14 input (7 carte - un valore e un seme per ciascuno) e un output (0 o 1).
Ecco alcuni dei miei risultati finora:
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%
Ecco il codice pertinente utilizzato:
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:])
Sembra che, indipendentemente dal numero di alberi utilizzati, le prestazioni sul set di allenamento sono molto migliori rispetto al set di test, nonostante un set di allenamento relativamente grande e un numero ragionevolmente piccolo di funzionalità ...