私はscikit-learnを使用してランダムフォレストで実験しており、トレーニングセットでは素晴らしい結果を得ていますが、テストセットでは比較的悪い結果が得られています...
ここに私が解決しようとしている問題(ポーカーに触発された)があります:プレーヤーAのホールカード、プレーヤーBのホールカード、およびフロップ(3枚のカード)がある場合、どのプレーヤーが最高のハンドを持っていますか?数学的には、これは14個の入力(7枚のカード-それぞれに1つのランクと1つのスーツ)と1つの出力(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:])
使用するツリーの数に関係なく、トレーニングセットのパフォーマンスは、比較的大きなトレーニングセットと適度に少ない機能数にもかかわらず、テストセットよりもはるかに優れているようです...