Для чего уменьшать дисперсию в машинном обучении?

Ответ

Уменьшение дисперсии (variance) модели направлено на борьбу с переобучением (overfitting), когда модель слишком сложна и «запоминает» шум и конкретные примеры из обучающей выборки, вместо того чтобы выучить общие закономерности. В результате модель отлично работает на тренировочных данных, но плохо обобщает на новые, ранее не виденные данные (валидационная/тестовая выборка).

Высокая дисперсия — это симптом нестабильности: небольшие изменения в обучающих данных приводят к значительным изменениям в предсказаниях модели.

Основные методы уменьшения дисперсии:

  1. Регуляризация: Добавление штрафа за большие веса в функцию потерь.
    • L2-регуляризация (Ridge): loss = MSE + α * sum(weights²)
    • L1-регуляризация (Lasso): loss = MSE + α * sum(|weights|)
      from sklearn.linear_model import Ridge
      # Увеличение alpha усиливает регуляризацию, снижая дисперсию (но может увеличить смещение)
      model = Ridge(alpha=1.0)
      model.fit(X_train, y_train)
  2. Упрощение модели: Уменьшение глубины дерева, числа нейронов или слоев в нейросети.
  3. Ансамблирование (бэггинг): Усреднение предсказаний множества моделей, обученных на разных подвыборках (например, Random Forest).
  4. Dropout: Случайное «выключение» части нейронов во время обучения нейронной сети.
  5. Увеличение объема обучающих данных.

Цель — найти оптимальный баланс между смещением (bias, ошибка из-за слишком простой модели) и дисперсией (variance, ошибка из-за слишком сложной модели) — т.н. bias-variance tradeoff.