Ответ
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), использовать больше данных, применить ансамбли (бэггинг). Цель — выбрать модель и гиперпараметры, минимизирующие общую ошибку на валидационной/тестовой выборке.