Ridge и Lasso в регрессии: зачем нужна регуляризация

Как понять Ridge и Lasso без лишней академичности: зачем нужна регуляризация, чем L1 отличается от L2 и как это меняет поведение модели.

Содержание Следующие статьи
Содержание Ridge и Lasso в регрессии: зачем нужна регуляризация
  1. Почему линейная регрессия без ограничений часто начинает вредить самой себе
  2. Как различаются Ridge и Lasso
  3. Как это чувствуется в реальной задаче

Почему линейная регрессия без ограничений часто начинает вредить самой себе

Когда признаков много, а данные шумные, обычная линейная регрессия охотно подстраивается под случайные детали выборки. Коэффициенты начинают раздуваться, модель становится хрупкой, а небольшое изменение данных дает другое решение. Именно здесь появляются Ridge и Lasso. Обе модели берут ту же идею регрессии, но добавляют ограничение на веса. По сути они говорят: объясняй данные, но не делай это слишком дорогой ценой сложности.

Эта идея важна не только для линейных моделей. Через нее легче понять, как вообще работает регуляризация в ML. Мы не просто минимизируем ошибку. Мы минимизируем ошибку с учетом цены за избыточную гибкость модели.

Как различаются Ridge и Lasso

Ridge использует L2-регуляризацию и плавно сжимает коэффициенты к нулю. Он редко зануляет их полностью, зато делает решение устойчивее и хорошо работает, когда много коррелирующих признаков. Lasso использует L1-регуляризацию и способен обнулять часть коэффициентов. Поэтому его часто используют как способ одновременно учить модель и отбирать признаки. Это не значит, что Lasso всегда лучше для интерпретации. Иногда он становится слишком нестабильным на сильно коррелирующих данных, и тогда Ridge оказывается надежнее.

Формула: раздел математики — оптимизация и линейная алгебра
$$ J_{ridge}(w) = J(w) + \lambda \sum_{j=1}^{m} w_j^2 $$
Что означает эта формула

В Ridge к исходной функции потерь добавляется штраф за большие веса. Модель все еще хочет уменьшить ошибку, но теперь ей приходится платить за слишком длинный вектор коэффициентов.

Что означает каждый символ
  • J_{ridge}(w) — регуляризованная функция потерь для Ridge
  • J(w) — исходная ошибка без регуляризации
  • \lambda — сила штрафа за сложность
  • w_j — вес j-го признака
  • m — число параметров модели

Для Lasso формула похожа, но вместо квадратов коэффициентов используется сумма модулей. Именно эта геометрическая разница и приводит к тому, что часть коэффициентов может стать нулевой. Визуально Ridge чаще «сжимает шар», а Lasso задает более угловатое ограничение, которое охотнее прижимает параметры к осям.

Как это чувствуется в реальной задаче

Если у тебя много похожих признаков, Ridge помогает распределить влияние между ними мягко и устойчиво. Если признаков слишком много и часть выглядит лишней, Lasso может помочь вычистить пространство признаков. Но выбирать между ними нужно не по легенде, а по поведению на валидации и устойчивости решения.

example.pyPython
import pandas as pd  # готовим маленький табличный пример с коррелирующими признаками
from sklearn.linear_model import Ridge, Lasso  # сравниваем две формы регуляризации на одной задаче

data = pd.DataFrame({  # задаем признаки и таргет для регрессионной постановки
    'x1': [1, 2, 3, 4, 5, 6],  # первый числовой признак
    'x2': [2, 4, 6, 8, 10, 12],  # второй признак, сильно связанный с первым
    'y': [3, 5, 7, 9, 11, 13]  # целевая переменная
})

X = data[['x1', 'x2']]  # выделяем матрицу признаков
y = data['y']  # сохраняем target отдельно

ridge = Ridge(alpha=1.0)  # задаем Ridge с L2-регуляризацией
lasso = Lasso(alpha=0.1)  # задаем Lasso с L1-регуляризацией
ridge.fit(X, y)  # обучаем Ridge на данных
lasso.fit(X, y)  # обучаем Lasso на тех же данных
print({'ridge_coef': ridge.coef_.round(3).tolist()})  # смотрим, как Ridge распределил веса
print({'lasso_coef': lasso.coef_.round(3).tolist()})  # смотрим, занулил ли Lasso часть коэффициентов

Даже на маленьком примере видно, что регуляризация — это не абстрактная добавка к формуле, а реальный способ управлять поведением модели. И чем раньше это становится понятным, тем легче читать более сложные методы обучения.

Что читать дальше

Связанные статьи по этой теме

Canary deployment для моделей: как выкатывать новую версию без лишнего риска Latency в ML API: почему быстрая модель важна не меньше точной Batch inference и real-time inference: как выбирать режим работы модели
Вернуться в блог