O que é o XGBoost?

O que é o XGBoost?

O XGBoost (eXtreme Gradient Boosting) é uma biblioteca de aprendizado de máquina de código aberto que utiliza árvores de decisão com gradient boosting, um algoritmo de boosting de aprendizado supervisionado que emprega 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 Julia.1

Árvores de decisão versus boosting

Árvores de decisão são usadas 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 árvores de decisão são propensas a overfitting, métodos em conjunto, 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.

Florestas aleatórias e algoritmos de boosting são técnicas populares de ensemble learning que utilizam árvores de aprendizes individuais para melhorar o desempenho preditivo. As florestas aleatórias são baseadas no conceito de bagging (agregação de bootstrapping) 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.

Boosting - aprendizado colaborativo sequencial

Árvores de decisão com gradient boosting 

As árvores de decisão com gradient boosting são um tipo de algoritmo de boosting que utiliza gradiente descendente. Assim como outras metodologias de boosting, o gradient boosting começa com um aprendiz fraco para fazer previsões. A primeira árvore de decisão no gradient boosting é chamada de aprendiz básico. Em seguida, novas árvores são criadas de forma aditiva com base nos erros do aprendiz básico. 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 gradient boosting 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 e conjunto de dados específico.

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 XGBoost 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.

As mais recentes tendências em IA, trazidas a você por especialistas

Receba insights selecionados sobre as notícias mais importantes (e intrigantes) sobre IA. Inscreva-se no nosso boletim informativo semanal Think. Consulte a Declaração de privacidade da IBM.

Agradecemos a você! Você se inscreveu.

Sua assinatura será entregue em inglês. Você encontrará um link para cancelar a assinatura em cada boletim informativo. Você pode gerenciar suas assinaturas ou cancelar a assinatura aqui. Consulte nossa Declaração de privacidade da IBM para obter mais informações.

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 de 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âmetross

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 opções de ajuste de hiperparâmetros.

Hiperparâmetros selecionados para árvores com gradient boosting no XGBoost.

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

  • A taxa de aprendizado (também conhecida como "tamanho do passo" ou "encolhimento") é o hiperparâmetro de aumento de gradiente mais importante. 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 seis níveis.
Mixture of Experts | 12 de dezembro, episódio 85

Decodificando a IA: resumo semanal das notícias

Participe do 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 versus 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 versus 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 versus 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: o 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
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 a IA a serviço de sua empresa com a experiência e o portfólio de soluções líder do setor da IBM à sua disposição.

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