Zum Inhalt springen

Was ist Overfitting?

Overfitting (deutsch: Überanpassung) ist ein Begriff aus dem Bereich des Data Science und beschreibt die Eigenschaft eines Modells sich zu stark auf den Trainingsdatensatz anzupassen. Dadurch performt das Modell nur sehr schlecht auf neue, ungesehene Daten. Das Ziel eines Machine Learning Modells ist jedoch eine gute Generalisierung, sodass die Vorhersage auf neue Daten möglich wird.

Was ist Overfitting?

Der Begriff Overfitting wird im Zusammenhang mit Vorhersagemodellen genutzt, die zu spezifisch auf den Trainingsdatensatz angepasst sind und dadurch die Streuung der Daten mit erlernen. Dies passiert häufig, wenn das Modell eine zu komplexe Struktur hat für die zugrundeliegenden Daten. Das Problem ist dann, dass das trainierte Modell nur sehr schlecht generalisiert, also nur unzureichende Vorhersagen für neue, ungesehene Daten liefert. Die Performance auf dem Trainingsdatensatz hingegen war sehr gut, weshalb man von einer hohen Modellgüte ausgehen könnte.

Einige Faktoren können bereits frühzeitig auf eine drohende Überanpassung hindeuten:

  • Kleiner Datensatz: Wenn nur wenige einzelne Datensätze im Training vorhanden sind, ist die Wahrscheinlichkeit sehr hoch, dass diese einfach auswendig gelernt werden und viel zu wenige Informationen vorhanden sind, um eine zugrundliegende Struktur erlernen zu können. Umso problematischer wird es, umso mehr Trainingsparameter das Modell hat. Ein Neuronales Netzwerk beispielsweise besitzt auf jeder Hidden Layer eine Vielzahl von Parameter. Deshalb sollte man mit steigender Komplexität des Modell auch den Datensatz vergrößern.
  • Auswahl des Trainingsdatensatzes: Wenn die Auswahl der Datensätze bereits unausgewogen ist, ist die Wahrscheinlichkeit groß, dass das Modell diese trainiert und somit eine schlechte Generalisierung hat. Das Sample aus einer Population sollte immer zufällig getroffen werden, sodass es nicht zu einem Selection Bias kommt. Um eine Hochrechnung während einer Wahl zu erstellen, sollten nicht nur die Wähler an einem Wahllokal befragt werden, da diese nicht repräsentativ für das gesamte Land sind, sondern lediglich die Meinung in diesem Wahlbezirk vertreten.
  • Viele Trainingsepochen: Ein Modell trainiert mehrere Epochen und hat in jeder Epoche das Ziel, die Verlustfunktion weiter zu minimieren und dadurch die Qualität des Modells zu erhöhen. Ab einem gewissen Punkt kann es jedoch passieren, dass nur noch Verbesserungen in der Backpropagation erzielt werden können, indem sich mehr auf den Trainingsdatensatz angepasst wird.

Wie erkennt man Overfitting?

Leider gibt es keine zentrale Analyse, die mit Sicherheit ergibt, ob ein Modell overfitted oder nicht. Jedoch gibt es einige Parameter und Analysen, die Hinweise auf ein drohendes Overfitting liefern können. Die beste und einfachste Methode ist sich dazu die Fehlerkurve des Modells über die Iterations hinweg anzuschauen.

Overfitting – Analyse | Source: IBM

Wenn der Fehler im Trainingsdatensatz weiter sinkt, während jedoch der Fehler im Validierungsdatensatz wieder beginnt zu steigen, spricht das dafür, dass sich das Modell zu sehr an die Trainingsdaten anpasst und dadurch schlecht generalisiert. Eine gleiche Auswertung kann man auch mit dem Verlauf der Verlustfunktion machen.

Um einen solchen Grapfen aufzubauen, benötigt man das sogenannte Validation- oder Test-Set, also für das Modell ungesehene Daten. Falls der Datensatz groß genug ist, kann man dazu meist 20 – 30 % des Datensatzes abspalten und als Testdatensatz nutzen. Ansonsten gibt es auch die Möglichkeit die sogenannte k-Fold Cross-Validation zu nutzen, die etwas komplexer ist und dafür auch bei kleineren Datensätzen genutzt werden kann.

Der Datensatz wird dabei in k gleichgroße Blöcke unterteilt. Einer der Blocks wird zufällig gewählt und dient als Testdatensatz und die anderen Blöcke wiederum sind die Trainingsdaten. Im zweiten Trainingsschritt jedoch wird ein anderer Block als Testdaten definiert und der Prozess wiederholt sich.

Das Bild zeigt ein Beispiel der K-Fold Cross Validation.
K-Fold Cross-Validation

Die Anzahl der Blöcke k lässt sich beliebig wählen und in den meisten Fällen wird ein Wert zwischen 5 und 10 gewählt. Ein zu großer Wert führt zu einem weniger verzerrten Modell, jedoch steigt das Risiko des Overfittings. Ein zu kleiner k Wert führt zu einem stärker verzerrten Modell, da es dann eigentlich der Hold-Out Methode entspricht.

Wie kann man Overfitting verhindern?

Es gibt viele verschiedene Möglichkeiten, um das Overfitting zu verhindern oder zumindest die Wahrscheinlichkeit dafür zu verringern. Aus den folgenden Vorschlägen sollte in vielen Fällen bereits zwei ausreichen, um das Risiko für Overfitting gering zu halten:

  • Datensatz: Der Datensatz spielt eine sehr große Rolle bei der Vermeidung von Overfitting. Er sollte dabei so groß, wie nur möglich sein, und verschiedene Daten enthalten. Des Weiteren sollte genügend Zeit in den Aufbereitungsprozess der Daten geflossen sein. Wenn nämlich falsche oder fehlende Daten zu häufig vorkommen, steigt dadurch die Komplexität und das Risiko der Überanpassung steigt entsprechend. Mit einem sauberen Datensatz hingegen tut sich das Modell einfacher, die zugrundeliegende Struktur zu erkennen.
  • Data Augmentation: In vielen Anwendungen, wie beispielsweis der Bilderkennung, werden einzelne Datensätze genutzt und mit leichten Veränderungen dem Modell zusätzlich zum Trainieren gegeben. Bei diesen Änderungen kann es sich beispielsweise um eine schwarz-weiß Kopie eines Bilds handeln oder um denselben Text mit einigen Tippfehlern darin. Dadurch wird das Modell stabiler und lernt mit Datenvariationen umzugehen und unabhängiger vom ursprünglichen Trainingsdatensatz zu werden.
  • Stopping Rule: Beim Start eines Modells gibt man eine maximale Anzahl von Epochen an, nach denen das Training beendet ist. Zusätzlich kann es Sinn machen, das Training bereits frühzeitig zu beenden, beispielsweise wenn es über mehrere Epochen keinen wirklichen Fortschritt mehr macht (die Verlustfunktion nicht mehr weiter abnimmt) und somit die Gefahr besteht, dass das Modell ins Overfitting läuft. In TensorFlow lässt sich dafür ein eigener Callback definieren:
callback = tf.keras.callbacks.EarlyStopping(monitor='loss', patience=3)
  • Featureauswahl: Ein Datensatz enthält oft eine Vielzahl von Features, die als Input an das Modell gegeben werden. Doch nicht alle werden wirklich für die Vorhersage des richtigen Ergebnisses benötigt. Manche Features können sogar untereinander korreliert sein, also in Abhängigkeit zueinander stehen. Wenn eine Vielzahl von Features vorhanden, sollte mithilfe von geeigneten Algorithmen eine Vorauswahl getroffen werden. Ansonsten nimmt die Komplexität des Modells zu und das Risiko für Overfitting ist hoch.

Overfitting vs. Underfitting

Bei der Vermeidung von Overfitting muss man jedoch vorsichtig sein, da es auch in das andere Extrem, das sogenannte Underfitting, abdriften kann. Von Underfitting spricht man, wenn das Modell nicht in der Lage ist, aus den gegebenen Daten eine zugrundeliegende Struktur zu erkennen und dadurch auch schlechte Ergebnisse bei der Generalisierung liefert. Erkennbar ist Underfitting daran, dass der Trainingsfehler auf einem hohen Niveau stagniert und nicht mehr weiter abnimmt.

Eine solche Unteranpassung kann dann entstehen, wenn das Modell nicht ausreichend komplex ist, um die komplexe, zugrundliegende Struktur abbilden zu können. Ein weiteres Problem kann sein, dass wichtige Features im Datensatz fehlen, die benötigt werden, um den Zusammenhang zu errechnen.

Das solltest Du mitnehmen

  • Das Overfitting (deutsch: Überanpassung) ist ein Begriff aus dem Bereich des Data Science und beschreibt die Eigenschaft eines Modells sich zu stark auf den Trainingsdatensatz anzupassen.
  • Es ist meist daran erkennbar, dass der Fehler im Testdatensatz wieder zunimmt, während der Fehler im Trainingsdatensatz weiter abnimmt.
  • Man kann das Overfitting unter anderem dadurch verhindern, dass eine frühzeitige Stopping Rule einfügt oder im Vorhinein Features aus dem Datensatz entfernt, die mit anderen Features korreliert sind.

Andere Beiträge zum Thema Overfitting

close
Das Logo zeigt einen weißen Hintergrund den Namen "Data Basecamp" mit blauer Schrift. Im rechten unteren Eck wird eine Bergsilhouette in Blau gezeigt.

Verpass keine neuen Beiträge!

Wir versenden keinen Spam! Lies die Details gerne in unserer Datenschutzrichtlinie nach.

Cookie Consent mit Real Cookie Banner