|
Es ist wichtig, die Daten zu skalieren (z.B. den StandardScaler zu verwenden), bevor Sie eine Ridge-Regression durchführen, da diese sensibel auf die Skala der Eingabemerkmale reagiert. Dies ist bei den meisten regularisierten Modellen der Fall. |
Abbildung 4-17 zeigt mehrere auf linearen Daten trainierte Ridge-Modelle mit unterschiedlichen Werten für α. Auf der linken Seite wurden einfache Ridge-Modelle verwendet, die zu linearen Vorhersagen führen. Auf der rechten Seite wurden die Daten zunächst mit PolynomialFeatures(degree=10) um polynomielle Merkmale erweitert, anschließend mit dem StandardScaler skaliert, und schließlich wurde die Ridge-Regression auf die fertigen Merkmale angewendet: Dies ist eine polynomielle Regression mit Ridge-Regularisierung.
Abbildung 4-17: Ein lineares Modell (links) und ein polynomielles Modell (rechts), beide mit unterschiedlich starker Ridge-Regression
Beachten Sie, wie ein Erhöhen von α zu flacheren (d.h. weniger extremen, vernünftigeren) Vorhersagen führt; die Varianz des Modells sinkt, aber sein Bias steigt dafür.
Wie die lineare Regression können wir auch die Ridge-Regression entweder als geschlossene Gleichung oder durch das Gradientenverfahren berechnen. Die Vor- und Nachteile sind die gleichen. Formel 4-9 zeigt die Lösung der geschlossenen Form, wobei A eine (n + 1) × (n + 1)-Identitätsmatrix11 ist, nur dass die linke obere Ecke eine 0 für den Bias-Term enthält.
Formel 4-9: Lösung der geschlossenen Form bei der Ridge-Regression
Die Ridge-Regression lässt sich mit Scikit-Learn in der geschlossenen Form folgendermaßen lösen (mit einer Variante von Formel 4-9 nach einer Technik zur Matrizenfaktorisierung von André-Louis Cholesky):
>>> from sklearn.linear_model import Ridge
>>> ridge_reg = Ridge(alpha=1, solver="cholesky")
>>> ridge_reg.fit(X, y)
>>> ridge_reg.predict([[1.5]])
array([[1.55071465]])
Über das stochastische Gradientenverfahren:12
>>> sgd_reg = SGDRegressor(penalty="l2")
>>> sgd_reg.fit(X, y.ravel())
>>> sgd_reg.predict([[1.5]])
array([1.47012588])
Der Hyperparameter penalty legt die Art des Regularisierungsterms fest. Über die Angabe "l2" fügen Sie zur Kostenfunktion einen Regularisierungsterm in Höhe des halben Quadrats der ℓ2-Norm des Gewichtsvektors hinzu: Dies entspricht der Ridge-Regression.
Lasso-Regression
Das Verfahren Least Absolute Shrinkage and Selection Operator Regression (kurz: Lasso-Regression) ist eine weitere regularisierte Variante der linearen Regression: Wie die Ridge-Regression fügt sie zur Kostenfunktion einen Regularisierungsterm hinzu, dieser verwendet aber die ℓ1-Norm des Gewichtsvektors anstatt des halbierten Quadrats der ℓ2-Norm (siehe Formel 4-10).
Formel 4-10: Kostenfunktion bei der Lasso-Regression
Abbildung 4-18 zeigt das Gleiche wie Abbildung 4-17, aber ersetzt die Ridge-Modelle durch Lasso-Modelle und verwendet kleinere Werte für α.
Abbildung 4-18: Ein lineares Modell (links) und ein polynomielles Modell (rechts), beide mit unterschiedlichen Lasso-Regressionen
Eine wichtige Eigenschaft der Lasso-Regression ist, dass sie die Gewichte der unwichtigsten Merkmale vollständig eliminiert (d.h. diese auf null setzt). Beispielsweise sieht die gestrichelte Linie im Diagramm auf der rechten Seite von Abbildung 4-18 (mit α = 10-7) quadratisch oder fast schon linear aus: Sämtliche Gewichte der höhergradigen polynomiellen Merkmale sind auf null gesetzt. Anders ausgedrückt, die Lasso-Regression führt eine automatische Merkmalsauswahl durch und gibt ein spärliches Modell aus (d.h. mit wenigen Gewichten ungleich null).
Warum das so ist, können Sie anhand von Abbildung 4-19 sehen: Die Achsen repräsentieren die beiden Modellparameter, und die Hintergrundkonturen repräsentieren verschiedene Verlustfunktionen. Im oberen linken Plot stehen die Konturen für den ℓ1-Verlust (|θ1| + |θ2|), der linear abnimmt, wenn Sie sich einer Achse nähern. Initialisieren Sie beispielsweise die Modellparameter mit θ1 = 2 und θ2 = 0,5, wird das Gradientenverfahren beide Parameter gleich verringern (das ist die gestrichelte Linie), und θ2 wird damit als Erstes null erreichen (da es zu Beginn näher an null war). Danach wird das Gradientenverfahren die Rinne herabrollen, bis es θ1 = 0 erreicht (mit ein bisschen hin und her springen, da die Gradienten von ℓ1 niemals nahe an null kommen – sie sind für jeden Parameter entweder –1 oder 1). Im oberen rechten Plot repräsentieren die Konturen die Lasso-Kostenfunktion (also eine MSE-Kostenfunktion plus einen ℓ1-Verlust). Die kleinen weißen Punkte zeigen den Weg, dem das Gradientenverfahren folgt, um Modellparameter zu optimieren, die ungefähr mit θ1 = 0,25 und θ2 = –1 initialisiert wurden: Beachten Sie, wie der Weg wieder schnell θ2 = 0 erreicht, es dann die Rinne heruntergeht und schließlich um das globale Minimum herumspringt (dargestellt durch das Quadrat). Würden wir α erhöhen, würde das globale Optimum entlang der gestrichelten Linie nach links verschoben werden; würden wir α verringern, würde das globale Optimum nach rechts verschoben werden(in diesem Beispiel sind die optimalen Parameter für den unregulierten MSE θ1 = 2 und θ2 = 0,5).
Abbildung 4-19: Lasso im Vergleich zur Ridge-Regularisierung
Die beiden unteren Plots zeigen das Gleiche, aber stattdessen mit einem ℓ2-Strafterm. Im linken unteren Plot sehen Sie, dass der ℓ2-Verlust mit dem Abstand zum Ursprung abnimmt, sodass das Gradientenverfahren einfach einen geraden Weg zu diesem Punkt wählt. Im unteren rechten