Blog

Postado em em 14 de novembro de 2022

Árvore de Decisão – Algoritmos de Aprendizado de Máquinas

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.

Representação visual da árvore de decisão
Representação visual da árvore de decisão

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.

Classificando as informações
Classificando as informações

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.

Visualizando a árvore de decisão para o dataset iris
Visualizando a árvore de decisão para o dataset iris

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!

Importando o pandas, a base de dados e ajustando as informações
Importando o pandas, a base de dados e ajustando as informações

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.

Separando os dados e visualizando os dados de treino
Separando os dados e visualizando os dados de treino

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!

Visualizando os dados
Visualizando os dados

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.

Classificando os dados
Classificando os dados

Agora vamos utilizar a árvore de decisão para poder classificar esses dados. Feito isso vamos poder exibir a árvore.

Visualizando a árvore de decisão
Visualizando a árvore de decisão

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.

Adicionando as regras ao gráfico
Adicionando as regras ao gráfico

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.

Visualizando os dados de teste
Visualizando os dados de teste

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…

Repetindo o processo para toda a base
Repetindo o processo para toda a base

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.

Árvore de decisão da base completa
Árvore de decisão da base completa

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!


Quer aprender mais sobre Python com um minicurso básico gratuito?

Quer sair do zero no Python e virar uma referência na sua empresa? Inscreva-se agora mesmo no Python Impressionador