Ответ
Дисперсия предсказаний ансамбля обратно пропорциональна количеству независимых базовых моделей. Это ключевая причина, почему ансамбли (бэггинг, случайный лес) работают лучше отдельных моделей с высокой дисперсией, таких как глубокие деревья.
Теоретическое обоснование:
Если у нас есть N независимых и одинаково распределенных моделей с дисперсией предсказаний σ², то дисперсия среднего их предсказаний (ансамбля) равна:
[ text{Var}(hat{f}_{text{ens}}) = frac{sigma^2}{N} ]
Что это значит на практике:
- Увеличение числа моделей
Nуменьшает разброс (дисперсию) итогового предсказания ансамбля, делая его более стабильным и надежным. - Важное допущение: модели должны быть максимально независимы. На практике полной независимости нет, поэтому выигрыш в снижении дисперсии хоть и значительный, но меньше теоретического.
Пример с RandomForest (бэггингом деревьев):
from sklearn.ensemble import RandomForestRegressor
from sklearn.datasets import make_regression
import numpy as np
# Генерируем данные
X, y = make_regression(n_samples=1000, n_features=20, noise=0.5)
# Оценим дисперсию предсказаний для разного числа деревьев
variances = []
n_estimators_range = [1, 5, 10, 50, 100, 200]
for n in n_estimators_range:
model = RandomForestRegressor(n_estimators=n, random_state=42)
model.fit(X, y)
# Соберем предсказания каждого дерева
predictions = np.array([tree.predict(X) for tree in model.estimators_])
# Дисперсия среднего предсказания по ансамблю
ensemble_variance = np.var(predictions.mean(axis=0))
variances.append(ensemble_variance)
# График variances от n_estimators_range покажет спад дисперсии с ростом числа деревьев.
Вывод: Добавление большего количества моделей в ансамбль снижает дисперсию ошибки, что напрямую ведет к повышению обобщающей способности и стабильности модели, особенно для шумных данных.