Minha IBM Efetue login Inscreva-se

O que é o XGBoost?

9 de maio de 2024

Autores

Eda Kavlakoglu

Program Manager

Erika Russi

Data Scientist

IBM

O que é o XGBoost?

O XGBoost (eXtreme Gradient Boosting) é uma biblioteca de aprendizado de máquina distribuída e de código aberto que utiliza árvores de decisão com reforço gradativo, um algoritmo de aprendizado supervisionado que faz uso do gradiente descendente. É conhecido por sua velocidade, eficiência e capacidade de escalar bem com grandes conjuntos de dados.

Desenvolvido por Tianqi Chen da University of Washington, o XGBoost é uma implementação avançada do gradient boosting com o mesmo framework geral; ou seja, combina árvores de aprendizes fracos em aprendizes fortes ao somar os resíduos. A biblioteca está disponível para C++, Python, R, Java, Scala e Julia1.

Árvores de decisão versus incentivo

Decision trees são utilizadas para tarefas de classificação ou regressão em aprendizado de máquina. Elas utilizam uma estrutura de árvore hierárquica, onde um nó interno representa uma funcionalidade, o ramo representa uma regra de decisão­ e cada nó de folha representa o resultado do conjunto de dados.

Como as decision trees são propensas a overfitting, métodos de ensemble, como o boosting, podem frequentemente ser usados para criar modelos mais robustos. O boosting combina várias árvores fracas individuais, ou seja, modelos que apresentam desempenho ligeiramente superior ao acaso, para formar um aprendiz forte. Cada aprendiz fraco é treinado sequencialmente para corrigir os erros cometidos pelos modelos anteriores. Após centenas de iterações, os aprendizes fracos são transformados em aprendizes fortes.

Random forests e algoritmos de boosting são técnicas populares de ensemble learning que utilizam árvores de aprendizes individuais para melhorar o desempenho preditivo. As random forests são baseadas no conceito de bagging (agregação bootstrap) e treinam cada árvore de forma independente para combinar suas previsões, enquanto os algoritmos de boosting utilizam uma abordagem aditiva, onde aprendizes fracos são treinados sequencialmente para corrigir os erros dos modelos anteriores.

Árvores de decisão aprimoradas por gradiente 

As decision trees com gradient boosting são um tipo de algoritmo de boosting que utiliza o gradiente descendente. Assim como outras metodologias de boosting, o gradient boosting começa com um aprendiz fraco para fazer previsões. A primeira decision tree no gradient boosting é chamada de aprendiz base. Em seguida, novas árvores são criadas de forma aditiva com base nos erros do aprendiz base. O algoritmo, então, calcula os resíduos das previsões de cada árvore para determinar o quanto as previsões do modelo estavam distantes da realidade. Os resíduos são a diferença entre os valores previstos e os valores reais do modelo. Em seguida, os resíduos são agregados para pontuar o modelo usando uma função de perda.

No contexto de aprendizado de máquina, funções de perda são empregadas para avaliar o desempenho de um modelo. O gradiente em árvores de decisão com boosting por gradiente refere-se ao gradiente descendente. O gradiente descendente é utilizado para minimizar a perda (ou seja, para melhorar o desempenho do modelo) quando treinamos novos modelos. O gradiente descendente é um algoritmo de otimização popular utilizado para minimizar a função de perda em problemas de aprendizado de máquina. Alguns exemplos de funções de perda incluem o erro quadrático médio ou o erro absoluto médio para problemas de regressão, a perda de entropia cruzada para problemas de classificação, ou funções de perda personalizadas que podem ser desenvolvidas para um caso de uso específico e conjunto de dados.

Funcionalidades do XGBoost

Abaixo está uma discussão sobre algumas funcionalidades do XGBoost em Python que o fazem se destacar em comparação com o pacote de gradient boosting normal do scikit-learn2:

  • Computação paralela e distribuída: a biblioteca armazena dados em unidades de memória chamadas blocos. Blocos separados podem ser distribuídos entre máquinas ou armazenados em memória externa usando computação fora do núcleo. O XGBoost também permite casos de uso mais avançados, como o treinamento distribuído em um cluster de computadores para acelerar a computação. O XGBoost também pode ser implementado em seu modo distribuído utilizando ferramentas como Apache Spark, Dask ou Kubernetes.
  • Algoritmo de pré-busca consciente de cache: o OXGBoost utiliza um algoritmo de pré-busca consciente de cache, que ajuda a reduzir o tempo de execução para grandes conjuntos de dados. A biblioteca pode operar mais de dez vezes mais rápido do que outros frameworks existentes em uma única máquina. O XGBoost pode processar bilhões de exemplos utilizando menos recursos devido à sua velocidade impressionante, tornando-se um sistema de boosting de árvores escalável.
  • Regularização integrada: o XGBoost inclui regularização como parte do objetivo de aprendizado, ao contrário do gradient boosting padrão. Os dados também podem ser regularizados por meio da otimização de hiperparâmetros. O uso da regularização integrada do XGBoost também permite que a biblioteca forneça resultados melhores do que o pacote de gradient boosting padrão do scikit-learn.
  • Gerenciamento de valores ausentes: o XGBoost emprega um algoritmo que reconhece a esparsidade para dados esparsos. Quando um valor está ausente no conjunto de dados, o ponto de dados é classificado na direção padrão, e o algoritmo aprende a melhor forma de lidar com valores ausentes.
Projeto 3D de bolas rolando em uma pista

As últimas notícias e insights sobre IA 


Descubra insights selecionadas por especialistas sobre IA, nuvem e outros assuntos no boletim informativo semanal Think. 

Como o XGBoost funciona

Nesta seção, abordaremos como utilizar o pacote XGBoost, como selecionar hiperparâmetros para o impulsionador de árvores do XGBoost, como o XGBoost se compara a outras implementações de boosting e alguns de seus casos de uso.

Divisão dos dados e conversão para o formato DMatrix

Supondo que você já tenha realizado uma análise de dados exploratória em seus dados, prossiga dividindo seus dados entre um conjunto de dados de treinamento e um conjunto de dados de teste. Em seguida, converta seus dados para o formato DMatrix exigido pelo XGBoost3. DMatrix é a estrutura de dados interna do XGBoost otimizada para eficiência de memória e velocidade de treinamento4.

Gere e avalie o modelo

Em seguida, instancie um modelo XGBoost e, dependendo de seu caso de uso, selecione qual função objetivo você gostaria de usar por meio do hiperparâmetro “object”. Por exemplo, se você tiver uma tarefa de classificação de múltiplas classes, deverá definir o objetivo como "multi:softmax"5. Ou então, se você tiver um problema de classificação binária, poderá usar o objetivo de regressão logística “binary:logistic”. Agora você pode usar seu conjunto de treinamento para treinar o modelo e prever as classificações para o conjunto de dados reservado como conjunto de teste. Avalie o desempenho do modelo comparando os valores previstos com os valores reais do conjunto de teste. Você pode utilizar indicadores como exatidão, precisão, recall ou a pontuação F-1 para avaliar seu modelo. Você também pode querer visualizar seus verdadeiros positivos, verdadeiros negativos, falsos positivos e falsos negativos usando uma matriz de confusão.

Ajuste de hiperparâmetros

Em seguida, você pode querer iterar por uma combinação de hiperparâmetros para ajudar a melhorar o desempenho do seu modelo. O ajuste de hiperparâmetros é o processo de otimização dos hiperparâmetros de um algoritmo de aprendizado de máquina. Os melhores hiperparâmetros podem ser encontrados usando métodos de pesquisa em grade e validação cruzada, que serão iterados por meio de um dicionário de possíveis combinações de hiperparâmetros.

Hiperparâmetros selecionados para árvores de gradiente impulsionado no XGBoost.

Abaixo está uma explicação sobre alguns dos hiperparâmetros disponíveis para ajuste em árvores de gradient boosted no XGBoost:

  • Taxa de aprendizado (também conhecida como “tamanho do passo” ou “encolhimento”) é o hiperparâmetro mais importante do gradient boosting. Na biblioteca XGBoost, esse parâmetro é chamado de “eta”, deve variar entre 0 e 1, e o padrão é 0,36. A taxa de aprendizado determina a velocidade com que o algoritmo de boosting aprende a cada iteração. Um valor menor de eta significa um aprendizado mais lento, pois reduz a contribuição de cada árvore no ensemble, ajudando assim a evitar o overfitting. Ao contrário, um valor mais alto de eta acelera o aprendizado, mas pode levar ao overfitting se não for ajustado com cuidado.
  • O hiperparâmetro n_estimators especifica o número de árvores a serem construídas no ensemble. Cada rodada de boosting adiciona uma nova árvore ao ensemble, e o modelo aprende gradualmente a corrigir os erros cometidos pelas árvores anteriores. O n_estimators direciona a complexidade do modelo e influencia tanto o tempo de treinamento quanto a capacidade do modelo de generalizar para dados não vistos. Aumentar o valor de n_estimators geralmente eleva a complexidade do modelo, pois permite que ele capture padrões mais complexos nos dados. No entanto, adicionar árvores demais pode resultar em overfitting. Geralmente, à medida que o n_estimators aumenta, a taxa de aprendizado deve diminuir.
  • O Gamma (também conhecido como multiplicador de Lagrange ou parâmetro de redução mínima de perda) controla a quantidade mínima de redução de perda necessária para realizar uma nova divisão em um nó folha da árvore. Um valor mais baixo significa que o XGBoost para mais cedo, mas pode não encontrar a melhor solução; enquanto um valor mais alto faz com que o XGBoost continue treinando por mais tempo, potencialmente encontrando melhores soluções, mas com maior risco de overfitting. Não há um limite superior para o gamma. O valor padrão no XGBoost é 0, e qualquer valor acima de 10 é considerado alto.
  • O Max_depth representa quão profundamente cada árvore no processo de boosting pode crescer durante o treinamento. A profundidade de uma árvore refere-se ao número de níveis ou divisões que ela possui desde o nó raiz até os nós folha. Aumentar esse valor tornará o modelo mais complexo e mais propenso a overfitting. No XGBoost, o max_depth padrão é 6, o que significa que cada árvore no modelo pode crescer até uma profundidade máxima de 6 níveis.
Mistura de Especialistas | Podcast

Decodificando a IA: resumo semanal das notícias

Junte-se a nosso renomado painel de engenheiros, pesquisadores, líderes de produtos e outros enquanto filtram as informações sobre IA para trazerem a você as mais recentes notícias e insights sobre IA.

Comparando o XGBoost a outros algoritmos de boosting

XGBoost é um dos muitos algoritmos de impulsionamento de código aberto disponíveis. Nesta seção, compararemos o XGBoost a três outros frameworks de impulsionamento.

XGBoost vs. AdaBoost

O AdaBoost é um dos primeiros algoritmos de boosting, criado por Yoav Freund e Robert Schapire em 19957. No AdaBoost, as previsões incorretas recebem maior ênfase por meio de um sistema de pesos que impacta mais fortemente os dados que são mais difíceis de prever. Primeiro, a cada ponto de dados no conjunto de dados recebe um peso específico. Quando os aprendizes fracos fazem previsões corretas sobre um exemplo, o peso desse exemplo é diminuído. Mas, se os aprendizes erram um exemplo, o peso do ponto de dados correspondente aumenta. Conforme novas árvores são geradas, seus pesos são determinados pelas incorreções das árvores de aprendizes anteriores. Com o aumento do número de aprendizes, as amostras fáceis de prever serão menos utilizadas nos aprendizes futuros, enquanto os pontos de dados mais desafiadores receberão mais peso. O gradient boosting e o XGBoost tendem a ser alternativas mais robustas ao AdaBoost devido à sua precisão e velocidade.

XGBoost vs. CatBoost

O CatBoost é outro framework de gradient boosting. Desenvolvido pela Yandex em 2017, ele é especializado em lidar com funcionalidades categóricas sem a necessidade de pré-processamento e geralmente apresenta um bom desempenho direto, sem a necessidade de ajuste extensivo de hiperparâmetros8. Assim como o XGBoost, o CatBoost possui compatibilidade integrada para lidar com dados ausentes. O CatBoost é especialmente útil para conjuntos de dados com muitas funcionalidades categóricas. Segundo a Yandex, o framework é utilizado em pesquisa, sistemas de recomendação, assistentes pessoais, carros autônomos, previsão do tempo e outras tarefas.

XGBoost vs. LightGBM

O LightGBM (Light Gradient Boosting Machine) é o último algoritmo de gradient boosting que iremos avaliar. O LightGBM foi desenvolvido pela Microsoft e lançado pela primeira vez em 20169. Enquanto a maioria dos algoritmos de aprendizado de decision trees cresce as árvores em profundidade, o LightGBM utiliza uma estratégia de crescimento de árvores em folha10. Assim como o XGBoost, o LightGBM demonstra velocidade rápida no treinamento de modelos e alta precisão, além de funcionar bem com grandes conjuntos de dados.

Aplicações do XGBoost

O XGBoost e as árvores de decisão de boosting de gradiente são utilizados em uma variedade de aplicações de ciência de dados, incluindo:

  • Learning to rank: um dos casos de uso mais populares para o algoritmo XGBoost é como um classificador. Na recuperação das informações, o objetivo do learning to rank é fornecer aos usuários conteúdo ordenado por relevância. No XGBoost, o XGBRanker é baseado no algoritmo LambdaMART11.
  • Previsão da taxa de cliques em anúncios: pesquisadores utilizaram um modelo treinado com o XGBoost para determinar com que frequência os anúncios online foram clicados em 10 dias de dados de cliques. O objetivo da pesquisa era medir a eficácia dos anúncios online e identificar quais anúncios têm um bom desempenho12.
  • Previsão de vendas na loja: oO XGBoost pode ser usado para modelagem preditiva, conforme demonstrado neste artigo, onde as vendas de 45 lojas do Walmart foram previstas usando um modelo XGBoost13.
  • Classificação de malware: usando um classificador XGBoost, engenheiros da echnical University of Košice conseguiram classificar o malware com precisão, conforme mostrado em seu artigo14.
  • Competições do Kaggle: o XGBoost tem sido um algoritmo vencedor popular nas competições do Kaggle, como observado na página da DMLC (Distributed (Deep) Machine Learning Community), que apresenta uma lista de vencedores recentes de competições do Kaggle que usaram o XGBoost para suas inserções15
Soluções relacionadas

Soluções relacionadas

IBM watsonx.ai

Treine, valide, ajuste e implemente recursos de IA generativa, modelos de base e recursos de aprendizado de máquina com o IBM watsonx.ai, um estúdio empresarial de última geração para construtores de IA. Crie aplicações de IA em uma fração do tempo com uma fração dos dados.

Conheça o watsonx.ai
Soluções de inteligência artificial

Use IA para trabalhar em sua empresa com a experiência em IA líder do setor e com o portfólio de soluções da IBM.

Explore as soluções de IA
Consultoria e serviços em IA

Reinvente os fluxos de trabalho e operações críticos adicionando IA para maximizar experiências, tomadas de decisão em tempo real e valor de negócios.

Explore os serviços de IA
Dê o próximo passo

Obtenha acesso completo aos recursos que abrangem o ciclo de vida do desenvolvimento da IA. Produza soluções poderosas de IA com interfaces fáceis de usar, fluxos de trabalhos e acesso a APIs e SDKs padrão do setor.

Explore o watsonx.ai Agende uma demonstração em tempo real
Notas de rodapé

1 "Scalable and Flexible Gradient Boosting," https://xgboost.ai/.

2 Tianqi Chen and Carlos Guestrin, "XGBoost: A Scalable Tree Boosting System," University of Washington, 10 de junho de 2016, https://arxiv.org/pdf/1603.02754.

3 "XGBoost Python Package Introduction, Data Interface," https://xgboost.readthedocs.io/en/stable/python/python_intro.html#data-interface.

4 "XGBoost API Reference, Core Data Structure," https://xgboost.readthedocs.io/en/stable/python/python_api.html#module-xgboost.core.

5 "XGBoost Parameters, Learning Task Parameters," https://xgboost.readthedocs.io/en/stable/parameter.html#learning-task-parameters.

"XGBoost Parameters for Tree Booster," https://xgboost.readthedocs.io/en/stable/parameter.html#parameters-for-tree-booster.

7 Yoav Freund and Robert E. Schapire, "A decision-theoretic generalization of on-line learning and an application to boosting," Journal of Computer and System Sciences, Vol. 55, pp. 119–139, agosto de 1997.

8 "CatBoost is a high-performance open source library for gradient boosting on decision trees," https://catboost.ai/.

9 Qi Meng, Guolin Ke, Taifeng Wang, Wei Chen, Qiwei Ye, Zhi-Ming Ma and Tie-Yan Liu, "A Communication-Efficient Parallel Algorithm for Decision Tree," Peking University, Microsoft Research and Chinese Academy of Mathematics and Systems Science, 4 de novembro de 2016, https://arxiv.org/pdf/1611.01276.

10 "LightGBM Features, Leaf-wise (Best-first) Tree Growth," https://lightgbm.readthedocs.io/en/latest/Features.html#leaf-wise-best-first-tree-growth.

11 "XGBoost Tutorials, Learning to Rank Overview," https://xgboost.readthedocs.io/en/latest/tutorials/learning_to_rank.html#overview.

12 AlAli Moneera, AlQahtani Maram, AlJuried Azizah, Taghareed AlOnizan, Dalia Alboqaytah, Nida Aslam and Irfan Ullah Khan, "Click through Rate Effectiveness Prediction on Mobile Ads Using Extreme Gradient Boosting," College of Computer Science and Information Technology, Imam Abdulrahman bin Faisal University, 12 de setembro de 2020, https://www.techscience.com/cmc/v66n2/40673/html.

13 Yetunde Faith Akande, Joyce Idowu, Abhavya Gautam, Sanjay Misra, Oluwatobi Noah Akande and Ranjan Kumar Behera, "Application of Xgboost Algorithm for Sales Forecasting Using Walmart Dataset," Landmark University, Ladoke Akintola University of Technology, Brandan University, Covenant University and XIM University, junho de 2022, https://www.researchgate.net/publication/361549465_Application_of_XGBoost_Algorithm_for_Sales_Forecasting_Using_Walmart_Dataset.

14 Jakub Palša, Norbert Ádám, Ján Hurtuk, Eva Chovancová, Branislav Madoš, Martin Chovanec and Stanislav Kocan, "MLMD—A Malware-Detecting Antivirus Tool Based on the XGBoost Machine Learning Algorithm," MDPI.com Journal of Applied Sciences, Vol 12, 6672, 1º de julho de 2022, https://www.mdpi.com/2076-3417/12/13/6672.

15 "Distributed (Deep) Machine Learning Community XGBoost Machine Learning Challenge Winning Solutions," https://github.com/dmlc/xgboost/tree/master/demo#machine-learning-challenge-winning-solutions.