← Назад к вопросам

Объясните, что такое регуляризация и почему она полезна

1.8 Middle🔥 241 комментариев
#Машинное обучение#Метрики и оценка моделей

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI29 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Что такое регуляризация и почему она полезна

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

Проблема переучения (Overfitting)

Модель машинного обучения может прекрасно работать на тренировочных данных, но плохо — на тестовых. Почему?

Модель без регуляризации:
- Train Loss = 0.01 (отлично!)
- Test Loss = 0.5 (ужасно!)

Модель с регуляризацией:
- Train Loss = 0.1 (немного хуже)
- Test Loss = 0.15 (намного лучше!)

Модель запомнила все особенности и шумы тренировочного набора, вместо того чтобы научиться обобщающему паттерну.

Как работает регуляризация?

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

Loss_total = Loss_original + λ * Penalty

Где:

  • Loss_original — исходная ошибка (например, MSE)
  • λ (lambda) — коэффициент регуляризации (насколько сильно штрафовать)
  • Penalty — штраф за сложность модели

Основные типы регуляризации

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

Штрафует сумму абсолютных значений коэффициентов:

Penalty = Σ |w_i|
from sklearn.linear_model import Lasso

model = Lasso(alpha=0.1)  # alpha = λ
model.fit(X_train, y_train)

# L1 регуляризация обнуляет некоторые коэффициенты
# Результат: отбор признаков (feature selection)
print(model.coef_)  # некоторые значения = 0

Особенность L1: обнуляет маловажные признаки. Идеально для отбора признаков.

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

Штрафует сумму квадратов коэффициентов:

Penalty = Σ w_i²
from sklearn.linear_model import Ridge

model = Ridge(alpha=1.0)  # alpha = λ
model.fit(X_train, y_train)

# L2 регуляризация уменьшает все коэффициенты, но не обнуляет
print(model.coef_)  # все значения маленькие, но не нулевые

Особенность L2: уменьшает все коэффициенты равномерно. Более стабильна при мультиколлинеарности.

3. Elastic Net (комбинация L1 + L2)

from sklearn.linear_model import ElasticNet

model = ElasticNet(alpha=1.0, l1_ratio=0.5)  # 50% L1 + 50% L2
model.fit(X_train, y_train)

4. Dropout (для нейронных сетей)

Случайно отключает нейроны во время тренировки, заставляя сеть учиться резервным путями:

from tensorflow.keras.layers import Dense, Dropout

model = Sequential([
    Dense(128, activation=relu),
    Dropout(0.2),  # выключаем 20% нейронов
    Dense(64, activation=relu),
    Dropout(0.2),
    Dense(10, activation=softmax)
])

Практический пример

Представьте: нужно предсказать цену дома по 100 признакам (квадратура, районы, подъезды и т.д.). Модель без регуляризации может запомнить шумовые особенности каждого конкретного дома.

Без регуляризации:

from sklearn.linear_model import LinearRegression

model = LinearRegression()
model.fit(X_train, y_train)

# Train R² = 0.99 (идеально!)
# Test R² = 0.45 (ужасно!)

С L2 регуляризацией:

from sklearn.linear_model import Ridge

model = Ridge(alpha=10)
model.fit(X_train, y_train)

# Train R² = 0.85 (чуть хуже)
# Test R² = 0.82 (намного лучше!)

Выбор коэффициента λ

from sklearn.linear_model import RidgeCV

# Перебираем разные значения λ с кросс-валидацией
model = RidgeCV(alphas=[0.01, 0.1, 1, 10, 100])
model.fit(X_train, y_train)

print(f"Оптимальное λ = {model.alpha_}")

Ключевые преимущества регуляризации

  1. Борьба с переучением — модель не запоминает шумы
  2. Лучшая генерализация — хорошо работает на новых данных
  3. Стабильность — модель менее чувствительна к изменениям тренировочного набора
  4. Интерпретируемость — L1 отбирает самые важные признаки
  5. Масштабируемость — работает с большим количеством признаков

Вывод

Регуляризация — это не просто техническая деталь, это обязательная практика современного Machine Learning. Без неё модели переучиваются и работают плохо на боевых данных. С регуляризацией мы находим баланс между fitting training data и generalizing to new data.

Объясните, что такое регуляризация и почему она полезна | PrepBro