ML Atlas

03 · Nadzorowane · 4 min czytania · Interaktywne · aktualizacja

Czym różni się regresja ridge od lasso i kiedy której użyć?

W skrócie

Ridge i lasso to regresja liniowa z karą za duże wagi. Ridge kurczy wszystkie współczynniki, lasso część z nich zeruje i w ten sposób wybiera cechy.

Co to jest

Regresja grzbietowa (ridge) i lasso to odmiany regresji liniowej, w których do sumy kwadratów błędów dodaje się karę za wielkość współczynników. Ridge karze sumę kwadratów wag (kara L2), lasso — sumę ich wartości bezwzględnych (kara L1). Siłę kary ustala hiperparametr α (w literaturze także λ): przy α = 0 dostajemy zwykłą regresję, przy bardzo dużym α wszystkie wagi dążą do zera.

Ridge zaproponowali Hoerl i Kennard (1970) jako lekarstwo na współliniowość. Lasso (least absolute shrinkage and selection operator) opisał Robert Tibshirani w 1996 roku. Ich połączeniem jest sieć elastyczna (elastic net, Zou i Hastie, 2005).

Intuicja: zwykła regresja ma pełną swobodę i chętnie wykorzystuje każdą przypadkową zależność w danych treningowych, nawet za cenę ogromnych, wzajemnie znoszących się wag. Kara działa jak budżet: model może użyć dużej wagi tylko wtedy, gdy naprawdę opłaca się to w dopasowaniu.

Mechanizm — dlaczego tak działa

Ridge minimalizuje RSS + α·Σ bⱼ², a lasso RSS + α·Σ |bⱼ|. W obu przypadkach świadomie godzimy się na obciążenie — wagi są systematycznie mniejsze niż „prawdziwe” — w zamian za dużo mniejszą wariancję: współczynniki przestają skakać przy każdej zmianie próbki. Gdy cech jest dużo, a obserwacji mało, ta wymiana prawie zawsze się opłaca.

Dlaczego lasso zeruje wagi, a ridge nie? Wyobraź sobie problem jako minimalizację błędu przy ograniczonym budżecie na wagi. Dla ridge obszar dozwolonych wag to koło (kula), dla lasso — romb z ostrymi wierzchołkami na osiach. Elipsy stałego błędu najczęściej dotykają rombu właśnie w wierzchołku, gdzie część współrzędnych jest dokładnie zerowa. Koło nie ma wierzchołków, więc ridge tylko zbliża wagi do zera. Tę samą różnicę widać w pochodnej: kara L2 słabnie przy małych wagach, kara L1 ciągnie do zera ze stałą siłą aż do końca.

Konsekwencje praktyczne są istotne. Ridge przy dwóch silnie skorelowanych cechach dzieli wagę między nie mniej więcej po równo — stabilnie. Lasso zwykle wybiera jedną z nich, nieco arbitralnie, a przy innej próbce może wybrać drugą. Elastic net łączy obie kary i bierze skorelowane cechy grupowo.

Kara zależy od skali cech: waga cechy mierzonej w gramach jest tysiąc razy mniejsza niż tej samej cechy w kilogramach, więc kara potraktuje je inaczej. Przed ridge i lasso cechy trzeba standaryzować. Stałej b₀ nie karze się.

α dobiera się walidacją krzyżową. Ridge z matematycznego punktu widzenia ma też interpretację bayesowską: to oszacowanie przy założeniu, że wagi a priori mają rozkład normalny wokół zera; lasso odpowiada rozkładowi Laplace’a.

Na przykładzie

Zbiór Diabetes (442 pacjentów, 10 cech), trening na 331, test na 111 (podział 75/25, random_state=0), cechy standaryzowane. Bierzemy wielomian stopnia 3: 285 cech przy 331 pacjentach. Zwykła regresja daje R² treningowe 0,92 i testowe −22 — kompletne przeuczenie. Ridge z α = 10 podnosi wynik testowy do −0,27, z α = 100 do 0,23, a z α = 1000 do 0,36, czyli tyle, ile zwykła regresja na 10 surowych cechach. RidgeCV (walidacja 5-krotna na danych treningowych) wybiera α ≈ 251 i osiąga 0,32. LassoCV wybiera α ≈ 3,8 i zostawia niezerowe wagi tylko 19 z 285 cech, z R² testowym 0,34.

Lasso jako selektor widać też na 10 oryginalnych cechach: przy α = 1 zostaje 8 cech, przy α = 5 — pięć (płeć, BMI, ciśnienie, s3, s5), przy α = 20 — tylko BMI i s5 (logarytm trójglicerydów), a R² testowe spada zaledwie z 0,36 do 0,28. Ridge łagodzi z kolei współliniowość: wagi silnie skorelowanych s1 i s2 wynoszą bez kary −26,5 i +12,4, a przy α = 10 już −7,4 i −2,5 — przestają się wzajemnie znosić.

Ta ilustracja działa w przeglądarce z włączonym JavaScriptem: ścieżki wag 10 cech cukrzycy: ridge zmniejsza wszystkie wagi płynnie, lasso zeruje je po kolei — najpierw s2, na końcu BMI — a R² na teście spada z 0,470 do 0,386, gdy zostają 3 cechy.

Dane: Diabetes (progresja cukrzycy)

W praktyce

  • Ridge(alpha=...), Lasso(alpha=...), ElasticNet(alpha=..., l1_ratio=...); wersje z wbudowaną walidacją: RidgeCV, LassoCV, ElasticNetCV.
  • Zawsze w potoku ze skalowaniem: make_pipeline(StandardScaler(), LassoCV(cv=5)).
  • α przeszukuj w skali logarytmicznej, np. np.logspace(-3, 3, 50); typowe wartości zależą od skali y i liczby obserwacji.
  • Zerowe wagi lasso to wskazówka, nie dowód, że cecha jest nieistotna — przy skorelowanych cechach wybór bywa niestabilny; sprawdź go na kilku próbkach bootstrapowych.
  • Ta sama idea działa w regresji logistycznej: parametr C w LogisticRegression to odwrotność siły kary (penalty="l1" lub "l2").

Najczęstsze pytania

Kiedy wybrać ridge, a kiedy lasso?
Ridge, gdy spodziewasz się, że wiele cech wnosi po trochu, i zależy ci na stabilnych przewidywaniach. Lasso, gdy podejrzewasz, że ważnych jest tylko kilka cech, i chcesz prostego, czytelnego modelu. Gdy nie wiesz — elastic net z `l1_ratio` dobranym walidacją.
Dlaczego regularyzacja poprawia wynik, skoro model gorzej pasuje do danych treningowych?
Bo błąd na nowych danych to suma obciążenia, wariancji i szumu. Kara zwiększa obciążenie trochę, ale wariancję zmniejsza dużo — szczególnie gdy cech jest wiele w stosunku do obserwacji. Gorsze dopasowanie treningowe oznacza tu po prostu mniej zapamiętanego szumu.
Czy lasso może wybrać więcej cech niż jest obserwacji?
Nie: w klasycznym sformułowaniu lasso wybiera co najwyżej n niezerowych cech przy n obserwacjach. To jedna z motywacji sieci elastycznej, która tego ograniczenia nie ma i lepiej radzi sobie z grupami skorelowanych zmiennych.

Źródła

  • Hoerl A. E., Kennard R. W. „Ridge Regression: Biased Estimation for Nonorthogonal Problems”, Technometrics 12(1), 1970.
  • Tibshirani R. „Regression Shrinkage and Selection via the Lasso”, Journal of the Royal Statistical Society B 58(1), 1996.
  • Zou H., Hastie T. „Regularization and Variable Selection via the Elastic Net”, Journal of the Royal Statistical Society B 67(2), 2005.
  • James G., Witten D., Hastie T., Tibshirani R. „An Introduction to Statistical Learning”, 2nd ed., 2021, rozdz. 6.2.
  • Dokumentacja scikit-learn, „Linear Models”: https://scikit-learn.org/stable/modules/linear_model.html

Zobacz też