Hoje vamos dar início a uma série de Algoritmos de Aprendizado de Máquinas e vamos começar falando sobre a Árvore de Decisão.
Caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo ou acesse o nosso canal do YouTube!
Para receber por e-mail o(s) arquivo(s) utilizados na aula, preencha:
Algoritmo Árvore de Decisão
Esse é um algoritmo que já utilizamos aqui no canal em algumas aulas, então vamos começar por ele, pois é um algoritmo muito visual.
Isso vai facilitar um pouco no entendimento e você já vai conseguir aplicar nos seus próximos projetos de ciência de dados!
Algoritmos de Aprendizado de Máquina
Nós temos diversos algoritmos de aprendizado de máquina, mas a ideia hoje é te mostrar como funciona a árvore de decisão.
Uma árvore de decisão é uma representação de um conjunto de regras criado para tomar qualquer decisão, nesse caso classificar um registro (para problemas de classificação) ou estimar um valor (para problemas de regressão).
Para cada pergunta da árvore vamos responder “SIM” ou “NÃO”. Essas respostas vão nos guiar até a decisão final.
Você provavelmente já viu algo similar, mesmo que na internet, em algumas publicações, ou qualquer outro lugar.
Então quando eu te mostrar a imagem explicando isso você rapidamente vai associar a algo que já viu e vai facilitar o entendimento.
Vale ressaltar que cada uma dessas perguntas é chamada de nó de decisão (sendo o primeiro deles chamado de nó raiz) e a decisão que vamos tomar é chamada de nó folha.
Aqui está um exemplo da nossa árvore de decisão e como vamos chegar a nossa decisão final a partir de cada pergunta e cada resposta.
Você vai notar que podemos “sair” da árvore com o resultado em várias perguntas, então vamos poder trazer esses resultados em vários pontos diferentes.
Então a ideia é criar regras para que possamos tomar algumas decisões, não precisa ser necessariamente igual ao exemplo que colocamos, mas pode ser para classificar ou fazer uma estimativa.
Aqui temos um exemplo de como podemos criar essas regras para separar as informações. Esse é o Dataset Íris, que é um dataset gratuito do Sklearn.
OBS: Inclusive nós temos uma aula falando sobre algoritmo de classificação no Python utilizando essa base de dados.
Para esse dataset nós temos essa árvore aqui, que nesse caso estamos falando sobre a classificação de uma planta.
A árvore de decisão é uma representação, uma estrutura. Isso quer dizer que somente a árvore não é Aprendizado de Máquinas. O que é Machine Learning é a escolha dessas regras para a criação da árvore.
Existem diferentes algoritmos usados para isso, como o ID3, C4.5, C5.0 e CART.
https://scikit-learn.org/stable/modules/tree.html#tree-algorithms-id3-c4-5-c5-0-and-cart
O scikit-learn, segundo a própria documentação, usa uma versão otimizada do CART (Classification and Regression Trees).
Em resumo, a seleção dos nós é feita escolhendo qual recurso e limite vai tornar os próximos passos o mais homogêneo possível.
Como podemos criar vários nós para a árvore, é um modelo que facilmente pode sofrer overfitting. Quanto mais nós e folhas, maior a complexidade da árvore e menor sua capacidade de generalizar.
OBS: O overfitting seria uma classificação “perfeita” por não termos muitas informações ou até mesmo por utilizarmos sempre a mesma base de dados, então o modelo fica tão bom que acaba “decorando” os resultados, o que não é bom!
Vamos ao nosso exemplo utilizando o Dataset Íris!
Aqui vamos importar a biblioteca pandas, depois vamos importar o nosso dataset e vamos transformá-lo em um dataframe.
Com isso já vamos poder visualizar as primeiras informações da nossa base de dados para verificar quais são essas informações e os valores que temos dentro de cada uma das colunas.
Lembrando que a coluna target mostra quais são as plantas que estamos querendo classificar, então temos 0 (setosa), 1 (versicolor) e 2 (virginica). Isso quer dizer que temos no total 3 plantas para serem classificadas.
Agora nós vamos criar uma segunda base de dados, apenas com os targets 1 e 2, e vamos utilizar apenas as colunas petal length, petal width e target.
Assim vai ficar mais fácil analisar as informações para que você entenda e depois podemos colocar tudo junto, isso é só para deixar tudo em duas dimensões!
IMPORTANTE: Vale ressaltar que todos os links das imagens estão nos arquivos disponíveis para download. Então você pode acessar o scikit learn para visualizar o passo a passo do que estamos fazendo. Lá tem todos os códigos e a explicação de cada um deles!
Nessa parte nós vamos separar a nossa base em treino e teste para que seja possível testar o nosso algoritmo (esses códigos e parâmetros também estão nos links das imagens)!
Depois vamos visualizar os dados de treino dentro de um gráfico para que você possa visualizar com base nas imagens iniciais, como vamos fazer nossa separação.
Agora vamos utilizar a árvore de decisão para poder classificar esses dados. Feito isso vamos poder exibir a árvore.
Lembrando que o X[0] quer dizer que estamos pegando os valores da primeira coluna, que é o petal length, já o X[1] é a segunda coluna (petal width).
Dessa forma você se situar nas análises que foram feitas. Agora nós vamos adicionar as regras ao nosso gráfico para que você possa visualizar esses passos.
Aqui estamos representando as linhas tracejadas as diferentes etapas que o nosso algoritmo está fazendo para poder classificar as informações.
Você vai notar que por exemplo a primeira análise é para verificar se o X[0] é maior do que 5,05. Com isso o algoritmo já sabe que tudo que for acima (ou a direita da linha vertical que passa por todo o gráfico) já é o target 2.
Depois ele vai fazendo mais e mais análises até classificar tudo.
Nesse outro passo nós estamos fazendo a previsão e avaliando o erro, então vamos utilizar os nossos dados de teste ao invés dos dados de treino para poder visualizar como está o nosso modelo.
Aqui você já vai notar que tivemos alguns erros nessa classificação e no link que coloquei acima, nós temos uma aula falando sobre a avaliação de erros em modelos.
Assim você vai entender o que são, como você pode melhorar, verificar se esse percentual de acerto é aceitável…
Vamos agora fazer para toda a base e visualizar como está a nossa árvore de decisão.
IMPORTANTE: Aqui você vai notar que novamente o nosso score, que é o quanto a nosso modelo se ajusta aos dados. Então temos que o modelo se ajusta tão bem, que ele praticamente decorou esses dados. Temos que tomar cuidado com isso, pois ao inserir novos dados é possível que tenhamos mais erros por conta do modelo ter decorado essas informações.
Por fim vamos visualizar essa árvore, agora você nota que temos muito mais nós para poder classificar melhor os nossos dados.
E para finalizar podemos avaliar o nosso modelo de classificação.
Conclusão – Árvore de Decisão
Nessa aula eu te mostrei o que é o modelo árvore de decisão e como nós utilizamos esse modelo para fazer uma classificação ou estimativa dos nossos dados utilizando bases de treino e teste.
Além disso te mostrei de forma visual como é feita essa classificação, como o modelo vai separando em nós para tomar suas decisões até que consiga classificar todas as informações.
É claro que podemos ter erros ainda mais dependendo de como está a nossa base de dados, então não espera que tenha 100% de acerto sempre, principalmente quando temos muitas variáveis!
Hashtag Treinamentos
Para acessar outras publicações de Ciência de Dados, clique aqui!
Expert em conteúdos da Hashtag Treinamentos. Auxilia na criação de conteúdos de variados temas voltados para aqueles que acompanham nossos canais.