O algoritmo de machine learning ExtraTrees (Extremely Randomized Trees) cria muitas árvores de decisão de maneira aleatória, para então através da combinação dos resultados de cada árvore encontrar a resposta final.
Seu principal diferencial está no fato deste processo ser extremamente aleatório, contribuindo assim para modelos mais generalizáveis.
ExtraTress x RandomForest
Todo este processo é muito similar ao que acontece no algoritmo Random Forest, que também criará árvores de decisão de forma aleatória, utilizando cada uma das árvores para definição do resultado. A diferença entre os dois está na quantidade de processos aleatórios empregados em cada algoritmo.
Árvore de Decisão
Em primeiro lugar, vamos lembrar o que Random Forest tem de diferente das Árvores de Decisão. Quando vamos construir uma árvore de decisão, o algoritmo tenta encontrar a melhor variável para começar a construção do nó; depois ele escolhe o melhor ponto para fazer o split dos dados, o melhor ponto para separar os dados: uma parte para um lado, e outra para outro.
E a partir disso, vai construindo a árvore, sempre procurando a melhor condição possível, o melhor threshold, baseado no ganho de informação ou no índice Gini.
Random Forest
No algoritmo Random Forest já vimos que algumas amostras dos dados de treino
(linhas do dataset) serão selecionadas de maneira aleatória, sendo que as árvores criadas pelo algoritmo não conterão a totalidade dos dados utilizados na construção do modelo.
Para definir a estrutura de cada árvore teremos a seleção aleatória de algumas variáveis, para que – dentre as selecionadas – aconteça a escolha daquela que estará no primeiro nó. Assim temos duas etapas importantes do processo acontecendo de maneira aleatória, tanto a seleção de variáveis quanto a seleção de amostras.
ExtraTrees
Já com o ExtraTrees, esse processo se torna ainda mais aleatório, justificando o termo “extremamente” empregado em seu nome. As etapas mencionadas acima continuam existindo, e mais um fator de aleatoriedade é adicionado.
Após a seleção aleatória das variáveis candidatas para o nó inicial, os dados existentes em cada uma destas variáveis serão separados (split dos dados) também de maneira aleatória. Após estas escolhas os cálculos necessários para otimização da árvore podem começar.
Split dos dados
Os algoritmos C4.5 e Kart são utilizados para fazer o split dos dados. Vamos imaginar que temos uma variável que contém dados contínuos, como, por exemplo, uma temperatura, onde temos que separar esses dados em duas partes: o que é menor que um determinado valor vai para um lado e tudo o que é maior, ou igual, vai para o outro lado.
Então, esse split que divide os dados em duas partes precisa conter o valor ideal, que trará mais precisão ao modelo. Para encontrar este valor, os algoritmos definirão vários pontos (thresholds) de forma a dividir os dados em todas as combinações possíveis, colocando partes para um lado ou para o outro. Feito tudo isso, o melhor threshold de todos será o escolhido.
É nesse ponto que o ExtraTrees difere. Na hora de fazer a escolha do threshold, para dividir os dados (em uma parte para um lado e outra para o outro), essa escolha é feita de forma randômica; enquanto o Random Forest, usou como etapas randômicas apenas a definição das variáveis e das amostras, partindo para otimização dos cálculos em busca do melhor split.
Já o ExtraTrees, não. O ExtraTrees escolhe as variáveis e amostras randomicamente, e também o threshold para spilt dos dados de maneira randômica.
Então, aí sim, depois que cada variável teve um threshold randômico na divisão dos seus dados, ele tenta escolher, usando Gini ou entropia, a melhor dessas variáveis para começar o nó.
Modelo generalizável
Este passo a mais de aleatoriedade utilizado pelo ExtraTrees justifica seu nome, ou seja, ele é extremamente randômico na criação de suas árvores.
Isso faz com que cada uma delas, se formos comparar com as árvores do Random Forest, fique um pouco mais fraca, menos robusta. Mas, a ideia é justamente essa!
Conforme aquele raciocínio usado no Random Forest, de que é melhor construir as árvores, de maneira que cada uma não seja tão boa quanto poderia, justamente para tentar criar um fenômeno onde se possa somar muitas árvores não tão fortes, mas onde a votação de todas essas árvores juntas será uma boa votação, que convergirá em uma boa classificação de dados, de forma que o modelo fique mais generalizável.
Isto porque, ao não se criar cada uma das árvores da melhor forma possível, o modelo fica menos enviesado; ou seja, cada uma das árvores ficará pouco enviesada, e a soma de todas juntas colabora para que se tenha um modelo mais generalizável.
Então essa mesma ideia pode ser aplicada no ExtraTrees, usando um pouco mais desse fenômeno, fazendo com que cada árvore fique ainda mais fraca, mais generalizável, mais aleatória do que no Random Forest.
Com isso, explora-se cada vez mais esse conceito de se fazer árvores fracas, para que o somatório fique forte, não se apegando ao viés de cada um dos dados, conseguindo fazer uma combinação mais aleatória das variáveis, sendo que, depois ao se apresentar novos dados ao problema, a previsão, no todo, aconteça de maneira mais precisa.
Cuidados com o ExtraTrees
É evidente que um processo mais aleatório também tem os seus prós e contras, seu lado positivo e negativo. A parte positiva é que cria um modelo menos enviesado, conforme abordamos anteriormente.
A parte negativa é que, se por acaso, existirem muitas variáveis que não estão ajudando no nosso problema e, por consequência, não deveriam estar ali, o algoritmo poderá acabar escolhendo essas variáveis para começar os nós, dando a elas um destaque grande e indevido. Então, nesse cenário, onde se tem muitas variáveis ruins que poderiam ter sido eliminadas, o ExtraTrees pode ter uma performance pior que a do Random Forest.
No caso do ExtraTrees, então, o pré-processamento ganha ainda mais importância. Onde, eventualmente, se faça uma seleção das variáveis, eliminando as indesejadas, que só acrescentam ruídos e não ajudam a classificar os dados.
ExtraTrees na prática
Para quem está interessado em criar modelos de machine learning com o algoritmo ExtraTrees na prática, basta conferir nossos cursos de Machine Learning clicando aqui. Temos opções com a linguagem R ou Python, detalhando tanto a teoria dos cálculos envolvidos, quanto os códigos de programação necessários.
Ensinamos com detalhes como o Extratrees funciona no curso de machine learning módulo 2, realizando exercícios.
Nossos cursos são totalmente focados na didática, possibilitando um aprendizado simples e eficaz, tanto para iniciantes, quanto para usuários avançados. Todos os conceitos necessários são devidamente abordados, evitando qualquer lacuna no aprendizado, e garantido que o aluno compreenda por completo os assuntos apresentados.
Leia também: