2.1.2
Ridge & Lasso
Σύνοψη
- Η παλινδρόμηση Ridge συρρικνώνει ομαλά τους συντελεστές με ποινή L2 και παραμένει σταθερή ακόμα και όταν τα χαρακτηριστικά είναι ισχυρά συσχετισμένα.
- Η παλινδρόμηση Lasso εφαρμόζει ποινή L1 που μπορεί να οδηγήσει ορισμένους συντελεστές ακριβώς στο μηδέν, παρέχοντας ενσωματωμένη επιλογή χαρακτηριστικών και ερμηνευσιμότητα.
- Η ρύθμιση της ισχύος κανονικοποίησης \(\alpha\) ελέγχει τον συμβιβασμό μεταξύ προσαρμογής στα δεδομένα εκπαίδευσης και γενίκευσης σε νέα δεδομένα.
- Ο συνδυασμός τυποποίησης με διασταυρωμένη επικύρωση βοηθά στην επιλογή υπερπαραμέτρων που αποτρέπουν την υπερπροσαρμογή διατηρώντας υψηλή απόδοση.
Εισαγωγή #
Αυτή η μέθοδος πρέπει να ερμηνεύεται μέσα από τις υποθέσεις της, τις συνθήκες των δεδομένων και τον τρόπο με τον οποίο οι επιλογές παραμέτρων επηρεάζουν τη γενίκευση.
Αναλυτική Επεξήγηση #
Μαθηματική Διατύπωση #
Και οι δύο μέθοδοι ελαχιστοποιούν τη συνήθη απώλεια τετραγωνικού σφάλματος προσθέτοντας έναν όρο κανονικοποίησης:
- Παλινδρόμηση Ridge $$ \min_{\boldsymbol\beta, b} \sum_{i=1}^{n} \left(y_i - (\boldsymbol\beta^\top \mathbf{x}_i + b)\right)^2 + \alpha \lVert \boldsymbol\beta \rVert_2^2 $$
- Παλινδρόμηση Lasso $$ \min_{\boldsymbol\beta, b} \sum_{i=1}^{n} \left(y_i - (\boldsymbol\beta^\top \mathbf{x}_i + b)\right)^2 + \alpha \lVert \boldsymbol\beta \rVert_1 $$
Μεγαλύτερες τιμές \(\alpha\) επιβάλλουν ισχυρότερη συρρίκνωση. Στην περίπτωση της Lasso, όταν η \(\alpha\) υπερβεί ένα κατώφλι, ορισμένοι συντελεστές γίνονται ακριβώς μηδέν, δίνοντας αραιά μοντέλα.
Πειράματα σε Python #
Το παρακάτω παράδειγμα εφαρμόζει Ridge, Lasso και μέθοδο ελαχίστων τετραγώνων στο ίδιο συνθετικό πρόβλημα παλινδρόμησης. Συγκρίνουμε τα μεγέθη των συντελεστών και τις βαθμολογίες γενίκευσης.
import numpy as np
import matplotlib.pyplot as plt
import japanize_matplotlib
from sklearn.linear_model import Lasso, LassoCV, LinearRegression, Ridge, RidgeCV
from sklearn.model_selection import cross_val_score
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
# Parameters
n_samples = 200
n_features = 10
n_informative = 3
rng = np.random.default_rng(42)
# True coefficients (only first three informative)
coef = np.zeros(n_features)
coef[:n_informative] = rng.normal(loc=3.0, scale=1.0, size=n_informative)
X = rng.normal(size=(n_samples, n_features))
y = X @ coef + rng.normal(scale=5.0, size=n_samples)
linear = make_pipeline(StandardScaler(with_mean=False), LinearRegression()).fit(X, y)
ridge = make_pipeline(
StandardScaler(with_mean=False),
RidgeCV(alphas=np.logspace(-3, 3, 13), cv=5)
).fit(X, y)
lasso = make_pipeline(
StandardScaler(with_mean=False),
LassoCV(alphas=np.logspace(-3, 1, 9), cv=5, max_iter=50_000)
).fit(X, y)
models = {
"Linear": linear,
"Ridge": ridge,
"Lasso": lasso,
}
# Plot coefficient magnitudes
indices = np.arange(n_features)
width = 0.25
plt.figure(figsize=(10, 4))
plt.bar(indices - width, np.abs(linear[-1].coef_), width=width, label="Linear")
plt.bar(indices, np.abs(ridge[-1].coef_), width=width, label="Ridge")
plt.bar(indices + width, np.abs(lasso[-1].coef_), width=width, label="Lasso")
plt.xlabel("feature index")
plt.ylabel("|coefficient|")
plt.legend()
plt.grid(alpha=0.3)
plt.tight_layout()
plt.show()
# Cross-validated R^2 scores
for name, model in models.items():
scores = cross_val_score(model, X, y, cv=5, scoring="r2")
print(f"{name:>6}: R^2 = {scores.mean():.3f} ± {scores.std():.3f}")
Ανάγνωση των αποτελεσμάτων #
- Η Ridge συρρικνώνει ελαφρά όλους τους συντελεστές και παραμένει σταθερή ακόμα και με πολυσυγγραμμικότητα.
- Η Lasso ωθεί ορισμένους συντελεστές στο μηδέν, διατηρώντας μόνο τα πιο σημαντικά χαρακτηριστικά.
- Επιλέξτε \(\alpha\) μέσω διασταυρωμένης επικύρωσης για να ισορροπήσετε πόλωση και διακύμανση, και τυποποιήστε τα χαρακτηριστικά για να εξασφαλίσετε δίκαιη σύγκριση μεταξύ διαστάσεων.
Αναφορές #
- Hoerl, A. E., & Kennard, R. W. (1970). Ridge Regression: Biased Estimation for Nonorthogonal Problems. Technometrics, 12(1), 55–67.
- Tibshirani, R. (1996). Regression Shrinkage and Selection via the Lasso. Journal of the Royal Statistical Society: Series B, 58(1), 267–288.
- Zou, H., & Hastie, T. (2005). Regularization and Variable Selection via the Elastic Net. Journal of the Royal Statistical Society: Series B, 67(2), 301–320.