Praxiseinstieg Machine Learning mit Scikit-Learn, Keras und TensorFlow. Aurélien Géron
den Validierungsdaten an. Wenn das Modell auf sehr wenigen Datenpunkten trainiert wird, kann es nicht anständig verallgemeinern, weswegen der Validierungsfehler zu Beginn recht groß ist. Sobald das Modell weitere Trainingsdaten kennenlernt, sinkt der Validierungsfehler allmählich. Allerdings kann auch hier eine Gerade irgendwann die Daten nicht gut modellieren, daher erreicht der Fehler ein Plateau in der Nähe der zweiten Kurve.
Abbildung 4-15: Lernkurven
Diese Lernkurven sind für ein Modell typisch, bei dem Underfitting vorliegt. Beide Kurven erreichen ein Plateau; sie liegen nah beieinander und recht weit oben.
|
Bei Underfitting der Trainingsdaten verbessert sich Ihr Modell durch zusätzliche Trainingsdaten nicht. Sie benötigen ein komplexeres Modell oder müssen bessere Merkmale finden. |
Betrachten wir nun die Lernkurven eines polynomiellen Modells 10. Grades auf den gleichen Daten (Abbildung 4-16):
from sklearn.pipeline import Pipeline
polynomial_regression = Pipeline([
("poly_features", PolynomialFeatures(degree=10, include_bias=False)),
("lin_reg", LinearRegression()),
])
plot_learning_curves(polynomial_regression, X, y)
Diese Lernkurven erinnern ein wenig an die vorherigen, es gibt aber zwei sehr wichtige Unterschiede:
Der Fehler auf den Trainingsdaten ist viel geringer als beim Modell mit der linearen Regression.
Es gibt eine Lücke zwischen den Kurven. Das bedeutet, dass das Modell auf den Trainingsdaten deutlich besser abschneidet als auf den Validierungsdaten. Dies ist die Handschrift eines Modells mit Overfitting. Wenn Sie allerdings einen deutlich größeren Datensatz verwendeten, würden sich die zwei Kurven weiter annähern.
Abbildung 4-16: Lernkurven für ein polynomielles Modell 10. Grades
|
Eine Möglichkeit, ein Modell mit Overfitting zu verbessern, ist, so lange zusätzliche Trainingsdaten bereitzustellen, bis der Validierungsfehler den Trainingsfehler erreicht. |
Das Gleichgewicht zwischen Bias und Varianz
Ein wichtiges theoretisches Ergebnis aus der Statistik und dem Machine Learning ist, dass sich der Verallgemeinerungsfehler eines Modells als Summe dreier sehr unterschiedlicher Fehler ausdrücken lässt:
Bias
Dieser Teil des Verallgemeinerungsfehlers wird durch falsche Annahmen verursacht, etwa die Annahme, dass die Daten linear sind, obwohl sie sich quadratisch verhalten. Ein Modell mit hohem Bias wird die Trainingsdaten vermutlich underfitten.8
Varianz
Dieser Teil kommt durch übermäßige Empfindlichkeit des Modells für kleine Variationen in den Trainingsdaten zustande. Ein Modell mit vielen Freiheitsgraden (wie etwa ein höhergradiges Polynom) hat vermutlich eine hohe Varianz und overfittet daher die Trainingsdaten leichter.
Nicht reduzierbare Fehler
Dieser Teil ist durch das Rauschen in den Daten selbst bedingt. Die einzige Möglichkeit, diesen Fehleranteil zu verringern, ist, die Daten zu säubern – z.B. die Datenquellen zu reparieren (wie etwa beschädigte Sensoren) oder Ausreißer zu erkennen und zu entfernen.
Das Steigern der Komplexität eines Modells erhöht meistens dessen Varianz und senkt dessen Bias. Umgekehrt erhöht eine geringere Komplexität des Modells dessen Bias und senkt die Varianz. Deshalb nennt man dies ein Gleichgewicht.
Regularisierte lineare Modelle
Wie wir bereits in den Kapiteln 1 und 2 gesehen haben, ist die Regularisierung des Modells (also es einzuschränken) eine sinnvolle Möglichkeit, um Overfitting zu vermeiden: Je weniger Freiheitsgrade das Modell hat, desto schwieriger wird es, die Daten zu overfitten. Beispielsweise lässt sich ein polynomielles Modell einfach regularisieren, indem man den Grad des Polynoms verringert.
Bei einem linearen Modell wird die Regularisierung normalerweise in Form von Nebenbedingungen auf den Gewichten des Modells umgesetzt. Wir werden nun drei unterschiedliche Arten von Nebenbedingungen betrachten: Ridge-Regression, Lasso-Regression und Elastic Net.
Ridge-Regression
Die Ridge-Regression (auch Regularisierung nach Tikhonov genannt) ist eine regularisierte Variante der linearen Regression: Zur Kostenfunktion wird der Regularisierungsterm
|
Es tritt recht häufig auf, dass sich die Kostenfunktion beim Trainieren vom Qualitätsmaß beim Testen unterscheidet. Neben der Regularisierung besteht ein weiterer Grund darin, dass eine Kostenfunktion beim Trainieren leicht optimierbare Ableitungen haben sollte, während das Leistungsmaß beim Testen möglichst nah am eigentlichen Ziel sein sollte. Ein gutes Beispiel hierfür ist ein Klassifikator, der mit einer Kostenfunktion wie (dem in Kürze besprochenen) Log Loss trainiert wird, aber mit Relevanz und Sensitivität evaluiert wird. |
Der Hyperparameter α steuert, wie stark Sie das Modell regularisieren möchten. Bei α = 0 entspricht die Ridge-Regression exakt der linearen Regression. Wenn α sehr groß ist, werden sämtliche Gewichte annähernd null, und es ergibt sich eine horizontale Linie durch den Mittelwert der Daten. Formel 4-8 zeigt die Kostenfunktion bei der Ridge-Regression.9
Formel 4-8: Kostenfunktion bei der Ridge-Regression
Der Bias-Term θ0 ist nicht regularisiert (die Summe beginnt bei i = 1, nicht bei 0). Wenn wir w als Gewichtsvektor der Merkmale definieren (θ1 bis θn), ist der Regularisierungsterm einfach gleich ½(|| w ||2)2, wobei || w ||2 für die ℓ2-Norm des Gewichtsvektors steht.10 Beim Gradientenverfahren