Bagging

2.5.4

Bagging

Atualizado 2020-03-11 Leitura 2 min
Resumo
  • O Bagging treina o mesmo aprendiz base em muitas reamostras bootstrap e agrega previsões por média ou votação.
  • O principal ganho é a redução da variância, que estabiliza aprendizes de alta variância como árvores de decisão profundas.
  • O número de estimadores e a complexidade do modelo base controlam o equilíbrio entre robustez, precisão e custo computacional.

Intuição #

O Bagging funciona criando deliberadamente muitas versões ligeiramente diferentes do conjunto de treinamento. Cada modelo comete erros diferentes; a agregação cancela parte desse ruído, de modo que o preditor final é mais estável do que qualquer modelo individual.

Explicação Detalhada #

1. Procedimento #

  1. Criar múltiplas amostras bootstrap a partir dos dados de treinamento
  2. Treinar o mesmo modelo em cada amostra
  3. Calcular a média das previsões para regressão ou votar para classificação

O Bagging reduz principalmente a variância e torna o modelo mais estável.


2. Exemplo em Python #

import numpy as np
from sklearn.datasets import fetch_california_housing
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
from sklearn.tree import DecisionTreeRegressor
from sklearn.ensemble import BaggingRegressor

X, y = fetch_california_housing(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)

base = DecisionTreeRegressor(max_depth=None, random_state=0)
bagging = BaggingRegressor(
    estimator=base,
    n_estimators=100,
    max_samples=0.8,
    max_features=0.8,
    bootstrap=True,
    random_state=0,
)
bagging.fit(X_train, y_train)

pred = bagging.predict(X_test)
print("RMSE:", mean_squared_error(y_test, pred, squared=False))
print("OOB score:", bagging.oob_score_)

3. Hiperparâmetros #

  • n_estimators: Número de aprendizes. Mais árvores são mais estáveis, mas mais custosas.
  • max_samples, max_features: Fração de amostras/características por aprendiz.
  • bootstrap: Se a amostragem é feita com reposição; bootstrap_features faz o mesmo para as características.
  • oob_score: Estimar a generalização a partir de amostras fora do saco (out-of-bag).

4. Prós e contras #

PrósContras
Fácil de implementar e paralelizarPrecisa manter muitos modelos na memória
Grande redução de variânciaNão reduz o viés; aprendizes fracos precisam ser razoáveis
A estimativa OOB evita uma divisão extra de validaçãoMenos interpretável que uma única árvore

5. Resumo #

  • O Bagging estabiliza modelos por meio de reamostragem de dados e cálculo da média das previsões.
  • Árvores de decisão + Bagging = Random Forest, então vale a pena lembrar dessa relação.
  • Funciona bem em escala quando o treinamento pode ser paralelizado.