Собесов

alexeygrigorev/data-science-interviews: L1 vs L2 vs Elastic Net

Статистика и теорверРегуляризацияСредняяMiddle

Условие

Чем отличаются L1- и L2-регуляризации? Когда что использовать? Что такое Elastic Net и зачем он нужен?

Решение

Подход

К функции потерь добавляется штраф за «размер» весов:

  • L2 (Ridge) — штраф λ * Σ wᵢ². Производная пропорциональна w, поэтому веса стремятся к нулю, но не обнуляются. Хорошо работает при мультиколлинеарности — «распределяет» влияние между коррелированными признаками.
  • L1 (Lasso) — штраф λ * Σ |wᵢ|. Производная — sign(w), поэтому веса могут стать ровно нулевыми. Это даёт «бесплатный» отбор признаков.
  • Elastic Netλ * (α * Σ|wᵢ| + (1-α) * Σwᵢ²). Берёт лучшее: отбор признаков от L1 и стабильность от L2 при коррелированных фичах.

Когда что брать

  • Много признаков, и многие явно лишние → L1.
  • Признаки коррелированы, важна стабильность весов → L2.
  • Много признаков + есть коррелированные группы → Elastic Net.
  • Если ничего не знаете про данные — стартуйте с L2 как более стабильного.
from sklearn.linear_model import Ridge, Lasso, ElasticNet
 
ridge = Ridge(alpha=1.0)
lasso = Lasso(alpha=0.1)
enet  = ElasticNet(alpha=0.1, l1_ratio=0.5)  # 50/50 mix

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

  1. Не забыть стандартизировать признаки перед регуляризацией. Иначе штраф будет несправедливо больше бить по фичам с большой шкалой.
  2. L1 на сильно коррелированных признаках ведёт себя неустойчиво: какой именно из коррелированных оставить — определяется почти случайно. Здесь полезен Elastic Net.
  3. В sklearn alpha обозначает силу регуляризации, а в LogisticRegression — параметр C = 1/alpha. Перепутать — типичная ошибка.

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

L1 даёт разреженные веса (отбор признаков), L2 — гладкие и устойчивые к мультиколлинеарности. Elastic Net комбинирует их через параметр l1_ratio. Перед использованием обязательно масштабировать признаки.

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

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

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