1

Ich implementierte ein Modell, in dem ich Logistische Regression als Klassifikator benutze und ich wollte die Lernkurven sowohl für das Training als auch für die Testsätze aufzeichnen, um zu entscheiden, was als nächstes zu tun ist, um mein Modell zu verbessern.Lernkurven - Warum beginnt die Trainingsgenauigkeit so hoch, dann plötzlich fallen?

Nur um Ihnen einige Informationen zu geben, um die Lernkurve zu plotten Ich definierte eine Funktion, die ein Modell, eine Pre-Split-Datensatz (trainieren/Test X und Y-Arrays, NB: mit train_test_split Funktion), eine Bewertungsfunktion als Eingabe und iteriert durch das Dataset-Training auf n exponentiell beabstandeten Teilmengen und gibt die Lernkurven zurück.

Meine Ergebnisse in das unten stehende Bild sind enter image description here

Ich frage mich, warum die Genauigkeit Ausbildung so hoch starten, starten Sie dann plötzlich fallen, dann wieder steigen, da steigt Trainingssatz Größe? Und umgekehrt für die Testgenauigkeit. Ich dachte extrem gute Genauigkeit und der Absturz war wegen einiger Geräusche aufgrund kleiner Datensätze am Anfang und dann, als die Datensätze konsistenter wurden, begann es zu steigen, aber ich bin mir nicht sicher. Kann jemand das erklären?

Und schließlich, können wir davon ausgehen, dass diese Ergebnisse eine geringe Varianz/moderate Bias (70% Genauigkeit in meinem Kontext ist nicht so schlecht) bedeutet, und um mein Modell zu verbessern muss ich auf Ensemble-Methoden oder Extreme Feature Engineering zurückgreifen?

Antwort

3

Ich denke, was passiert, sind Sie überarbeiten die Trainingsbeispiele, wenn der Datensatz klein ist (sehr hohe Trainingsgenauigkeit, geringe Testgenauigkeit). Wenn Sie die Dataset-Größe vergrößern, beginnt Ihr Klassifizierer mit generalize besser und erhöht so die Erfolgsrate im Test-Dataset.

Nach 10^3-Datensatz scheint die Genauigkeit bei 70% einpendeln, was darauf schließen lässt Sie die Ausbildung und underfitting den Test-Datenmenge zwischen Überanpassung eine gute Balance erreicht

+0

Vielen Dank für Ihre Meinung. Denkst du, dass ein Tuning wie Extreme Feature Engineering oder Ensemble-Methoden mir helfen würde, die Genauigkeit zu erhöhen? Oder vielleicht habe ich die Genauigkeitsgrenze aufgrund des Rauschens der Daten erreicht (irreversibler Fehler). – DiamondDogs95

+0

@ DiamondDogs95 Hallo! Leider ist es schwer zu sagen, ohne zu wissen, wie die Daten aussehen (Anwendungsdomäne, Features usw.) – bakkal

0

Soweit mein Verständnis geht, Ihre Lernkurven weisen auf ein Szenario mit hoher Varianz hin. Die Genauigkeit für das Trainingssatz beginnt in der Regel hoch, da komplexe Modelle normalerweise eine kleine Anzahl von Proben gut aufnehmen können. Wenn die Anzahl der Proben zunimmt, können selbst komplexe Modelle die Klassen nicht mehr perfekt trennen, so dass die Genauigkeit abnimmt.

Sie haben das Validierungs-Dataset "test" aufgerufen, es wird jedoch normalerweise als Validierung bezeichnet. Die Tatsache, dass die Datenerfassung des Zug- und Validierungsdatensatzes und dann das Plateau bei steigender Stichprobenanzahl zunimmt, zeigt an, dass die beste Leistung für diese Modellkonfiguration gefunden wurde. Das Erhalten von mehr Beispieldaten wird nicht helfen. Wenn Sie die Genauigkeit verbessern möchten, müssen Sie einen Weg finden, Verzerrungen zu reduzieren, was normalerweise bedeutet, dass Sie Ihre Modellierungsparameter anpassen oder einen anderen Lernalgorithmus verwenden.