Árvore de Decisão — Machine Learning

Monte uma árvore de classificação com splits por feature (como no scikit-learn). Faça predições interativas e visualize o diagrama com o caminho percorrido.

Novo aqui? Monte uma árvore de classificação com splits por feature e faça predições interativas.

🌿 Árvore de Classificação

Monte a árvore definindo os splits (□ nó de divisão) e as classes (● nó folha). Use os exemplos prontos para aprender a estrutura.

Exemplos:

Árvore de Decisão ML Online — Classificação e Predição Interativa

Entender como uma árvore de decisão de Machine Learning classifica exemplos é uma das bases mais importantes do aprendizado supervisionado. Esta ferramenta permite montar, visualizar e testar predições em árvores de classificação diretamente no navegador — sem instalar Python, scikit-learn, Jupyter Notebook ou qualquer dependência.

Ideal para estudantes, professores, cientistas de dados e profissionais que precisam documentar ou explicar modelos baseados em regras IF-ELSE de forma visual e interativa.


O que é uma Árvore de Decisão em Machine Learning?

Uma árvore de decisão (decision tree) é um modelo de aprendizado supervisionado que classifica ou prediz valores percorrendo uma sequência de regras binárias. Cada regra testa uma feature (variável de entrada) contra um threshold (valor de corte):

SE xjtramo esquerdoSENA˜Oramo direito\text{SE } x_j \leq t \quad \Rightarrow \quad \text{ramo esquerdo} \qquad \text{SENÃO} \quad \Rightarrow \quad \text{ramo direito}

Esse processo se repete recursivamente, aprofundando a árvore, até que cada ramo terminal — chamado de nó folha — contenha exemplos suficientemente homogêneos para que uma classe seja predita com confiança.

A árvore de decisão é o algoritmo mais intuitivo do ML porque imita o raciocínio humano: “se a pessoa tem score de crédito acima de 650 e dívida/renda abaixo de 35%, então aprove o crédito”. Esse tipo de regra é diretamente legível por humanos, ao contrário de redes neurais ou SVMs.


Anatomia de uma Árvore de Classificação

Nós de divisão (splits)

Um nó de divisão (marcado com □ ? nesta ferramenta) contém três elementos:

CampoDescriçãoExemplo
FeatureNome da variável testadascore_credito
OperadorTipo de comparação>
ThresholdValor de corte650

O nó divide o conjunto de dados em dois subconjuntos: aqueles que satisfazem a condição (ramo esquerdo) e aqueles que não satisfazem (ramo direito).

Nós folha (classes)

Um nó folha (marcado com ● nesta ferramenta) representa a predição final para todos os exemplos que chegam até ele. Além da classe, você pode registrar:

  • n — número de exemplos de treinamento que chegaram a este folha
  • conf — confiança em % (proporção de acertos: exemplos corretos ÷ exemplos totais na folha × 100)

Uma folha com n=420 e conf=91% significa que 420 exemplos do conjunto de treinamento chegaram até ela, e 91% tinham a classe correta.

Profundidade e número de folhas

A profundidade é o número de splits do caminho mais longo da raiz até uma folha. Uma árvore de profundidade 3 tem no máximo 8 folhas. O número de folhas determina quantas regiões de decisão o modelo cria no espaço de features.


Como Funciona o Algoritmo CART

O algoritmo mais popular para construir árvores de classificação é o CART (Classification and Regression Trees), usado pelo scikit-learn. Ele seleciona, em cada nó, a feature e o threshold que minimizam a impureza dos subconjuntos resultantes.

Critério Gini

O índice de Gini mede a probabilidade de classificar incorretamente um exemplo escolhido aleatoriamente:

G(S)=1k=1Kpk2G(S) = 1 - \sum_{k=1}^{K} p_k^2

onde pkp_k é a proporção de exemplos da classe kk no subconjunto SS. Um Gini de 0 significa pureza total — todos os exemplos pertencem à mesma classe. Um Gini de 0,5 (em dois classes igualmente distribuídas) é o máximo de impureza.

Critério de Entropia (ID3/C4.5)

A entropia usa o logaritmo para medir incerteza, vindo da teoria da informação de Shannon:

H(S)=k=1Kpklog2pkH(S) = -\sum_{k=1}^{K} p_k \log_2 p_k

O algoritmo ID3 (Iterative Dichotomiser 3) e seu sucessor C4.5 usam o ganho de informação — a redução de entropia após um split — como critério de escolha da feature.

Ganho(S,A)=H(S)vvalores(A)SvSH(Sv)\text{Ganho}(S, A) = H(S) - \sum_{v \in \text{valores}(A)} \frac{|S_v|}{|S|} H(S_v)

Como esta ferramenta se relaciona com CART e ID3

Esta calculadora não treina uma árvore automaticamente a partir de dados — ela permite montar manualmente a estrutura da árvore e testar predições nela. Isso é útil para:

  • Entender e visualizar uma árvore já treinada (ex: exportada do scikit-learn)
  • Construir regras de negócio baseadas em especialistas (sem dados de treino)
  • Ensinar e demonstrar como as predições percorrem a árvore
  • Documentar modelos de ML em relatórios e apresentações

Predição: Como a Árvore Classifica um Novo Exemplo

Dado um novo exemplo com valores de features conhecidos, a predição funciona assim:

  1. Começa na raiz — testa a condição do nó raiz com o valor da feature correspondente
  2. Percorre um ramo — se a condição é verdadeira, vai para o filho esquerdo; se falsa, vai para o filho direito
  3. Repete recursivamente — em cada nó de divisão, testa a nova condição e desce um nível
  4. Chega a uma folha — a classe daquela folha é a predição final

O caminho percorrido é destacado no diagrama SVG da ferramenta, tornando o processo completamente transparente.

Exemplo concreto — Árvore de aprovação de crédito:

score_credito > 650 ?
├── SIM → divida_renda_% <= 35 ?
│         ├── SIM → ✅ Aprovado       (n=420, conf=91%)
│         └── NÃO → renda_mensal > 8000 ?
│                   ├── SIM → ✅ Aprovado  (n=68, conf=75%)
│                   └── NÃO → ❌ Revisão   (n=55, conf=82%)
└── NÃO → renda_mensal > 5000 ?
          ├── SIM → ⚠️ Revisão manual (n=85, conf=60%)
          └── NÃO → ❌ Reprovado       (n=312, conf=89%)

Para um cliente com score=720, dívida/renda=30%, renda=6000:

  • Nó raiz: 720 > 650? SIM → filho esquerdo
  • Próximo nó: 30% ≤ 35%? SIM → folha
  • Resultado: ✅ Aprovado (conf=91%)

Overfitting e Poda (Pruning)

Um dos principais desafios das árvores de decisão é o overfitting — a árvore aprende padrões específicos do conjunto de treino que não se generalizam para novos dados.

Como o overfitting acontece

Deixada crescer sem restrição, a árvore cria folhas com apenas 1 exemplo, atingindo 100% de acurácia no treino mas falhando em dados novos. Isso é análogo a um estudante que decorou o gabarito sem entender o conteúdo.

Técnicas de regularização

Pré-poda (early stopping) — parâmetros que limitam o crescimento durante o treinamento:

  • max_depth — profundidade máxima da árvore
  • min_samples_split — mínimo de exemplos para permitir um split
  • min_samples_leaf — mínimo de exemplos em uma folha
  • max_features — número máximo de features consideradas em cada split

Pós-poda (post-pruning) — a árvore cresce completamente e depois ramos são removidos:

  • Reduced Error Pruning — remove nós que não reduzem o erro de validação
  • Cost-Complexity Pruning (usado pelo scikit-learn com ccp_alpha) — penaliza complexidade, favorecendo árvores menores com boa acurácia

No scikit-learn, o parâmetro mais importante para controlar overfitting é max_depth. Uma árvore com max_depth=3 é geralmente boa para fins explicativos — tem entre 4 e 8 folhas e captura os principais padrões sem ser muito específica.


Operadores Disponíveis

OperadorUsoExemplo
(menor ou igual)Variáveis contínuasidade ≤ 30
> (maior que)Variáveis contínuasscore_credito > 650
= (igual)Variáveis categóricassexo = F
(diferente)Variáveis categóricaspaís ≠ BR
< (menor que)Variáveis contínuasprobabilidade_churn < 0.3
(maior ou igual)Variáveis contínuasimc ≥ 25

Para variáveis binárias codificadas como 0/1, use o padrão do scikit-learn: feature > 0.5 (equivale a “feature == 1”).


Exemplos Incluídos

🚢 Titanic — Sobrevivência

O dataset Titanic é o exemplo mais famoso do aprendizado de máquina para iniciantes. A árvore usa três features:

  • sexo (1=F, 0=M) — mulheres tiveram prioridade nos botes salva-vidas
  • classe (1/2/3) — passageiros de 1ª classe tiveram maior taxa de sobrevivência
  • idade — crianças foram priorizadas

Insight principal: ser mulher é o fator mais determinante, seguido de classe. Homens adultos de 3ª classe tiveram taxa de sobrevivência abaixo de 17%.

💳 Aprovação de Crédito

Modelo típico de credit scoring com três features:

  • score_credito — pontuação de crédito (maior = histórico melhor)
  • divida_renda_% — razão dívida/renda (menor = menos comprometimento)
  • renda_mensal — renda bruta mensal

Este exemplo demonstra como bancos e fintechs estruturam regras de aprovação automática antes de passar para modelos mais complexos (Random Forest, Gradient Boosting).

🏥 Diagnóstico Médico — Diabetes

Baseado no dataset Pima Indians Diabetes, clássico da UCI Machine Learning Repository:

  • glicose — concentração de glicose em teste de tolerância oral
  • imc — índice de massa corporal
  • idade — em anos

Por que árvores de decisão na medicina? Porque regras interpretáveis são fundamentais para que médicos possam auditar e validar o modelo. Um modelo “caixa-preta” dificilmente seria aprovado para uso clínico sem explicabilidade.

🍷 Qualidade do Vinho

Baseado no Wine Quality Dataset (UCI):

  • alcool — teor alcoólico
  • acidez_volatil — vinagre residual (indesejável)
  • sulfatos — conservantes e antioxidantes

Demonstra como árvores de decisão funcionam em controle de qualidade industrial.

📱 Risco de Churn

Modelo de cancelamento de assinatura com features como:

  • meses_contrato — clientes novos têm maior risco
  • num_chamados_suporte — reclamações frequentes sinalizam insatisfação
  • uso_produto_mensal — baixo uso precede o cancelamento

Amplamente usado em telecomunicações, SaaS e serviços de streaming.

🌸 Iris — O Clássico do ML

O dataset Iris de Fisher (1936) é o “Hello World” do Machine Learning. Com apenas 3 features (petal_length, petal_width, sepal_length) e 3 classes (setosa, versicolor, virginica), uma árvore de profundidade 2 já atinge ~96% de acurácia.


Árvore de Decisão vs. Outros Algoritmos

AspectoÁrvore de DecisãoRandom ForestGradient BoostingRegressão Logística
Interpretabilidade★★★★★★★☆☆☆★★☆☆☆★★★★☆
Acurácia típica★★★☆☆★★★★☆★★★★★★★★☆☆
Risco de overfittingAltoBaixoMédioBaixo
Velocidade de treinoMuito rápidoMédioLentoRápido
Dados não-linearesSimSimSimNão
Explicabilidade por regrasSimNãoNãoParcial

Random Forest e Gradient Boosting (XGBoost, LightGBM) superam a árvore única em acurácia, mas perdem em interpretabilidade. Quando o objetivo é explicar a decisão para stakeholders não técnicos, a árvore de decisão ainda é a melhor escolha.


Exportando Regras IF-ELSE

O botão 📋 Copiar regras gera o pseudocódigo IF-ELSE completo da árvore. Exemplo de saída para o modelo de crédito:

if score_credito > 650:
    if divida_renda_% <= 35:
        return "✅ Aprovado"  # n=420, conf=91%
    else:
        if renda_mensal > 8000:
            return "✅ Aprovado"  # n=68, conf=75%
        else:
            return "❌ Revisão"  # n=55, conf=82%
else:
    if renda_mensal > 5000:
        return "⚠️ Revisão manual"  # n=85, conf=60%
    else:
        return "❌ Reprovado"  # n=312, conf=89%

Este formato pode ser colado diretamente em Python, JavaScript, SQL (CASE WHEN) ou qualquer linguagem de programação.


Como Usar Esta Ferramenta

  1. Escolha um exemplo pronto ou clique em “Criar do zero” para começar em branco
  2. Nós de divisão (□ ?) — preencha feature, operador e threshold. Ex: score_credito > 650
  3. Nós folha (● classe) — preencha o nome da classe, o número de amostras (n) e a confiança (%)
  4. Converter nós — ”→ Expandir split” transforma uma folha em novo nó de divisão; ”→ Virar folha” simplifica o modelo
  5. Ver diagrama — abre o diagrama SVG da árvore completa
  6. Fazer predição — preencha os valores das features no painel de resultado e clique em “Prever classe”. O caminho percorrido é destacado no diagrama
  7. Copiar regras — exporta o pseudocódigo IF-ELSE para documentação ou implementação

Aplicações Práticas em Negócios

Regras de negócio automatizadas: Empresas frequentemente traduzem políticas de crédito, compliance e elegibilidade em árvores de decisão, pois as regras são auditáveis e facilmente explicadas para reguladores.

Triage em saúde: Protocolos de triagem hospitalar como o Manchester Triage System têm estrutura análoga a uma árvore de decisão — sequência de perguntas que leva a uma decisão de prioridade.

Detecção de fraude: Uma primeira camada de filtros (velocidade de transação, localização, valor) pode ser implementada como árvore de decisão antes de modelos mais pesados.

Sistemas de recomendação simples: “Se usuário é X e consumiu Y, recomende Z” — fluxos de recomendação baseados em regras são mais fáceis de manter do que modelos colaborativos em contextos com poucos dados.


Perguntas Frequentes

Qual a diferença entre Árvore de Decisão EMV e Árvore de Decisão ML?

A Árvore de Decisão EMV (Valor Monetário Esperado) é usada em gestão de projetos e análise de risco para calcular o valor esperado de diferentes cenários considerando probabilidades. É um método de análise de decisão humana.

A Árvore de Decisão ML é um modelo preditivo que aprende padrões a partir de dados históricos para classificar novos exemplos automaticamente. Não usa probabilidades de eventos — usa regras de divisão por feature e threshold.

Posso usar para treinar um modelo real?

Esta ferramenta é para visualização, aprendizado e documentação — não para treino automático em grandes datasets. Para treinar modelos reais, use:

  • Python + scikit-learnDecisionTreeClassifier
  • Python + XGBoost / LightGBM — para árvores de gradiente boosting
  • R + rpart — pacote clássico para árvores em R
  • Orange Data Mining — interface visual para exploração sem código

Como exportar uma árvore do scikit-learn para esta ferramenta?

Treine sua árvore normalmente e use export_text(clf, feature_names=[...]) para obter as regras em texto. Em seguida, monte manualmente a estrutura na ferramenta replicando os splits. Para automação, a função export_graphviz gera o diagrama SVG diretamente — use para validação visual.

O que fazer quando a predição falha?

Se a predição retorna erro, verifique:

  • Todos os campos de features estão preenchidos?
  • Os nomes das features nas folhas e no formulário de predição são consistentes?
  • Existe pelo menos um nó folha alcançável para a combinação de valores fornecida?

Como citar esta ferramenta?

ABNT: UTILIBOX. Árvore de Decisão ML Online — Classificação e Predição. [S.l.]: UtiliBox, 2026. Disponível em: https://utiliboxapp.com.br/tools/arvore-decisao-ml/. Acesso em: [data de acesso].

APA (7ª ed.): UtiliBox. (2026). Árvore de Decisão ML Online — Classificação e Predição [Ferramenta online]. https://utiliboxapp.com.br/tools/arvore-decisao-ml/


Referências

Breiman, L., Friedman, J., Olshen, R. & Stone, C. (1984). Classification and Regression Trees. Wadsworth.

Quinlan, J. R. (1986). Induction of Decision Trees. Machine Learning, 1(1), 81–106.

Quinlan, J. R. (1993). C4.5: Programs for Machine Learning. Morgan Kaufmann.

Pedregosa, F. et al. (2011). Scikit-learn: Machine Learning in Python. Journal of Machine Learning Research, 12, 2825–2830.

Fisher, R. A. (1936). The use of multiple measurements in taxonomic problems. Annals of Eugenics, 7(2), 179–188.