XGBoost
XGBoost é uma biblioteca de gradient boosting que adiciona árvores de decisão regularizadas uma de cada vez, uma das principais opções para dados tabulares. Como funciona, com código.
XGBoost (eXtreme Gradient Boosting) é uma biblioteca de código aberto para árvores de decisão com boosting de gradiente e uma das ferramentas mais usadas para dados tabulares. Tianqi Chen iniciou o projeto como uma pesquisa na Universidade de Washington e o lançou em 2014; o artigo da KDD de 2016 XGBoost: um sistema escalável de boosting de árvores, escrito com Carlos Guestrin, descreveu seu objetivo regularizado e o projeto do sistema. A biblioteca, mantida pela comunidade DMLC, lida com classificação, regressão e ranqueamento em Python, R, JVM e C, é executada em CPUs e GPUs e escala horizontalmente com Dask e Spark. O artigo relata que 17 das 29 soluções vencedoras de desafios publicadas no blog do Kaggle em 2015 usaram XGBoost.
Como o XGBoost funciona#
O XGBoost constrói um ensemble sequencialmente: começa com uma previsão constante e adiciona uma árvore a cada rodada de boosting, cada uma treinada para reduzir a função de perda deixada pelas árvores anteriores. A previsão final soma as saídas das árvores, cada uma reduzida pela taxa de aprendizado (eta, 0.3 por padrão) para que nenhuma árvore individual domine. Duas ideias do artigo definem como cada árvore é construída:
- Objetivo de segunda ordem: Para cada linha, o XGBoost calcula as derivadas primeira e segunda da função de perda em relação à previsão atual: o gradiente
ge a Hessianah. Uma folha cujas linhas têm soma de gradientesGe soma de HessianasHrecebe o peso-G / (H + λ), o mesmo passo de Newton usado por otimizadores de segunda ordem. - Árvores regularizadas: O objetivo adiciona uma penalidade
γpor folha e uma penalidade L2λsobre os pesos das folhas, além de uma penalidade L1 opcionalα. Uma divisão é mantida apenas quando seu ganho,½ [G_L²/(H_L + λ) + G_R²/(H_R + λ) − (G_L + G_R)²/(H_L + H_R + λ)] − γ, é positivo, incorporando a regularização à construção da árvore e limitando o sobreajuste.
As árvores têm profundidade limitada (max_depth, 6 por padrão) e crescem nível a nível, a menos que grow_policy="lossguide" ative o crescimento folha a folha. O treinamento geralmente usa parada antecipada em um conjunto de validação:
Valores ausentes, velocidade e escala#
A busca de divisões com reconhecimento de esparsidade do XGBoost treina com tabelas que contêm lacunas sem uma etapa de imputação. Em cada divisão, tenta enviar para a esquerda e, em seguida, para a direita as linhas com um valor ausente, mantendo como ramo padrão do nó a direção com maior ganho. O mesmo mecanismo permite examinar apenas as entradas armazenadas de matrizes esparsas, como codificações one-hot. Este exemplo oculta 30% de todos os valores de atributos no conjunto de dados de câncer de mama do scikit-learn e treina diretamente com as lacunas:
import numpy as np
import xgboost as xgb
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
X, y = load_breast_cancer(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)
# Hide 30% of all values; each split learns a default branch for missing ones
rng = np.random.default_rng(0)
X_train_nan = np.where(rng.random(X_train.shape) < 0.3, np.nan, X_train)
X_test_nan = np.where(rng.random(X_test.shape) < 0.3, np.nan, X_test)
for name, train, test in [("complete", X_train, X_test), ("30% missing", X_train_nan, X_test_nan)]:
model = xgb.XGBClassifier(n_estimators=200, max_depth=4, learning_rate=0.1)
model.fit(train, y_train)
print(f"{name}: accuracy {model.score(test, y_test):.3f}")O resultado mostra uma acurácia de teste de 0.972 com os dados completos e de 0.951 com 30% dos valores ausentes tanto no treinamento quanto nos conjuntos de teste.
Para ganhar velocidade, o método de árvore padrão hist agrupa cada atributo em até 256 intervalos (max_bin) e busca divisões nos limites dos intervalos, seguindo a mesma abordagem usada pelo LightGBM, enquanto exact examina todos os valores ordenados. Definir device="cuda" transfere o treinamento para uma GPU NVIDIA, enable_categorical=True divide colunas categóricas nativamente, e o modo de memória externa treina com conjuntos de dados maiores que a RAM. Desde a versão 2.1, os modelos são salvos por padrão no formato binário UBJSON.
XGBoost e métodos relacionados#
- LightGBM: Framework de boosting da Microsoft de 2016, que, por padrão, faz as árvores crescerem folha a folha e adiciona amostragem de linhas baseada em gradiente e agrupamento de atributos esparsos. Hoje, ambas as bibliotecas usam histogramas por padrão e compartilham a maioria das técnicas.
- CatBoost: Biblioteca de boosting da Yandex, que constrói árvores simétricas e codifica atributos categóricos com estatísticas ordenadas do alvo.
- Floresta aleatória: Método de bagging que treina árvores profundas de forma independente em amostras bootstrap e calcula sua média, reduzindo a variância e exigindo poucos ajustes.
- Aprendizado profundo: O padrão para entradas não estruturadas, como imagens, áudio e texto, nas quais as redes aprendem atributos a partir dos dados brutos. Em tabelas de atributos projetados, as árvores com boosting continuam sendo a referência a superar, e modelos fundamentais para dados tabulares, como o TabPFN, agora competem com elas em conjuntos de dados pequenos.
Aplicações no mundo real#
- Detecção de fraude e risco de crédito: Empresas de pagamento calculam uma pontuação para cada transação com base em atributos como valor, comerciante, localização, dispositivo e histórico da conta — uma tarefa central de modelagem preditiva na qual a inferência rápida do XGBoost atende a decisões em tempo real.
- Inspeção visual: Sistemas de qualidade na manufatura combinam dados de câmeras e sensores. As previsões do Ultralytics YOLO26 fornecem os dados da câmera:
result.summary()retorna a classe, a confiança e as coordenadas da caixa de cada defeito detectado. Uma fábrica pode agregar esses dados por peça e juntá-los às leituras de temperatura e pressão como características para um modelo XGBoost que prevê falhas. - Ranqueamento e previsão de cliques:
XGBRankertreina com o objetivorank:ndcgpor padrão para ordenar resultados de pesquisa, e classificadores binários preveem taxas de cliques em anúncios. - Problemas que vencem competições: O artigo da KDD lista as tarefas por trás das soluções vencedoras de 2015, incluindo previsão de vendas em lojas, classificação de eventos de física de altas energias, classificação de malware e previsão de abandono em cursos online massivos.










