Проблема, которую решает регуляризация
Машинное обучение оптимизирует функцию потерь на тренировочной выборке. Без ограничений модель стремится минимизировать ошибку до нуля — и начинает «заучивать» тренировочные данные вместо того, чтобы находить обобщающие паттерны. На новых данных такая модель работает плохо: переобучение.
Регуляризация добавляет штраф за сложность модели прямо в функцию потерь:
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 транзакциями.
Подбор гиперпараметра λ
Единственный правильный способ — кросс-валидация:
- Разбить данные на train / validation / test.
- Обучить модель с несколькими значениями λ (логарифмическая сетка: 0.001, 0.01, 0.1, 1.0, 10.0).
- Выбрать λ с лучшей метрикой на validation.
- Финально оценить на test — один раз.
Никогда не подбирать λ по test set — это утечка данных.