image

Acesse bootcamps ilimitados e +650 cursos

50
%OFF
Article image
André Galhardo
André Galhardo08/02/2024 02:55
Compartilhe

Redes Neurais ou Random Forest/Gradient Boosting? Qual o melhor?

  • #Machine Learning

De uns tempos para cá venho me dedicando a conhecer melhor sobre as metodologias Ensemble e suas confluências e dissonâncias com as redes neurais. E é um assunto muito amplo e vale a pena conferir quem quiser pesquisar um pouco mais sobre. Não venho fazer polêmica, na verdade busco trazer neste post resumidamente o que eu estudei por esses meses e também demonstrar alguns desenvolvimentos bacanas que trazem o “melhor dos dois mundos”. 

Hoje em dia existem diversas ferramentas muito interessantes de Ensemble que vão muito além do famoso Random Forest, citando alguma delas, o conhecido XGBoost, temos também a biblioteca bem diversificada  do Tensorflow Decision Forest que incorpora desde o Random Forest até o Gradient Boosting, com facilidade de inclusão de redes neurais em diversas fases do pipeline e também o LightGBM da Microsoft, trazendo um algoritmo muito eficaz e com uma proposta diferente do XGBoost, todavia, muito funcional. 

Agora quando o assunto são Redes Neurais e Ensemble, existem diversos caminhos interessantes que podemos pensar. Como pontuei no meu Linkedin, podemos fazer um Ensemble de Random Forest com Deep Learning, colocarei novamente neste post a ilustração para facilitar a visualização da ideia. É possível, em um caminho muito parecido, fazer um processamento de linguagem natural (NLP), prévio ao Random Forest ou outra metodologia, quando trabalhamos com dados tabulares e as categoriais possuem uma cardinalidade muito grande (ou seja, muitos atributos diferentes dentro da mesma variável). 

image

Todavia, o universo de possibilidades é enorme e não pára por ai. Quando tratamos desse assunto, vemos Redes Neurais se tornando Decision Forest e indico o artigo a seguir que fala sobre isso: 

https://arxiv.org/pdf/1806.06988.pdf

 

E para quem prefere o código ao invés da leitura acadêmica, a seguir está a implementação em TensorFlow com a API Keras da Deep Neural Decision Forest:

https://keras.io/examples/structured_data/deep_neural_decision_forests/

Mas você pode estar pensando neste momento que Decision Tree não são necessariamente ensembles. Sim, realmente, não o são. Todavia seu stacking, permite denominar de Ensemble. E aumentando o grau de dificuldade da questão que estou abordando, existem também as Redes Neurais que englobam isso, como por exemplo o NODE (Neural Oblivious Decision Ensembles) e segue o artigo científico denotando essa técnica:

https://arxiv.org/abs/1909.06312

image

E como não pode faltar, para aqueles que preferem a parte prática, a sua implementação está no GitHub do próprio autor do artigo:

https://github.com/Qwicen/node

E para finalizar esse meus rabiscos, não posso deixar de citar o GrowNet que faz a junção do Gradient Boosting e das redes neurais com maestria. Vou deixar o link do paper que traz na íntegra essa técnica em sua implementação em 2020:

https://arxiv.org/abs/2002.07971v2 

E o GitHub do autor para aqueles que quiserem testar o código em algum dataset ou mesmo conhecê-lo para aprendizado:

https://github.com/sbadirli/GrowNet.

image

Abraço a todos,

André de Paula Galhardo

Compartilhe
Recomendados para você
Microsoft 50 Anos - Prompts Inteligentes
Microsoft 50 Anos - GitHub Copilot
Microsoft 50 Anos - Computação em Nuvem com Azure
Comentários (0)