A Aleatoriedade da Floresta
Deslize para mostrar o menu
Random Forest constrói um grande número de Árvores de Decisão - tipicamente cerca de 100 ou até mais. Criar tantas árvores diferentes não é fácil apenas ajustando configurações, então a aleatoriedade é introduzida para ajudar. Felizmente, Árvores de Decisão são muito sensíveis a pequenas mudanças nos dados e nas configurações, o que naturalmente leva a uma grande variedade de árvores na floresta.
Existem duas fontes de aleatoriedade em um Random Forest:
- Amostragem dos dados para cada árvore;
- Amostragem das features em cada nó de decisão de cada árvore.
Amostragem dos Dados
Para criar um conjunto de treinamento diferente para cada Árvore de Decisão em uma floresta, utilizamos o método bootstrap (também conhecido como bagging). A ideia é amostrar, com reposição, um conjunto de dados do mesmo tamanho para cada árvore.
Por padrão, o tamanho do conjunto de dados de cada árvore corresponde ao tamanho do conjunto de dados original. A amostragem com reposição pode ser entendida como selecionar aleatoriamente um ponto de dado do conjunto de treinamento - semelhante a tirar uma carta de um baralho. No entanto, diferente do sorteio de cartas comum, cada ponto de dado selecionado não é removido, então o mesmo ponto pode ser escolhido várias vezes.
Cada árvore é treinada com um subconjunto diferente dos dados, o que já contribui para tornar as árvores diversas. Para adicionar ainda mais aleatoriedade e acelerar o treinamento, também é possível limitar o número de atributos que cada árvore considera ao realizar divisões.
Amostragem dos Atributos
Em uma Árvore de Decisão padrão, cada nó examina todos os atributos disponíveis para encontrar a melhor divisão – geralmente calculando métricas como a impureza de Gini. Esse processo é computacionalmente custoso.
Em uma Random Forest, apenas um subconjunto aleatório de atributos é considerado em cada nó. Isso acelera o treinamento e adiciona aleatoriedade, o que contribui para tornar as árvores mais diversas. Uma abordagem comum é usar a raiz quadrada do número total de atributos. Por exemplo, se houver 9 atributos, 3 podem ser escolhidos aleatoriamente em cada nó; se houver 10.000 atributos, cerca de 100 podem ser selecionados.
Os atributos são amostrados sem reposição, portanto, o mesmo atributo não aparecerá mais de uma vez em um único nó. O número de atributos a considerar pode ser ajustado conforme o caso de uso.
É possível controlar quantas variáveis são consideradas em cada nó de decisão utilizando o parâmetro max_features na implementação do scikit-learn. Veja algumas opções populares:
max_features='sqrt': utiliza a raiz quadrada do número total de variáveis. Esta é uma configuração padrão comum que equilibra precisão e eficiência;max_features='log2': utiliza o logaritmo de base 2 do número total de variáveis, proporcionando ainda mais aleatoriedade;max_features=0.1: utiliza 10% das variáveis, onde o valor é tratado como uma proporção.
Também é possível definir max_features como qualquer proporção entre 0 e 1 (por exemplo, max_features=0.1 utiliza 10% das variáveis).
Resumindo, um Random Forest é projetado para que cada árvore seja treinada com uma amostra diferente dos dados, e cada nó de decisão dentro dessas árvores considere um subconjunto aleatório diferente de variáveis. Essa aleatoriedade incorporada resulta em uma coleção diversificada de árvores, o que melhora o desempenho geral do modelo.
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo