Как связана дисперсия предсказаний с количеством базовых моделей в ансамбле?

«Как связана дисперсия предсказаний с количеством базовых моделей в ансамбле?» — вопрос из категории Деревья и ансамбли, который задают на 26% собеседований Data Scientist / ML Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Дисперсия предсказаний ансамбля обратно пропорциональна количеству независимых базовых моделей. Это ключевая причина, почему ансамбли (бэггинг, случайный лес) работают лучше отдельных моделей с высокой дисперсией, таких как глубокие деревья.

Теоретическое обоснование: Если у нас есть N независимых и одинаково распределенных моделей с дисперсией предсказаний σ², то дисперсия среднего их предсказаний (ансамбля) равна:

[ text{Var}(hat{f}_{text{ens}}) = frac{sigma^2}{N} ]

Что это значит на практике:

  1. Увеличение числа моделей N уменьшает разброс (дисперсию) итогового предсказания ансамбля, делая его более стабильным и надежным.
  2. Важное допущение: модели должны быть максимально независимы. На практике полной независимости нет, поэтому выигрыш в снижении дисперсии хоть и значительный, но меньше теоретического.

Пример с 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 покажет спад дисперсии с ростом числа деревьев.

Вывод: Добавление большего количества моделей в ансамбль снижает дисперсию ошибки, что напрямую ведет к повышению обобщающей способности и стабильности модели, особенно для шумных данных.