Собесов

Сценарий ML: L1, L2 и ElasticNet — когда какую

ML / Data ScienceOverfitting и регуляризацияСредняяMiddle

Условие

Объясните разницу L1, L2, ElasticNet, когда какую выбирать и как это связано с MAP-оценкой.

Решение

Подход

L2 / Ridge L1 / Lasso ElasticNet
Штраф λ·Σθ² `λ·Σ θ
Sparsity Нет, маленькие θ Да, обнуляет θ Между
Корр-фичи Распределяет Случайно одну Сглаживает
Гладкость Дифференцируема Не в 0 Зависит от α
MAP prior Gaussian Laplace Mixture

Когда L1

  • Много фичей, многие нерелевантные — L1 выкинет.
  • Нужна интерпретация: какие фичи важны.
  • Sparse coefficients для inference / production.

Когда L2

  • Все фичи потенциально полезны, хотим небольшие коэффициенты.
  • Коррелирующие фичи (multicollinearity) — L2 распределяет вес.
  • Стабильность к шуму, лучшая prediction.

Когда ElasticNet

  • Корреляции среди фичей И хотим sparsity. L1 один из коррелирующих случайно выбирает; ElasticNet их группирует.
  • Hyperparameter α (l1_ratio) выбирается через CV.

Реализация

from sklearn.linear_model import Lasso, Ridge, ElasticNet
from sklearn.linear_model import LassoCV, RidgeCV, ElasticNetCV
 
# Стандартизация обязательна
from sklearn.preprocessing import StandardScaler
X_std = StandardScaler().fit_transform(X)
 
# CV для λ
lasso = LassoCV(cv=5, alphas=np.logspace(-4, 2, 50)).fit(X_std, y)
ridge = RidgeCV(alphas=np.logspace(-4, 2, 50)).fit(X_std, y)
enet = ElasticNetCV(cv=5, l1_ratio=[0.1,0.3,0.5,0.7,0.9,0.95,0.99]).fit(X_std, y)
 
print("L1 ненулевых коэффициентов:", (lasso.coef_ != 0).sum())

Connection to MAP

Гауссовский prior θ ~ N(0, σ²) → L2 регуляризация. Лапласовский prior θ ~ Laplace(0, b) → L1. ElasticNet — mixture.

argmax P(θ|data) = argmax P(data|θ)P(θ) → log → min -log L + (-log prior).

Подводные камни

  1. Стандартизация фичей: без неё штраф несравним по фичам с разными масштабами. Это обязательно.
  2. L1 при коллинеарных фичах — выбирает одну случайно (неустойчиво). Группировку даёт ElasticNet.
  3. Categorical с one-hot: L1 обнулит часть категорий → trap, лучше group lasso.
  4. Lasso не unbiased estimator: коэффициенты shrunken, не используйте их для inference без debiasing.
  5. На больших p (>>n) L1 ограничивает число выбранных фичей сверху n, что плохо если истинных релевантных >n.

Эталонный ответ

L1 (Lasso): sparsity, выбор фичей, Laplace prior. L2 (Ridge): shrinkage, стабильность к корреляции, Gaussian prior. ElasticNet: смесь, группирует коррелированные фичи. Всегда стандартизируйте фичи, λ через CV. Coefficients после L1 biased — не использовать для inference без debiasing.

Хочешь увидеть разбор?

Зарегистрируйся бесплатно — откроется развёрнутое решение этой задачи и ещё 4 на выбор.

Зарегистрироваться и увидеть разбор
Уже есть аккаунт? Войти