🎯 Extreme Gradient Boosting

Em poucas palavras

O XGBoost é uma implementação regularizada e altamente otimizada de Gradient Boosting com árvores de decisão: cada nova árvore é treinada para corrigir os errors residuais do conjunto anterior. Proposto por Tianqi Chen e Carlos Guestrin (2016), tornou-se referência para problemas de regressão e classificação em dados tabulares.


📝 Notas e Desenvolvimento

  • Ideia central (boosting): em vez de treinar árvores independentes e tirar a média — como no Random Forest (bagging) —, o boosting treina árvores em sequência. A predição final é a soma das contribuições de todas as árvores, cada uma “empurrando” o modelo na direção que mais reduz a função de perda.
  • O que o XGBoost acrescenta ao gradient boosting clássico:
    • Função objetivo regularizada: penaliza o número de folhas () e o tamanho dos pesos das folhas (L2 com , L1 com ), combatendo o Overfitting.
    • Aproximação de segunda ordem: usa o gradiente e a hessiana da perda (expansão de Taylor), o que dá um critério de divisão mais preciso e permite qualquer perda duas vezes diferenciável.
    • Shrinkage e subamostragem: a taxa de aprendizado () reduz o peso de cada árvore; a amostragem de linhas e de colunas acrescenta aleatoriedade e reduz variância.
    • Tratamento nativo de valores ausentes: cada divisão aprende uma “direção padrão” para onde enviar os dados faltantes (sparsity-aware split finding).
    • Engenharia de sistemas: busca de divisões paralelizada, estruturas amigáveis ao cache e processamento fora da memória — daí o “Extreme” do nome.
  • Hiperparâmetros que mais importam:
HiperparâmetroPapel
n_estimatorsNúmero de árvores
learning_rate ()Peso de cada árvore; menor exige mais árvores
max_depthProfundidade máxima (complexidade de cada árvore)
subsample / colsample_bytreeFração de linhas / colunas usada por árvore
reg_lambda, reg_alpha, gammaRegularização
min_child_weightPeso mínimo em uma folha; limita divisões espúrias
  • Exemplo mínimo em Python:
from xgboost import XGBRegressor
from sklearn.model_selection import train_test_split
 
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
 
modelo = XGBRegressor(n_estimators=500, learning_rate=0.05, max_depth=6,
                      subsample=0.8, colsample_bytree=0.8)
modelo.fit(X_train, y_train)
y_pred = modelo.predict(X_test)
  • Uso como modelo substituto (surrogate): por set rápido para prever e preciso em dados tabulares, o XGBoost é frequentemente usado para imitar um simulador caro. No artigo revisado sobre fazendas verticais, ele substituiu um modelo analítico baseado em física para prever produção, demanda de CO₂ e energia, acelerando em cerca de 19,6 vezes a avaliação de candidatos pelos algoritmos de otimização.

Quando usar

Dados tabulares, com relações não lineares e interações entre variáveis. Para imagens, texto ou áudio, redes neurais costumam set mais adequadas.


📚 Referências e Fontes

🔗 Conexões do Cofre

🌐 Referências Externas