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.
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.
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.
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:
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.
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.
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.
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.
Abaixo está uma explicação sobre alguns dos hiperparâmetros disponíveis para ajuste em árvores de gradient boosted no XGBoost:
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.
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.
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.
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.
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:
Entrevistamos duas mil organizações a respeito de suas iniciativas de IA para descobrir o que está funcionando, o que não está e como se preparar.
O IBM Granite é nossa família de modelos de IA abertos, de alto desempenho e confiáveis, personalizados para a empresa e otimizados para escalar suas aplicações de IA. Explore as opções de linguagens, código, séries temporais e proteções.
Acesse nosso catálogo completo com mais de 100 cursos online comprando uma assinatura individual ou multiusuário hoje mesmo, para você expandir suas habilidades em uma variedade de nossos produtos por um preço único com desconto.
Liderada pelos principais líderes da IBM, o currículo dessa experiência foi desenvolvido para ajudar líderes empresariais a terem o conhecimento necessário para priorizar os investimentos em IA que podem estimular o crescimento.
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.
6 "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.
IBM web domains
ibm.com, ibm.org, ibm-zcouncil.com, insights-on-business.com, jazz.net, mobilebusinessinsights.com, promontory.com, proveit.com, ptech.org, s81c.com, securityintelligence.com, skillsbuild.org, softlayer.com, storagecommunity.org, think-exchange.com, thoughtsoncloud.com, alphaevents.webcasts.com, ibm-cloud.github.io, ibmbigdatahub.com, bluemix.net, mybluemix.net, ibm.net, ibmcloud.com, galasa.dev, blueworkslive.com, swiss-quantum.ch, blueworkslive.com, cloudant.com, ibm.ie, ibm.fr, ibm.com.br, ibm.co, ibm.ca, community.watsonanalytics.com, datapower.com, skills.yourlearning.ibm.com, bluewolf.com, carbondesignsystem.com