O novo rei dos algoritmos de machine learning chama-se XGBoost e está dominando a comunidade de cientistas de dados!
Até pouco tempo atrás, os modelos estatísticos baseados em regressão, linear e logística, reinavam absolutos para realizar análise preditiva.
Embora cientistas de dados tivessem diversas outras possibilidades de algoritmos para aplicar, a regressão dava conta do recado na grande maioria dos casos.
Nos últimos meses o XGBoost tem crescido muito em número de implementações, assumindo o posto de modelo de predição mais utilizado entre os vencedores de competições em plataformas como Kaggle. Continue acompanhando o artigo, pois detalharei sua utilização.
O que é o XGBoost?
O XGBoost é um algoritmo de aprendizado de máquina, baseado em árvore de decisão e que utiliza uma estrutura de Gradient boosting.
Em problemas de previsão envolvendo dados não estruturados, como imagens, textos e vídeos, as redes neurais artificiais tendem a superar todos os outros algoritmos ou frameworks.
No entanto, quando se trata de dados estruturados/tabulares, algoritmos baseados em árvore de decisão são considerados os melhores da sua classe no momento.
Vale ressaltar que a afirmação acima é uma generalização*. Na verdade, a utilização de um algoritmo depende de diversos fatores, como custo computacional, prazo de implementação e acurácia.
Na imagem abaixo, é possível visualizar a evolução dos algoritmos baseados em árvore ao longo dos anos.
O algoritmo XGBoost foi desenvolvido como um projeto de pesquisa na Universidade de Washington. Tianqi Chen e Carlos Guestrin, seus criadores, apresentaram o algoritmo por meio de um paper na Conferência SIGKDD.
Desde a sua introdução, este algoritmo tem sido o mais vitorioso no Kaggle, uma plataforma de competições em que cientistas de dados resolvem desafios por meio de machine learning. Além disso, também tem sido utilizado em várias aplicações de ponta na indústria.
Como resultado, há uma forte comunidade de cientistas de dados contribuindo para os projetos de código aberto XGBoost, com mais de 350 colaboradores e mais de 3.500 commits no GitHub. O algoritmo se diferencia de outros das seguintes maneiras:
1. Aderente a uma ampla variedade de aplicações: Pode ser usado para resolver problemas de regressão, classificação, ranqueamento, entre muito outros.
2. Portabilidade: Funciona em Windows, Linux e OS X.
3. Idiomas: Suporta todas as principais linguagens de programação, incluindo C++, Python, R, Java, Scala e Julia.
4. Integração em nuvem: oferece suporte a AWS, Azure, Clusters Yarn e funciona bem com Flink, Spark entre outros ecossistemas.
Compreendendo melhor o XGBoost
As árvores de decisão, em sua forma mais simples, são algoritmos fáceis de visualizar e razoavelmente interpretáveis. No entanto, entender de forma intuitiva a sua evolução e suas diferenças pode ser um pouco complicado. Veja abaixo uma analogia para entender melhor a evolução dos algoritmos baseados em árvore.
Imagine que você é um gerente responsável por contratações e está entrevistando vários candidatos com excelentes qualificações. Cada passo da evolução dos algoritmos baseados em árvore pode ser visto como uma versão do processo de entrevista. Entenda abaixo:
Árvore de decisão: Cada gerente de contratação tem um conjunto de critérios, como nível de escolaridade, número de anos de experiência, desempenho da entrevista. Uma árvore de decisão é análoga a um gerente de contratação entrevistando candidatos com base em seus próprios critérios.
Bagging: Agora imagine que, em vez de um único entrevistador, há um painel de entrevistas onde cada entrevistador tem um voto. A agregação de bagging ou bootstrap envolve a combinação das informações de todos os entrevistadores para tomar a decisão final por meio de um processo de votação democrática.
Random Forest: É um algoritmo baseado no Bagging, com a diferença de que apenas um subconjunto de recursos é selecionado aleatoriamente. Em outras palavras, todo entrevistador só testará o entrevistado em certas qualificações selecionadas aleatoriamente Exemplo: uma entrevista técnica para testar habilidades de programação e uma entrevista comportamental para avaliar habilidades não técnicas.
Boosting: Essa é uma abordagem alternativa em que cada entrevistador altera os critérios de avaliação com base no feedback do entrevistador anterior. Isso “aumenta” a eficiência do processo de entrevista, implantando um processo de avaliação mais dinâmico.
Gradient Boosting: Um caso especial de reforço em que os erros são minimizados pelo algoritmo de gradiente descentente (gradient descent). Isto é, as empresas de consultoria em estratégia aproveitam casos de uso de entrevistas para eliminar candidatos menos qualificados.
XGBoost: Pense no XGBoost como um gradient boosting com ‘steroids’. É chamado de ‘Extreme Gradient Boosting’ exatamente por essa razão! Combina técnicas de otimização de software e hardware para produzir resultados superiores usando menos recursos de computação no menor período de tempo.
Por que o XGBoost funciona tão bem?
XGBoost e Gradient Boosting Machines (GBMs) são ambos métodos de árvore que aplicam o princípio de impulsionar weak learners usando a arquitetura de gradiente descendente. No entanto, o XGBoost aprimora a estrutura básica do GBM por meio da otimização de sistemas e aprimoramentos algorítmicos.
Então devemos usar apenas XGBoost o tempo todo?
Quando se trata de Machine Learning não há uma única resposta, nem mesmo para o mesmo problema. Cientistas de Dados devem testar todos os algoritmos possíveis para os dados disponíveis em assim, escolher o que melhor se aplica ao problema proposto.
Escolher o algoritmo certo não é suficiente. É preciso escolher a configuração correta do algoritmo para um determinado conjunto de dados, ajustando os hiper-parâmetros. Além disso, existem várias outras considerações para a escolha do algoritmo vencedor, como complexidade computacional, explicabilidade e facilidade de implementação.
O que o futuro guarda?
Machine Learning é uma área de pesquisa muito ativa e já existem várias alternativas viáveis para o XGBoost. A Microsoft Research lançou recentemente o framework LightGBM para o aumento de gradientes que mostra um grande potencial. O CatBoost, desenvolvido pela Yandex Technology, também vem apresentando resultados impressionantes de benchmarking.
É uma questão de tempo quando para termos uma estrutura de modelo que supere o XGBoost em termos de desempenho de previsão, flexibilidade, explicabilidade e pragmatismo. No entanto, até o momento em que um desafiante forte aparecer, o XGBoost continuará reinando no mundo do Machine Learning!
Este post é uma tradução do artigo XGBoost Algorithm: Long May She Reign!, publicado originalmente no Medium por Vishal Morde.
Gostou do conteúdo? Então assine nossa newsletter no menu lateral para se manter atualizado. Caso queira trocar uma ideia pelo LinkeIN, pode me adicionar pelo link.
Alô Pedro César cumprimentos pelo site tenho acompanhado os teus artigos e recomendo aos meus alunos teus artigos são ricos de temas atuais, despertando outras perspectivas na AI. Atualmente estou fazendo um Pós-Doc e estudando – Ética na AI. sei que podes me indicar algumas referências fico muito agradecido.
Prof. Nelson Fossatti /PUCRS
Fico muito feliz em poder contribuir de alguma forma. Feedbacks positivos são um “combustível” para continuar escrevendo. Enviei algumas sugestões de referências pelo e-mail cadastrado no comentário.
Alô Pedro César. Aproveito a oportunidade para cumprimenta-lo e agradecer referências, sugeridas. Em breve vou enviar algumas considerações sobre o referido tema.
obrigado
Prof. Fossatti
Olá, Pedro. Parabéns pelo seu artigo. Muito bem explicativo e esclarecedor. Sucesso.
Agradeço seu comentário Edivaldo!
Alô Pedro . Solicito tua especial gentileza de me reenviar referências que me encaminhastes mas que ainda não recebi.
obrigado
Nelson Fossatti
Olá novamente Nelson! Te enviei pelo e-mail do Terra. Me responda por lá confirmando o recebimento.
Alô Prof. Pedro
Obrigado pela especial gentileza. Informo que recebi as referências que solicitei.
Cumprimentos pelo excelente artigo. Teu site atualiza acompanha de forma transparente o Algoritmo de Machine Learning apresentando a riqueza de detalhes que o tema merece,bem como, apontando o que, como, onde, quem e como e a perspectiva de aplicação futura do XGBoost.
estamos Alone Together.
abraços,
Prof. Fossatti
PUCRS