Что такое bias-variance tradeoff (компромисс смещения-дисперсии)?

«Что такое bias-variance tradeoff (компромисс смещения-дисперсии)?» — вопрос из категории Статистика и теория вероятностей, который задают на 26% собеседований Data Scientist / ML Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Bias-variance tradeoff — это фундаментальная дилемма в машинном обучении, описывающая компромисс между двумя источниками ошибки, которые мешают модели хорошо обобщать на новые данные.

  • Ошибка из-за смещения (Bias): Возникает из-за слишком упрощенных предположений модели. Высокий bias ведет к недообучению — модель плохо работает как на обучающих, так и на тестовых данных.
  • Ошибка из-за дисперсии (Variance): Возникает из-за чрезмерной чувствительности модели к шуму в обучающей выборке. Высокая variance ведет к переобучению — модель отлично работает на обучающих данных, но плохо на новых.

Общая ошибка = Bias² + Variance + Неустранимая ошибка

Практическая демонстрация на примере полиномиальной регрессии:

import numpy as np
import matplotlib.pyplot as plt
from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error

np.random.seed(42)
X = np.linspace(0, 1, 20)
y_true = np.sin(2 * np.pi * X)
y_noisy = y_true + np.random.normal(0, 0.2, X.shape)  # Добавляем шум
X = X.reshape(-1, 1)

degrees = [1, 4, 15]  # Низкая, оптимальная, высокая сложность
plt.figure(figsize=(12, 4))

for i, degree in enumerate(degrees):
    poly = PolynomialFeatures(degree)
    X_poly = poly.fit_transform(X)
    model = LinearRegression().fit(X_poly, y_noisy)
    y_pred = model.predict(X_poly)

    mse = mean_squared_error(y_true, y_pred)
    # Визуализация...
    # График 1 (degree=1): Прямая линия — высокий bias, низкая variance.
    # График 2 (degree=4): Кривая, близкая к истинной — оптимальный баланс.
    # График 3 (degree=15): Кривая, проходящая через все шумные точки — низкий bias, высокая variance (переобучение).

Как управлять компромиссом?

  • Для уменьшения bias: Увеличить сложность модели, добавить признаки.
  • Для уменьшения variance: Упростить модель, добавить регуляризацию (L1/L2), использовать больше данных, применить ансамбли (бэггинг). Цель — выбрать модель и гиперпараметры, минимизирующие общую ошибку на валидационной/тестовой выборке.