Ответ
На практике моделью, которая при грамотной настройке стремится к низкому смещению (high bias) и низкой дисперсии (high variance), является ансамбль на основе градиентного бустинга, такой как XGBoost или LightGBM. Эти алгоритмы комбинируют силу последовательного исправления ошибок (низкое смещение) с мощными механизмами регуляризации (контроль дисперсии).
Пример с XGBoost для задачи классификации:
import xgboost as xgb
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split, cross_val_score
from sklearn.metrics import accuracy_score
import numpy as np
# Генерация синтетических данных
X, y = make_classification(n_samples=1000, n_features=20, n_informative=15, random_state=42)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Конфигурация XGBoost с акцентом на регуляризацию
model = xgb.XGBClassifier(
n_estimators=150,
learning_rate=0.05, # Малый шаг для плавного обучения
max_depth=4, # Ограничение глубины деревьев (борьба с дисперсией)
min_child_weight=3, # Минимальный вес в листе
subsample=0.8, # Бэггинг: обучение на 80% данных для каждого дерева
colsample_bytree=0.8, # Случайное подмножество признаков для дерева
reg_alpha=0.5, # L1-регуляризация
reg_lambda=1.0, # L2-регуляризация
random_state=42,
use_label_encoder=False,
eval_metric='logloss'
)
# Оценка стабильности модели с помощью кросс-валидации (низкая дисперсия -> малый разброс scores)
cv_scores = cross_val_score(model, X_train, y_train, cv=5, scoring='accuracy')
print(f"CV Accuracy: {cv_scores.mean():.4f} (+/- {cv_scores.std() * 2:.4f})")
# Обучение и оценка на тесте
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
test_accuracy = accuracy_score(y_test, y_pred)
print(f"Test Accuracy: {test_accuracy:.4f}")
# Анализ важности признаков (как признак низкого смещения - модель использует структуру данных)
import matplotlib.pyplot as plt
xgb.plot_importance(model, max_num_features=10)
plt.show()
Почему это работает:
- Низкое смещение: Бустинг последовательно строит деревья, которые исправляют ошибки предыдущих, что позволяет очень точно аппроксимировать сложные зависимости в данных.
- Низкая дисперсия: Параметры
max_depth,subsample,colsample_bytree,reg_alpha/lambdaжестко контролируют сложность отдельных деревьев и всего ансамбля, предотвращая переобучение на шум. Кросс-валидация с малым стандартным отклонением score подтверждает устойчивость модели.