Ridge & Lasso

2.1.2

Ridge & Lasso

Ενημέρωση 2020-02-12 Ανάγνωση 3 λεπτά
Σύνοψη
  • Η παλινδρόμηση 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 και μέθοδο ελαχίστων τετραγώνων στο ίδιο συνθετικό πρόβλημα παλινδρόμησης. Συγκρίνουμε τα μεγέθη των συντελεστών και τις βαθμολογίες γενίκευσης.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
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.