Я експериментую з випадковими лісами з scikit-learn, і я отримую чудові результати свого навчального набору, але порівняно погані результати на моєму тестовому наборі ...
Ось проблема (натхненна покером), яку я намагаюся вирішити: Враховуючи дірові карти гравця A, картки гравців B з дірками та флоп (3 карти), який гравець має найкращу руку? Математично це 14 входів (7 карток - один ранг і один костюм на кожну) і один вихід (0 або 1).
Ось кілька моїх результатів поки що:
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%
Тут використовується відповідний код:
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:])
Схоже, що незалежно від кількості використовуваних дерев, продуктивність на тренувальному наборі набагато краща, ніж на тестовому наборі, незважаючи на відносно великий набір тренувань та досить невелику кількість функцій ...