Á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!

O que você aprende neste vídeo

Resposta rápida: Primeira aula de uma sequência sobre algoritmos de aprendizado de máquina. No scikit-learn, treina árvores com a base Iris: primeiro com duas classes e duas colunas, para desenhar cada regra como uma reta no gráfico, e depois com a base completa. Os critérios que o algoritmo usa para escolher cada divisão não são explicados nesta aula.

Neste vídeo (38 min):

  • 1:37 - Explica a árvore com uma decisão do dia a dia: ir ou não a uma festa, perguntando se há compromisso no dia, se você vai estar na cidade e se tem dinheiro para ir.
  • 2:13 - Dá nome às partes: o primeiro nó é a raiz, cada pergunta é um nó de decisão e a resposta final é a folha.
  • 5:55 - Cita algoritmos que definem as regras da árvore (ID3, C4.5, C5.0 e CART) e mostra, na documentação do scikit-learn, que a biblioteca usa uma versão otimizada do CART.
  • 12:17 - Simplifica a base Iris para só duas classes (0 e 1) e só duas colunas, a largura e o comprimento da pétala.
  • 18:57 - A primeira árvore toma uma única decisão, se a largura da pétala é menor ou igual a 0,8, e ele desenha essa decisão como uma reta no gráfico.
  • 21:44 - Nos dados de teste, a matriz de confusão mostra todos os pontos classificados corretamente.
  • 24:13 - Com as classes 1 e 2, que não são linearmente separáveis, a nova árvore já sai com mais regras.
  • 27:25 - A primeira regra da nova árvore corta a primeira coluna em 5,05: à direita da reta, todos os pontos já são da classe 2, e essa região é uma folha.
  • 31:00 - À esquerda, a árvore continua cortando (1,9 e 1,65 na segunda coluna, 4,65 na primeira) até separar toda a base de treino.
  • 31:39 - Nos dados de teste, essa segunda árvore já erra alguns pontos, que caem na região atribuída à outra classe.
  • 34:43 - Com a base completa (todas as colunas e as três classes), a árvore se ajusta tão bem aos dados de treino que, segundo ele, praticamente decorou.
  • 35:49 - No teste da base completa, só um ponto sai errado: um que era da classe 2 é classificado como 1.

Trechos do vídeo:

  • A árvore em si não é aprendizado de máquina: ela é só a representação de um conjunto de regras. O aprendizado está no algoritmo que escolhe qual coluna da base usar em cada pergunta e qual limite colocar.
  • Como a árvore pode dividir os dados quantas vezes quiser, ela tem muita chance de sofrer overfitting: quanto mais nós e folhas, maior a complexidade e menor a capacidade de generalizar, e o modelo passa a decorar os dados de treino em vez de aprender, falhando com dados novos.
  • Desenhar as regiões de decisão funciona bem com duas colunas: com três, elas viram cubos, e com quatro fica praticamente impossível visualizar, embora as regras da árvore continuem valendo.
  • A árvore de decisão é muito usada porque as regras ficam à vista: dá para mostrá-las a uma empresa que ainda desconfia do aprendizado de máquina, o que passa mais segurança, e entregá-las como um conjunto de if e else para alguém implementar direto no que já está em produção.

Para receber por e-mail o(s) arquivo(s) utilizados na aula, preencha:

A árvore de decisão é um algoritmo de aprendizado de máquina usado para classificação e regressão. Ela divide os dados em ramos com base em perguntas sobre os atributos, formando uma estrutura de nós até chegar a uma decisão (a folha). É simples de interpretar — parece um fluxograma — e serve de base para modelos mais avançados, como o Random Forest.

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!

Ícone Ciência de DadosCiência de Dados Impressionador

Se você quiser sair do zero até o nível avançado e aprender absolutamente tudo o que você precisa para usar Ciência de Dados para se destacar no Mercado de Trabalho e poder entrar nas carreiras mais promissoras e desejadas nas empresas, esse curso é pra você.

Começar agoraSeta para a direita
Fundo Ciência de DadosTelas Ciência de Dados
Luz 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.

Perguntas frequentes sobre árvore de decisão

1. O que é uma árvore de decisão?

É um algoritmo de aprendizado de máquina que toma decisões dividindo os dados em ramos, com base em perguntas sobre os atributos. O resultado é uma estrutura parecida com um fluxograma, que leva da raiz até uma classificação ou previsão na folha.

2. Para que serve a árvore de decisão?

Serve para classificar dados (ex.: aprovar ou não um crédito) e para prever valores (regressão). É muito usada por ser fácil de interpretar e por mostrar de forma clara quais fatores mais influenciam a decisão.

3. Árvore de decisão é classificação ou regressão?

Pode ser as duas coisas. Quando o objetivo é prever uma categoria (sim/não, tipo A/B/C), é uma árvore de classificação; quando o objetivo é prever um número, é uma árvore de regressão. O algoritmo se adapta ao tipo do problema.

4. Qual a diferença entre árvore de decisão e Random Forest?

Uma árvore de decisão é um único modelo, que pode errar mais ou “decorar” os dados. O Random Forest combina muitas árvores e usa a média (ou votação) entre elas, o que costuma gerar previsões mais precisas e estáveis.

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?