Проблема, которую решает регуляризация

Машинное обучение оптимизирует функцию потерь на тренировочной выборке. Без ограничений модель стремится минимизировать ошибку до нуля — и начинает «заучивать» тренировочные данные вместо того, чтобы находить обобщающие паттерны. На новых данных такая модель работает плохо: переобучение.

Регуляризация добавляет штраф за сложность модели прямо в функцию потерь:

Loss_total = Loss_data + λ × Penalty(weights)

Параметр λ (lambda) контролирует баланс между точностью на трейне и простотой модели.

Основные методы

L1 регуляризация (Lasso):

Penalty = λ × Σ|wᵢ|

Создаёт разреженные модели — малозначимые веса обнуляются. Используется для автоматического отбора признаков.

L2 регуляризация (Ridge):

Penalty = λ × Σwᵢ²

Уменьшает все веса, не обнуляя. Более стабильна при мультиколлинеарности признаков.

Elastic Net: комбинация L1 и L2. Часто используется когда нужна и разреженность, и устойчивость.

Dropout (нейросети):

При обучении: отключить нейрон с вероятностью p (обычно 0.2–0.5)
При инференсе: все нейроны активны, веса масштабируются на (1-p)

Регуляризация в рекомендательных системах

Модель Метод регуляризации Зачем
Матричная факторизация (ALS, SVD) L2 для пользовательских и товарных эмбеддингов Предотвратить запоминание активных пользователей
Нейронные CF-модели Dropout + L2 Обобщение на cold-start пользователей
Gradient Boosting (XGBoost, LightGBM) L1/L2 + min_child_weight Контроль глубины деревьев
Логистическая регрессия в ранжировании L1 или Elastic Net Отбор релевантных признаков

Совет: в рекомендательных системах для e-commerce особенно важно регуляризировать эмбеддинги активных пользователей. Пользователи с тысячами покупок — «тяжёлые» примеры, которые модель склонна запомнить. Без регуляризации она хуже обобщается на обычных пользователей с 10–50 транзакциями.

Подбор гиперпараметра λ

Единственный правильный способ — кросс-валидация:

  1. Разбить данные на train / validation / test.
  2. Обучить модель с несколькими значениями λ (логарифмическая сетка: 0.001, 0.01, 0.1, 1.0, 10.0).
  3. Выбрать λ с лучшей метрикой на validation.
  4. Финально оценить на test — один раз.

Никогда не подбирать λ по test set — это утечка данных.