Eksperymentuję z losowymi lasami za pomocą scikit-learn i uzyskuję świetne wyniki mojego zestawu treningowego, ale stosunkowo słabe wyniki na moim zestawie testowym ...
Oto problem (inspirowany pokerem), który próbuję rozwiązać: biorąc pod uwagę karty własne gracza A, karty własne gracza B i flop (3 karty), który gracz ma najlepszą rękę? Matematycznie jest to 14 wejść (7 kart - jedna ranga i jeden kolor dla każdego) i jedno wyjście (0 lub 1).
Oto niektóre z moich dotychczasowych wyników:
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%
Oto odpowiedni zastosowany kod:
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:])
Wygląda na to, że niezależnie od liczby użytych drzew, wydajność na zestawie treningowym jest znacznie lepsza niż na zestawie testowym, pomimo stosunkowo dużego zestawu treningowego i stosunkowo niewielkiej liczby funkcji ...