top of page

Random Forest e o Akinator da vida adulta (pt.3)

  • Foto do escritor: Vinicius Araujo
    Vinicius Araujo
  • 5 de jun. de 2024
  • 4 min de leitura

Chegamos ao último artigo teórico da série sobre o nosso queridinho Random Forest! Depois de vermos uma introdução sobre o algoritmo na parte 1 e termos passado por algumas fórmulas importantes na parte 2, fecharemos hoje essa parte mais teórica da série com algumas curiosidades, vantagens e desvantagens dessa belezinha!


Vem comigo acompanhar esse textinho e não esquece de deixar aquele comentário, feedback, curtida ou qualquer tipo de sinal de fumaça para me ajudar a entender como podemos ir melhorando esses conteúdos! ❤️ 

 

Treino é treino, jogo é jogo!


Até então vínhamos trabalhando com uma simplificação de um problema da vida real, tínhamos 28 linhas (clientes) na nossa base de dados e duas colunas (perguntas feitas). Na prática esses números precisam ser maiores, precisam representar bem em volume e em qualidade as características do que estamos querendo prever.


Como bem e mal são adjetivos subjetivos, geralmente utilizamos métodos científicos para avaliar se o nosso modelo está fazendo um bom trabalho em termos de predição. Para isso, separamos o nosso conjunto de dados (total de clientes) em dois grupos chamados “treino” e “teste”.

A ideia é a de que o algoritmo aprenda os padrões existentes no grupo de clientes do “treino”, generalizando o conhecimento e realizando suas predições por ali. Depois, aplicamos esse modelo ao grupo de clientes no “teste”, até então uma novidade para o algoritmo, e observamos a sua precisão.


Em algoritmos de classificação como o que estamos vendo, o retorno geralmente que se obtém ao passarmos por exemplo um cliente e suas características para o modelo é o de uma probabilidade. Quando essa probabilidade é alta o suficiente (maior que o threshold estipulado), atribuímos uma categoria a esse cliente, como verdadeiro ou falso, indicando, quando verdadeiro, que esse cliente é provavelmente um cliente com uma experiência ruim.


Como para ambos os grupos (treino e teste) conhecemos a resposta real de se o cliente era ou não era um cliente com uma experiência ruim, conseguimos avaliar a quantidade de acertos e de erros do modelo para cada um dos grupos. 


Geralmente, quando essa precisão é alta e consistente (parecidas em ambos os grupos), temos um bom modelo de predição, mas, de maneira mais profunda, nem só de precisões vivem os algoritmos e, esse tema, é um spoiler do nosso próximo artigo, onde veremos

diferentes formas de se avaliar um algoritmo com um case prático.

 

De onde vem o “Random”?


O passos que exploramos até aqui para a predição de clientes com experiência ruim no aplicativo de compras traduzem, na verdade, o processo de construção do algoritmo Árvore de decisão (ou Decision Tree). Esse modelo por si só já nos geraria resultados satisfatórios, mas uma combinação de diferentes Árvores de Decisão pode nos gerar resultados ainda mais precisos (e daí que vem o Random Forest). Criaremos uma floresta de árvores de decisão de forma aleatória, e isso pode ser explorado sobre duas perspectivas:


1) A perspectiva das linhas


O primeiro passo seria construir novas árvores de decisão selecionando aleatoriamente algumas amostras de dados de treino (somente alguns dos clientes) para compor o treinamento do modelo, e não a sua totalidade. Uma prática bem comum é a da utilização da seleção com reposição (bootstrap), que é um método de reamostragem onde os clientes selecionados para uma árvore podem fazer parte de uma outra árvore criada posteriormente.


2) A perspectiva das colunas


Além de selecionar quais clientes participam do treino para a construção de uma floresta, também devemos selecionar quais colunas (features ou variáveis ou perguntas) farão parte de cada árvore. O algoritmo de Random Forest escolhe aleatoriamente algumas colunas e, então, realiza os passos que aprendemos no início deste artigo com base na amostra de clientes (linhas) selecionada.


Existem algumas formas de selecionar a quantidade k de variáveis que entraram em cada árvore, mas a ideia é a de que seja algo como 𝑘>1 e 𝑘<𝑛, onde 𝑛 é o número total de variáveis da base. Uma prática interessante para esse subconjunto 𝑘 é a de aplicar a raiz quadrada do total de variáveis 𝑛 da base ( 𝑘=√n ) para compor cada uma das árvores.

 

Combinando diferentes árvores


Para a construção de cada árvore da floresta, os dois processos anteriores se repetirão e, provavelmente, cada árvore será diferente uma da outra, pois tanto na seleção das amostras, quanto na seleção das variáveis, o processo acontece de maneira aleatória.


A quantidade de árvores que serão criadas é parâmetro ajustado por quem constrói o algoritmo, mas a escolha ótima desse número também faz parte do processo de tuning de hiperparametros, que abordaremos em outro artigo.


Por fim, com todas as árvores prontas, realizamos um processo de classificação por votação, onde o resultado que mais se repete (considerando cada árvore) será escolhido como o resultado da floresta (conjunto de decisões). De forma análoga, em problemas de regressão (que preveem números e não categorias) se utiliza a média dos valores de cada árvore para obtenção do resultado final da florestas.

 

Vantagens e limitações do algoritmo


Até que enfim, chegamos ao final! Para fixar melhor algumas das coisas que vimos até aqui e destacar algum outros pontos dessa abordagem, criei uma lista de vantagens e limitações desse algoritmo na minha perspectiva:


Vantagens


  1. Fácil de entender a ideia do algoritmo;

  2. Boa interpretabilidade, especialmente quando com poucas variáveis (não é caixa preta);

  3. Não requer feature scaling ou normalização dos dados e é robusto a outilers (não precisa ficar ajustando as variáveis para utilizar o algoritmo como em uma Regressão Linear);

  4. Consegue encontrar relações não lineares nas variáveis (ao contrário da Regressão Linear);

  5. Menos suscetível ao overfitting (por conta da seleção de variáveis e da amostragem dos dados).


Limitações


  1. Alto consumo de recursos computacionais e de tempo, especialmente para conjuntos de dados grandes;

  2. Menos interpretável à medida que se aprofunda (mais variáveis);

  3. Pode não lidar bem com conjuntos de dados desbalanceados, onde uma classe é muito mais prevalente do que a outra, tornando classes minoritárias sub-representadas.


Sempre importante lembrar que os algoritmos precisam ser experimentados, não existindo uma "melhor opção fixa para tudo", pois eles divergem de acordo com as condições do problema em que estão sendo aplicados. Por isso é muito importante ficar por dentro de como funciona cada um deles e sair testando tudo que der! 


Espero que tenham curtido essa série de artigos teóricos até aqui! Num próximo projeto vamos usar a teoria que vimos em uma abordagem um pouco mais prática para entender quais passageiros serão transportados para outra dimensão em uma viagem intergalática com o Spaceship Titanic! 🔥 


Vejo vocês por aqui! :)

Kommentare

Mit 0 von 5 Sternen bewertet.
Noch keine Ratings

Rating hinzufügen

Data Analytics Manager

Se conecte comigo!

Inscreva-se neste site para ficar por dentro de todas as novidades!

Me siga pelas redes!

  • Captura de Tela 2024-06-02 às 17.03.21
  • GitHub
  • LinkedIn

/aravinii

© 2024 Vinicius Araujo. Todos os direitos reservados.

bottom of page