Урок 10. Борьба с переобучением: L1/L2-регуляризация, пайплайны и метод главных компонент (PCA)

На предыдущем этапе мы увидели, что по мере усложнения модели (увеличения степени полинома) точность на обучении продолжает расти, но на тестовых данных начинает стремительно падать. Это классический симптом переобучения (overfitting). На этом занятии мы изучим методы борьбы со сложностью моделей, автоматизируем процессы предобработки и разберем алгоритм снижения размерности.

1. Регуляризация (Regularization)

При переобучении веса модели (коэффициенты \(w\)) становятся аномально большими. Алгоритм пытается идеально подстроиться под малейшие колебания и шум в обучающей выборке, из-за чего модель становится «дерганой» и теряет обобщающую способность.

Суть регуляризации заключается в намеренном «штрафовании» модели за избыточную величину коэффициентов. Мы модифицируем целевую функцию оптимизации:

Минимизировать (Ошибка предсказания MSE + Штраф за большие коэффициенты)

Существует два классических способа расчета этого штрафа:

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

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

$$ \text{Штраф}_{L1} = \alpha \sum_{i=1}^{p} |w_i| $$

Эффект: Lasso не просто уменьшает коэффициенты, но и способна полностью обнулять веса малозначимых признаков. Таким образом, Lasso выполняет автоматический отбор признаков (feature selection), исключая бесполезные переменные из уравнений.

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

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

$$ \text{Штраф}_{L2} = \alpha \sum_{i=1}^{p} w_i^2 $$

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

Гиперпараметр \(\alpha\) (alpha) в обоих методах контролирует силу штрафа: чем больше \(\alpha\), тем сильнее сжимаются коэффициенты и тем проще становится модель.

2. Стандартизация и нормализация (Feature Scaling)

Многие алгоритмы машинного обучения (особенно основанные на градиентном спуске) критически чувствительны к масштабу признаков. Если один признак измеряется в тысячах (площадь), а другой — в единицах (количество комнат), то первый будет доминировать при расчете градиента, делая ландшафт функции потерь вытянутым каньоном.

Два основных подхода приведения признаков к единому масштабу:

  1. Стандартизация (StandardScaler): преобразует данные так, чтобы их среднее значение было равно 0, а стандартное отклонение — 1.
    $$ X_{std} = \frac{X – \mu}{\sigma} $$
    Этот метод более устойчив (робастен) к выбросам и является выбором по умолчанию для линейных моделей.
  2. Нормализация (MinMaxScaler): линейно сжимает данные в строго заданный диапазон (обычно от 0 до 1).
    $$ X_{norm} = \frac{X – X_{min}}{X_{max} – X_{min}} $$
    Метод очень чувствителен к выбросам: один экстремальный аномальный элемент может «сплющить» все остальные значения в узкий неинформативный диапазон.

3. Конвейеризация данных (Pipeline)

При профессиональном подходе ручной и хаотичный перебор шагов (выделили полиномы → отмасштабировали → обучили → оценили → повторили для другой степени) превращается в хаос. Кроме того, возрастает риск совершить критическую ошибку — **утечку данных (Data Leakage)**, например, случайно отмасштабировав тестовую выборку вместе с обучающей до их разделения [28].

Pipeline в Scikit-Learn — это объект, объединяющий цепочку преобразований данных и итоговое обучение модели в единый конвейер. Мы управляем всем сложным процессом всего двумя командами: pipeline.fit() для обучения и pipeline.predict() для предсказания.

4. Разделение на три части: золотой стандарт оценки ИИ

Чтобы честно найти лучшую комбинацию гиперпараметров (степень полинома, тип модели, коэффициент \(\alpha\)), мы делим данные на три части:

  1. Train set (Обучающая выборка): используется исключительно для обучения весов моделей (настройки «учебника»).
  2. Validation set (Валидационная выборка): используется для подбора лучших гиперпараметров и архитектур (сдача «пробных тестов»). Мы прогоняем разные пайплайны по валидационной выборке и выбираем модель-чемпиона с наилучшим показателем \(R^2\).
  3. Test set (Тестовая выборка): используется только один раз в самом конце. На ней мы проверяем модель-чемпиона, чтобы получить итоговую непредвзятую оценку качества в реальных условиях («выпускной экзамен»).

В ходе автоматического поиска по сетке (Grid Search) лучшей конфигурацией для нашего датасета ЦИАН оказалась модель Ridge-регуляризации со степенью полинома 2 и коэффициентом \(\alpha=1.0\), показавшая честную точность \(R^2 = 0.694\) на отложенном тесте.

5. Метод главных компонент (PCA)

Метод главных компонент (Principal Component Analysis, PCA) — это алгоритм линейного снижения размерности данных без существенных потерь информации.

Математически метод основан на сингулярном разложении матриц (SVD) и проецировании исходных признаков на новые ортогональные оси (компоненты) так, чтобы первая компонента (PC1) описывала максимально возможную дисперсию (разброс) данных, вторая (PC2) — максимум из оставшейся дисперсии и так далее.

Метрика R2

Зачем это нужно?

  • Визуализация многомерных признаковых пространств (сведение к 2D или 3D графикам).
  • Ускорение обучения моделей за счет отбрасывания шумовых и дублирующих признаков.
  • Анонимизация данных: проецирование признаков стирает физический смысл колонок. На выходе мы получаем нечитаемый матричный массив чисел, сохраняющий дисперсию, что позволяет безопасно передавать датасеты на обучение во внешние облачные сервисы.

План занятия

  1. Регуляризация как метод борьбы с переобучением
    • Понятие сложности модели и неконтролируемый рост весовых коэффициентов (\(w\)) при усложнении признаков.
    • Философская концепция Бритвы Оккама в Data Science: выбор в пользу более простых моделей.
    • Математический смысл регуляризации: изменение целевой функции обучения путем добавления штрафа за величину коэффициентов (\(\text{Loss} + \text{Penalty}\)).
    • L1-регуляризация (Lasso Regression): формула штрафа по сумме модулей весов и эффект автоматического зануления малозначимых признаков (Feature Selection).
    • L2-регуляризация (Ridge Regression): формула штрафа по сумме квадратов весов, сглаживание коэффициентов и устранение проблемы мультиколлинеарности.
  2. Масштабирование признаков (Scaling)
    • Проблема дисбаланса масштабов признаков (например, площадь в сотнях метров против количества комнат в единицах).
    • Стандартизация (StandardScaler): центрирование данных к среднему 0 и единичному отклонению. Формула: \(X_{std} = \frac{X – \mu}{\sigma}\). Робастность к выбросам.
    • Нормализация (MinMaxScaler): линейное масштабирование признаков строго в диапазон \([0, 1]\). Чувствительность к выбросам.
  3. Конвейеризация (Pipeline)
    • Проблема утечки данных (Data Leakage) при ручной последовательной обработке признаков до их разделения.
    • Пайплайн в Scikit-Learn: создание единого сквозного конвейера обработки данных (генерация полиномов, масштабирование) и обучения модели. Повышение безопасности, гибкости и автоматизации экспериментов.
  4. Разделение выборки на три части — Золотой стандарт
    • Роли выборок: тренировочная (Train — «учебники»), валидационная (Validation — «пробные тесты» для тюнинга гиперпараметров) и тестовая (Test — честный «экзамен»).
    • Реализация алгоритма автоматического перебора моделей по сетке (Grid Search) с использованием пайплайнов.
    • Анализ логов оптимизации и выбор лучшей конфигурации (победа Ridge-регуляризации со степенью полинома 2).
  5. Метод главных компонент (PCA)
    • Снижение размерности признакового пространства: проецирование матрицы на новые ортогональные оси (компоненты), описывающие максимальную дисперсию данных.
    • Прикладные задачи метода: визуализация многомерных данных, борьба с проклятием размерности и анонимизация чувствительной информации перед отправкой на внешнее обучение.

Не уходите просто так – не упустите возможность только здесь и сейчас получить скиду!

Индивидуальная консультация по Яндекс Директу или Google Ads со скидкой

25%

"*"обозначает обязательные поля

Это поле используется для проверочных целей, его следует оставить без изменений.