Sigmoidal
  • Home
  • Pós-Graduação
  • Blog
  • Sobre Mim
  • Contato
Sem Resultado
Ver Todos Resultados
  • English
  • Home
  • Pós-Graduação
  • Blog
  • Sobre Mim
  • Contato
Sem Resultado
Ver Todos Resultados
Sigmoidal
Sem Resultado
Ver Todos Resultados

XGBoost em Python: Tutorial Completo

Carlos Melo por Carlos Melo
agosto 28, 2019
em Machine Learning, Python, Tutoriais
1
261
COMPARTILHAMENTOS
8.7k
VIEWS
Publicar no LinkedInCompartilhar no FacebookCompartilhar no Whatsapp

Se você trabalha com dados tabulares e ainda não conhece o XGBoost, está deixando performance na mesa. Esse é o algoritmo que dominou competições do Kaggle por anos e continua sendo a primeira escolha de cientistas de dados para problemas de classificação e regressão com dados estruturados.

Neste tutorial, vou explicar o que é o XGBoost, como ele funciona por dentro, e como implementar do zero em Python. Vou mostrar também quando ele é a melhor escolha e como se compara com Random Forest e LightGBM.

💻

Código do Artigo

Acesse o código-fonte deste artigo gratuitamente.

Informe seu email para acessar o código:

✓ Seu código está pronto!

Abrir no Google Colab →

O Que é o XGBoost?

XGBoost significa _eXtreme Gradient Boosting_. É uma biblioteca de machine learning criada por Tianqi Chen em 2014 que implementa o algoritmo de gradient boosting de forma otimizada para velocidade e performance.

Na prática, o XGBoost constrói centenas de árvores de decisão pequenas em sequência, onde cada árvore nova tenta corrigir os erros das anteriores. O resultado final é a soma das previsões de todas essas árvores.

Pense assim: imagine que você pede para 100 pessoas darem um palpite sobre o preço de uma casa. Cada pessoa, individualmente, vai errar bastante. Mas se cada pessoa puder ver os erros de quem veio antes e tentar corrigi-los, a previsão final do grupo vai ser muito mais precisa do que qualquer palpite individual.

É exatamente isso que o XGBoost faz. E faz de forma extremamente eficiente, usando paralelização, regularização e otimizações que o tornaram o algoritmo mais usado em competições de machine learning por vários anos consecutivos.

Por que o XGBoost é tão popular?

  • Performance superior em dados tabulares: consistentemente vence outros algoritmos em benchmarks com dados estruturados
  • Velocidade: implementação otimizada em C++ com suporte a paralelização
  • Regularização embutida: parâmetros L1 e L2 ajudam a evitar overfitting
  • Lida bem com dados faltantes: trata valores ausentes nativamente, sem precisar de imputação manual
  • Flexibilidade: funciona para regressão, classificação binária, classificação multiclasse e ranking

Como Funciona o Gradient Boosting

Para entender o XGBoost, você precisa entender dois conceitos: árvores de decisão e gradient boosting.

Árvores de Decisão

Árvores de decisão são métodos onde uma função recebe um vetor de valores (atributos) como entrada e retorna uma decisão de saída.

XGBoost é um tipo de algoritmo baseado em Decision Trees (árvores de decisão)
XGBoost é uma categoria de algoritmo baseada em _Decision Trees_ (árvores de decisão).

Para chegar no valor de saída, a árvore executa uma série de testes, criando ramificações ao longo do processo. Cada nó representa uma decisão. Quanto mais vezes um atributo é usado nas tomadas de decisão, maior será sua importância relativa no modelo.

Gradient Boosting

_Gradient Boosting_ combina resultados de muitos classificadores “fracos” (tipicamente árvores de decisão pequenas) que, juntos, formam um modelo forte.

O processo funciona assim:

  1. Treina a primeira árvore nos dados originais
  2. Calcula os resíduos (erros) da primeira árvore
  3. Treina a segunda árvore para prever esses resíduos
  4. Repete o processo, sempre treinando a próxima árvore nos erros das anteriores
  5. A previsão final é a soma de todas as árvores

O algoritmo usa _Gradient Descent_ para minimizar a função de perda (_loss_) a cada nova árvore adicionada. Daí o nome “gradient” boosting.

O XGBoost adiciona otimizações importantes sobre o gradient boosting tradicional: regularização para evitar overfitting, poda inteligente de árvores, e paralelização que o torna muito mais rápido.

Implementando XGBoost com Python

Para mostrar na prática como implementar o XGBoost, vou usar a API do Kaggle para baixar o _dataset_ House Prices: Advanced Regression Techniques.

Implementando o algoritmo de Machine Learning XGBoost na prática com Python

Se você não conhece a API Kaggle ou não quer usar ela, não tem problema! É só baixar o arquivo _zip_ diretamente do link acima.

Diferentemente do que fizemos no Projeto do Titanic, onde a análise foi completa, aqui o objetivo é mostrar a implementação do XGBoost apenas.

Não irei nem baixar todo o conjunto de dados, apenas um único arquivo: train.csv.

!mkdir -p data
!kaggle competitions download -c house-prices-advanced-regression-techniques -f train.csv -p data

Importando e preparando os dados

Após importar o pacote Pandas, vou importar o arquivo _csv_ para dentro de um DataFrame.

Para você entender o _dataset_, vou listar as 5 primeiras linhas de entrada do modelo. Recomendo que você baixe o _notebook_ na tua máquina e faça o mesmo.

Se você estiver executando diretamente na sua máquina, pode ser que não tenha o pacote xgboost instalado. Nesse caso, instale pela linha de comando: pip install xgboost

# importar bibliotecas necessárias
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.impute import SimpleImputer
from xgboost import XGBRegressor
from sklearn.metrics import mean_absolute_error
# importar train.csv em DataFrame
df = pd.read_csv('data/train.csv')
# visualizar as 5 primeiras entradas
df.head()

A variável alvo é a coluna _SalePrice_. Para não termos que trabalhar as variáveis categóricas aqui, vou eliminar todas as colunas do tipo _object_ e ficar apenas com as numéricas.

Na sequência, vou separar o _DataFrame_ entre variáveis X e y, dividir entre conjuntos de treino e teste, e usar SimpleImputer() para lidar com os valores ausentes.

Se você tem dúvida sobre como lidar com valores faltantes, escrevi um artigo falando exatamente sobre isso.

# separar entre as variáveis X e y
y = df['SalePrice']
X = df.drop(['SalePrice'], axis=1).select_dtypes(exclude=['object'])
# dividir entre conjuntos de treino e teste
train_X, test_X, train_y, test_y = train_test_split(X.values, y.values, test_size=0.2)
# lidar com os valores ausentes
df_imputer = SimpleImputer()
train_X = df_imputer.fit_transform(train_X)
test_X = df_imputer.transform(test_X)

Treinando o modelo XGBoost

Com os dados preparados, agora é a hora de construir o modelo. Seguindo o mesmo padrão do sklearn, depois de instanciar XGBRegressor() basta executar o método fit(), passando o _dataset_ de treino como argumento.

Na sequência, vamos realizar as previsões e calcular o erro médio absoluto para ver o desempenho.

# instanciar o modelo XGBoost
model = XGBRegressor()
# chamar o fit para o modelo
model.fit(train_X, train_y, verbose=False)
# fazer previsões em cima do dataset de teste
predictions = model.predict(test_X)
print("Erro Médio Absoluto: {:.2f}".format(mean_absolute_error(predictions, test_y)))

Construir um modelo é relativamente rápido comparado às outras etapas de um projeto. Mas tem um passo a mais que faz muita diferença nos resultados.

Ajustando hiperparâmetros do XGBoost

Você viu que implementar o XGBoost é simples. Mas será que é tão fácil conseguir aqueles resultados incríveis nas competições do Kaggle?

Com certeza, não. Se fosse assim, qualquer pessoa estaria no topo do _ranking_.

Parameter Tunning no XGBoost - Ajustando parâmetros.

O XGBoost é extremamente robusto e poderoso, mas tem um grande número de parâmetros para serem ajustados. Os mais importantes são:

  • n_estimators: número de árvores (mais árvores = mais capacidade, mas mais lento e risco de overfitting)
  • max_depth: profundidade máxima de cada árvore (valores menores regularizam o modelo)
  • learning_rate: taxa de aprendizado (valores menores = aprendizado mais gradual, geralmente melhores resultados com mais árvores)
  • subsample: fração dos dados usada para treinar cada árvore (ajuda a evitar overfitting)
  • colsample_bytree: fração das features usadas por árvore (similar ao Random Forest)

Para ajustar esses parâmetros, não tem escapatória. Você precisa entender a teoria por trás do XGBoost e experimentar diferentes combinações. Ferramentas como GridSearchCV e Optuna ajudam nesse processo.

XGBoost vs Random Forest vs LightGBM

Se você trabalha com dados tabulares, provavelmente já se perguntou: quando usar XGBoost, Random Forest ou LightGBM? Cada um tem suas forças.

Aspecto XGBoost Random Forest LightGBM
Tipo Gradient boosting Bagging (ensemble) Gradient boosting
Velocidade Rápido Moderado Muito rápido
Dados grandes (>100K linhas) Bom Bom Excelente
Risco de overfitting Médio (tem regularização) Baixo Médio-alto
Features categóricas Precisa encodar Precisa encodar Suporte nativo
Facilidade de tuning Muitos parâmetros Poucos parâmetros Muitos parâmetros
Interpretabilidade Feature importance Feature importance Feature importance

Quando usar cada um:

  • XGBoost: sua escolha padrão para dados tabulares. Melhor equilíbrio entre performance e robustez. Funciona bem em datasets de qualquer tamanho.
  • Random Forest: quando você quer um modelo rápido, estável e que não precisa de muito tuning. Bom como baseline.
  • LightGBM: quando o dataset é grande (milhões de linhas) e velocidade importa. Comum em produção por ser mais rápido que o XGBoost.

Na prática, a diferença de performance entre os três é pequena na maioria dos problemas. O XGBoost continua sendo a escolha mais segura e a mais usada em competições e projetos de Data Science.

Takeaways

  • XGBoost é o algoritmo padrão para dados tabulares. Combina árvores de decisão com gradient boosting para alcançar performance superior em problemas de classificação e regressão.
  • O segredo está no boosting sequencial. Cada árvore nova corrige os erros das anteriores, e a regularização embutida evita overfitting.
  • Implementação é simples. Com poucas linhas de código usando a API do sklearn, você treina e faz previsões. O desafio real está no ajuste de hiperparâmetros.
  • XGBoost vs Random Forest vs LightGBM: XGBoost é o mais equilibrado, Random Forest é o mais estável, LightGBM é o mais rápido. Para a maioria dos problemas, qualquer um dos três funciona bem.
  • Pratique com projetos reais. Competições do Kaggle são o melhor campo de treino. Comece replicando notebooks de outras pessoas e evolua a teoria conforme a necessidade.
Compartilhar18Compartilhar104Enviar
Post Anterior

Aplicações de Deep Learning no Espaço

Próximo Post

Como Aprender Data Science?

Carlos Melo

Carlos Melo

Engenheiro de Visão Computacional graduado em Ciências Aeronáuticas pela Academia da Força Aérea (AFA) e Mestre em Engenharia Aeroespacial pelo Instituto Tecnológico de Aeronáutica (ITA).

Relacionado Artigos

5 Livros de Machine Learning e Data Science para 2026
Artigos

5 Livros de Machine Learning e Data Science para 2026

por Carlos Melo
abril 7, 2026
Deep Learning

Gaussian Splatting: Reconstrução 3D em Tempo Real com Python

por Carlos Melo
abril 5, 2026
Matemática da Visão Computacional: Rotação, Translação e Escala com Python
Python

Matemática da Visão Computacional: Rotação, Translação e Escala com Python

por Carlos Melo
abril 4, 2026
Deep Learning

Introdução ao PyTorch: Como Treinar sua Primeira CNN

por Carlos Melo
abril 1, 2026
Artigos

Analisando uma Tomografia 3D com Python

por Carlos Melo
março 28, 2026
Próximo Post
Como Aprender Data Science?

Como Aprender Data Science?

Comentários 1

  1. Margarete Magalhaes says:
    5 anos atrás

    Que didática mais legal !!!!!

    Responder

Deixe um comentário Cancelar resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Mais Populares

  • ORB-SLAM 3: Tutorial Completo para Mapeamento 3D e Localização em Tempo Real

    460 compartilhamentos
    Compartilhar 184 Tweet 115
  • Vision Transformer (ViT): Implementação com Python

    6 compartilhamentos
    Compartilhar 2 Tweet 2
  • O Que é Amostragem e Quantização no Processamento de Imagens

    49 compartilhamentos
    Compartilhar 20 Tweet 12
  • Introdução ao MediaPipe e Pose Estimation

    552 compartilhamentos
    Compartilhar 221 Tweet 138
  • Processamento de Nuvens de Pontos com Open3D e Python

    78 compartilhamentos
    Compartilhar 31 Tweet 20
  • Em Alta
  • Comentários
  • Mais Recente
Como Tratar Dados Ausentes com Pandas

Como Tratar Dados Ausentes com Pandas

agosto 13, 2019
Como usar o DALL-E 2 para gerar imagens a partir de textos

Como usar o DALL-E 2 para gerar imagens a partir de textos

dezembro 25, 2022
Introdução ao MediaPipe e Pose Estimation

Introdução ao MediaPipe e Pose Estimation

julho 15, 2023

ORB-SLAM 3: Tutorial Completo para Mapeamento 3D e Localização em Tempo Real

abril 10, 2023
Como Analisar Ações da Bolsa com Python

Como Analisar Ações da Bolsa com Python

15
Setembro Amarelo: Análise do Suicídio no Brasil, com Data Science

Setembro Amarelo: Análise do Suicídio no Brasil, com Data Science

13
Como Aprender Data Science?

Como Aprender Data Science?

9
Qual o Cenário de Data Science no Brasil hoje?

Qual o Cenário de Data Science no Brasil hoje?

8
5 Livros de Machine Learning e Data Science para 2026

5 Livros de Machine Learning e Data Science para 2026

abril 7, 2026

Gaussian Splatting: Reconstrução 3D em Tempo Real com Python

abril 5, 2026
Matemática da Visão Computacional: Rotação, Translação e Escala com Python

Matemática da Visão Computacional: Rotação, Translação e Escala com Python

abril 4, 2026

Introdução ao PyTorch: Como Treinar sua Primeira CNN

abril 1, 2026
Instagram Youtube LinkedIn Twitter
Sigmoidal

O melhor conteúdo técnico de Data Science, com projetos práticos e exemplos do mundo real.

Seguir no Instagram

Categorias

  • Aeroespacial
  • Artigos
  • Blog
  • Carreira
  • Cursos
  • Data Science
  • Deep Learning
  • Destaques
  • Entrevistas
  • IA Generativa
  • Livros
  • Machine Learning
  • Notícias
  • Python
  • Teoria
  • Tutoriais
  • Visão Computacional
  • Youtube

Navegar por Tags

camera calibration carreira chatgpt cientista de dados cnn computer vision Cursos dados desbalanceados data science data science na prática decision tree deep learning deploy detecção de objetos gpt-3 IA generativa image formation inteligência artificial jupyter kaggle keras livros machine learning matplotlib mnist nft openai opencv pandas processamento de imagens profissão python pytorch redes neurais redes neurais convolucionais regressão linear regressão logística salário sklearn tensorflow tutorial visão computacional vídeo youtube árvore de decisão

© 2024 Sigmoidal - Aprenda Data Science, Visão Computacional e Python na prática.

Welcome Back!

Login to your account below

Forgotten Password?

Retrieve your password

Please enter your username or email address to reset your password.

Log In

Add New Playlist

Sem Resultado
Ver Todos Resultados
  • Home
  • Pós-Graduação
  • Blog
  • Sobre Mim
  • Contato
  • English

© 2024 Sigmoidal - Aprenda Data Science, Visão Computacional e Python na prática.