Überanpassung, Bias und Varianz
Warum ein Modell auf den Trainingsdaten glänzen und im Betrieb versagen kann, wie man beides unterscheidet und was man je nach Diagnose tut.
Die Idee
Zwei Arten, falschzuliegen. Die erste: Sie zielen konsequent zwei Meter zu weit links. Das ist Bias, ein systematischer Fehler, den mehr Übung nicht behebt. Die zweite: Sie streuen wild um die Mitte. Das ist Varianz, und dagegen hilft mehr Übung sehr wohl.
Woran man beides erkennt
| Beobachtung | Diagnose | Gegenmittel |
|---|---|---|
| Training schlecht, Validierung schlecht | Bias, Unteranpassung | Größeres Modell, bessere Merkmale, länger trainieren |
| Training gut, Validierung schlecht | Varianz, Überanpassung | Mehr Daten, Regularisierung, kleineres Modell |
| Beides gut, Betrieb schlecht | Verteilungsverschiebung | Testsatz überprüfen, aktuelle Daten nachlegen |
Lernkurven lesen
Zwei Kurven über der Anzahl der Trainingsbeispiele: Trainingsfehler und Validierungsfehler.
- Beide Kurven treffen sich auf hohem Niveau: Bias. Mehr Daten helfen nicht.
- Große Lücke, Validierung fällt noch: Varianz. Mehr Daten helfen sofort.
- Große Lücke, Validierung flach: Varianz, aber Daten allein reichen nicht mehr.
- Trainingsfehler nahe null bei mittlerer Datenmenge: Auswendiglernen.
from sklearn.model_selection import learning_curve
from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import make_classification
import numpy as np
X, y = make_classification(n_samples=4000, n_features=25,
n_informative=6, random_state=0)
sizes, tr, va = learning_curve(
RandomForestClassifier(n_estimators=200, random_state=0),
X, y, train_sizes=np.linspace(0.1, 1.0, 6), cv=5, n_jobs=-1)
for n, a, b in zip(sizes, tr.mean(1), va.mean(1)):
print(f"{int(n):5d} Training {a:.3f} Validierung {b:.3f} Luecke {a-b:.3f}")Die Zerlegung
Der dritte Term ist die Obergrenze jeder erreichbaren Güte. Ihn zu schätzen, etwa über die Übereinstimmung zweier unabhängiger Annotatoren, ist die sinnvollste Vorarbeit vor jeder Modellwahl.
Doppelter Abstieg
Die klassische U-Kurve gilt für Modelle unterhalb der Interpolationsschwelle,
also solange Parameter < Datenpunkte. Jenseits davon steigt der Testfehler
zunächst stark an, erreicht bei Parameter ≈ Datenpunkte ein Maximum und fällt
danach erneut, oft unter das erste Minimum. Moderne Sprachmodelle operieren
dauerhaft rechts von dieser Schwelle, weshalb dort „kleineres Modell gegen
Überanpassung" der falsche Reflex ist.
Verteilungsverschiebung messen
Ein einfacher und harter Test: Trainiere einen Klassifikator, der unterscheidet, ob ein Datensatz aus dem Training oder aus dem Betrieb stammt. Erreicht er eine ROC-AUC deutlich über 0,5, unterscheiden sich die Verteilungen messbar, und jede Güteangabe aus der Validierung ist für den Betrieb wertlos. Siehe MLOps.
Passende Kurse und Quellen
Dropout
Zufälliges Abschalten von Neuronen als Regularisierung. Einfach, wirksam und bis heute im Einsatz.
Einfach, wirksam und bis heute im Einsatz; gut lesbar auch ohne tiefe Vorkenntnis.
Machine Learning Specialization
Der Kurs von Andrew Ng in überarbeiteter Fassung. Regression, Klassifikation, neuronale Netze und die Fehler, die in der Praxis tatsächlich passieren. Rechnen inbegriffen.
Kostenlos anzusehen, das Zertifikat kostet. Wer nur verstehen will, braucht es nicht.
MIT 6.036 Einführung in Machine Learning
Formaler als die meisten Onlinekurse, mit Herleitungen statt Rezepten. Passt gut nach einem praktischen Kurs, wenn die Frage nach dem Warum offen bleibt.
Für alle, denen nach einem Praxiskurs die Frage nach dem Warum offen geblieben ist.
Teachable Machine
Im Browser ein Bildklassifikationsmodell trainieren, ohne Code, in zehn Minuten. Zeigt Überanpassung schneller als jede Erklärung.
Für die erste Anschauung ohne Code; zeigt Überanpassung in zehn Minuten.
The Elements of Statistical Learning
Die statistische Sicht auf maschinelles Lernen, seit zwanzig Jahren die Referenz für Bias, Varianz und Modellwahl. Anspruchsvoll, frei als PDF.
Für alle mit statistischem Vorwissen; ohne dieses ist der Einstieg mühsam.