Wie löse ich overfitting in random forest von Python sklearn?
Ich bin mit RandomForestClassifier in python implementiert sklearn Paket zu bauen, eine binäre Klassifikation-Modell. Das ist unten die Ergebnisse der cross-Validierungen:
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
Ich bin mit "Preis" - Funktion, um vorherzusagen, "Qualität", die einen ordinalen Wert. In jedem Kreuz-Validierung, es gibt 163-training Beispiele und 41 test Beispiele.
Offenbar overfitting Auftritt hier. So ist es keine Parameter zur Verfügung gestellt von sklearn kann verwendet werden, um dieses problem zu überwinden? Ich fand einige Parameter hierz.B. min_samples_split und min_sample_leaf, aber ich verstehe nicht ganz, wie Sie zu Stimmen.
Vielen Dank im Voraus!
InformationsquelleAutor der Frage Munichong | 2013-12-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Stimme ich mit @Falcon w.r.t. die dataset-Größe. Es ist wahrscheinlich, dass das Haupt-problem ist die geringe Größe des Datensatzes. Wenn möglich, ist die beste Sache, die Sie tun können, ist erhalten, mehr Daten, mehr Daten (in der Regel) desto weniger wahrscheinlich ist es zu overfit, als zufällige Muster, die erscheinen, predictive start zu bekommen ertrunken, wie die dataset-Größe erhöht.
Sagte, ich würde Blick auf die folgende params:
Hinweis: wenn Sie diese Arbeit wissenschaftlich sein. Verwenden Sie 3-datasets, ein Trainings-set, eine separate 'Entwicklung' dataset optimieren Sie Ihre Parameter und test-set, dass die tests auf das endgültige Modell, mit den optimalen Parametern. Ändern Sie nur einen parameter zu einer Zeit und bewerten das Ergebnis. Oder Experimentieren Sie mit den sklearn gridsearch-Algorithmus zur Suche in diese Parameter alle auf einmal.
InformationsquelleAutor der Antwort Simon