Ответ
Это фундаментальная дилемма, описывающая баланс между двумя источниками ошибки в модели. Общая ошибка = Смещение² + Дисперсия + Неустранимая ошибка.
- Высокое смещение (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
from sklearn.model_selection import train_test_split
# Генерация данных
np.random.seed(42)
X = 6 * np.random.rand(100, 1) - 3
y = 0.5 * X**2 + X + 2 + np.random.randn(100, 1)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3)
train_errors, test_errors = [], []
degrees = range(1, 15)
for degree in degrees:
poly_features = PolynomialFeatures(degree=degree, include_bias=False)
X_train_poly = poly_features.fit_transform(X_train)
X_test_poly = poly_features.transform(X_test)
model = LinearRegression()
model.fit(X_train_poly, y_train)
train_errors.append(mean_squared_error(y_train, model.predict(X_train_poly)))
test_errors.append(mean_squared_error(y_test, model.predict(X_test_poly)))
plt.plot(degrees, train_errors, 'b-', label='Ошибка на обучении')
plt.plot(degrees, test_errors, 'r-', label='Ошибка на тесте')
plt.xlabel('Степень полинома')
plt.ylabel('MSE')
plt.legend()
plt.show()
На графике видно, как при малой степени (1) ошибка высока из-за смещения, а при большой (14) ошибка на тесте растет из-за дисперсии. Оптимум обычно где-то посередине (например, степень 2 или 3).