Я использую RandomForestClassifier, реализованный в пакете python sklearn, чтобы построить двоичную классификационную модель. Ниже результаты перекрестных проверок:Как решить переобучение в случайном лесу Python sklearn?
Fold 1 : Train: 164 Test: 40
Train Accuracy: 0.914634146341
Test Accuracy: 0.55
Fold 2 : Train: 163 Test: 41
Train Accuracy: 0.871165644172
Test Accuracy: 0.707317073171
Fold 3 : Train: 163 Test: 41
Train Accuracy: 0.889570552147
Test Accuracy: 0.585365853659
Fold 4 : Train: 163 Test: 41
Train Accuracy: 0.871165644172
Test Accuracy: 0.756097560976
Fold 5 : Train: 163 Test: 41
Train Accuracy: 0.883435582822
Test Accuracy: 0.512195121951
Я использую «Цена», чтобы предсказать «качество», которое является порядковым значением. В каждой перекрестной проверке имеется 163 учебных примера и 41 тестовый пример.
Видимо, переобучение происходит здесь. Итак, есть ли какие-либо параметры, предоставленные sklearn, для преодоления этой проблемы? Я нашел некоторые параметры here, например. min_samples_split и min_sample_leaf, но я не совсем понимаю, как их настроить.
Заранее благодарен!
Вы пробовали использовать ExtraTreesClassifier? Это поможет, если у вас есть несколько предикторов. Если вы тренируетесь только на одном предсказателе, и у вас всего 200 образцов, я думаю, что вы всегда будете иметь некоторую степень переобучения. – BrenBarn
Разница в точности теста велика, но ваш набор образцов очень мал. В случае, если вы хотели предложить _overfitting_ как большую разницу в точности поезда/теста, то есть ** не ** переоснащение: рассмотрите возможность использования ближайших соседей, вы всегда получите 0 для ошибки обучения. (так что точность поезда здесь не имеет смысла.) – Falcon
Вы говорите, что пытаетесь предсказать «качество», используя только «Цена»? Если это так, то случайный лес не лучший. Попробуйте классификатор логистической регрессии. – denson