Условие
В линейной/логистической регрессии добавляют регуляризацию L1 (Lasso) и L2 (Ridge). Объясните:
- Чем отличаются loss-функции?
- Почему L1 даёт разреженность (нулевые коэффициенты), а L2 — нет?
- Когда выбрать L1, когда L2, когда ElasticNet?
- Что такое путь регуляризации (regularization path)?
Решение
1) Loss-функции
L1 (Lasso): L = MSE(y, ŷ) + α · Σ|w_i|
L2 (Ridge): L = MSE(y, ŷ) + α · Σ w_i²
ElasticNet: L = MSE(y, ŷ) + α · (ρ · Σ|w_i| + (1-ρ)/2 · Σ w_i²)
α > 0 — сила регуляризации; ρ ∈ [0, 1] — баланс между L1 и L2.
2) Геометрия разреженности
Регуляризация эквивалентна ограниченной оптимизации: минимизировать MSE при условии ||w||₁ ≤ t (для L1) или ||w||₂ ≤ t (для L2).
- L1-шар — ромб (octahedron в d-мерности): углы лежат на осях, где компоненты = 0.
- L2-шар — сфера: гладкая, не имеет «острых» точек.
Оптимум MSE (эллиптические изолинии) обычно касается границы. На остром угле L1-ромба касание происходит ровно в точке с нулём по некоторым координатам. На L2-сфере — почти всегда вне осей.
→ L1 «обнуляет» коэффициенты, L2 — «сжимает».
3) Когда что использовать
L1 (Lasso):
- Много фич, известно, что лишь часть полезна → selection.
- Интерпретируемость (sparse модель).
- Высокая cardinality + linear model.
L2 (Ridge):
- Мультиколлинеарность фич — Ridge «делит» вес между скоррелированными.
- Все фичи хоть немного важны.
- Численная стабильность (всегда есть единственное решение).
- Лучше CV-error при равном MSE на small data.
ElasticNet:
- Сильно скоррелированные фичи + нужно ещё и selection (L1 случайно «выбирает» одну из коррелированных, ElasticNet распределяет).
- Чаще всего «по умолчанию» когда не уверены.
4) Регуляризационный путь
Зависимость коэффициентов от α: при α=0 — нерегуляризированная модель (все фичи); при α→∞ — все коэффициенты в ноль.
import numpy as np
from sklearn.linear_model import lasso_path, ridge_regression
import matplotlib.pyplot as plt
alphas = np.logspace(-3, 1, 100)
alphas_path, coefs, _ = lasso_path(X_train, y_train, alphas=alphas)
plt.figure(figsize=(10, 6))
for i, name in enumerate(feature_names):
plt.plot(np.log10(alphas_path), coefs[i], label=name)
plt.xlabel('log(α)')
plt.ylabel('coef')
plt.legend()L1 path: коэффициенты «выпадают» в ноль один за другим — естественный feature selection. L2 path: все коэффициенты постепенно сжимаются к нулю, но не достигают его.
Эффект на корреляцию
Скоррелированные фичи (x_1 ≈ x_2):
- L1 выберет одну случайным образом, другую — в ноль. Между запусками может меняться.
- L2 разделит вес поровну:
w_1 = w_2 ≈ w_true / 2. - ElasticNet ведёт себя как L2 для коррелированных пар, но обнуляет нерелевантные.
Калибровка α через CV
from sklearn.linear_model import LassoCV, RidgeCV, ElasticNetCV
lasso = LassoCV(alphas=np.logspace(-4, 1, 50), cv=5).fit(X_train, y_train)
print("best alpha:", lasso.alpha_)
print("non-zero coefs:", (lasso.coef_ != 0).sum())Bayesian интерпретация
- L2 = Гауссовский prior
w ~ N(0, σ²). - L1 = Laplace prior
w ~ Laplace(0, b).
Laplace имеет острый пик в нуле → шанс попасть в ноль большой → разреженность.
Cвязь с logistic regression
В логистической регрессии регуляризация той же логики, через параметр C = 1/α:
LogisticRegression(penalty='l1', solver='liblinear', C=0.1)
LogisticRegression(penalty='l2', solver='lbfgs', C=1.0)
LogisticRegression(penalty='elasticnet', solver='saga', l1_ratio=0.5, C=0.5)Подводные камни
- Стандартизация перед регуляризацией обязательна. Иначе фичи разного масштаба получают разный штраф несправедливо.
- L1 на сильно скоррелированных фичах нестабилен между запусками — выбирает одну случайно.
αслишком большое → все коэффициенты в ноль → underfit.- L2 не делает feature selection — все веса остаются ненулевыми (хоть и маленькими).
- Sklearn
RidgeиLogisticRegression(penalty='l2')используютαиC = 1/αсоответственно — частая путаница. - L1 + bias term: bias обычно не регуляризируется. В sklearn — управляется
fit_intercept=True. solverограничения:lbfgsне поддерживает L1; нужноliblinearилиsaga.
Эталонный ответ
| L1 (Lasso) | L2 (Ridge) | ElasticNet | |
|---|---|---|---|
| Penalty | Σ | w | |
| Sparsity | да (обнуляет) | нет (сжимает) | да |
| Стабильность | нестабильна на коррелированных | стабильна | стабильна |
| Selection | да | нет | да |
| Когда | много фич, нужен отбор | мультиколлинеарность | оба эффекта |
L1 даёт разреженность из-за «острых углов» ромба l1-шара — оптимум MSE касается его на оси. L2 — сфера, касание почти всегда вне осей.
α подбирается через CV. Перед регуляризацией — всегда стандартизация.