10  ID3, C4.5 e CART

Depois de entender os critérios de divisão, o passo seguinte é conectar esses critérios aos algoritmos clássicos de indução de árvores. Nesta etapa, três nomes aparecem com frequência na literatura e no ensino de aprendizado de máquina: ID3, C4.5 e CART.

Embora hoje muitas pessoas usem diretamente bibliotecas como scikit-learn, compreender esses algoritmos ajuda bastante a entender por que as árvores se comportam da forma que se comportam.

10.1 Objetivos do capítulo

Ao final deste capítulo, o leitor deve ser capaz de:

  • descrever a lógica geral de indução top-down;
  • explicar o papel do ganho de informação no ID3;
  • reconhecer as melhorias introduzidas pelo C4.5;
  • compreender a proposta do CART e sua relevância prática;
  • diferenciar esses algoritmos em nível conceitual.

10.2 A ideia geral de indução top-down

A maior parte dos algoritmos clássicos constrói a árvore de cima para baixo.

  1. Começa-se com todos os exemplos no nó raiz.
  2. Escolhe-se o melhor atributo para dividir esse conjunto.
  3. Criam-se ramos para os resultados possíveis do teste.
  4. O processo é repetido recursivamente em cada subconjunto.
  5. A construção para quando os exemplos ficam suficientemente homogêneos, quando faltam atributos ou quando algum critério de parada é atingido.

Essa estratégia é chamada de gulosa porque a escolha do atributo é feita localmente, sem revisar todas as alternativas possíveis para a árvore inteira.

10.3 O algoritmo ID3

O ID3, associado a Quinlan, é um dos algoritmos mais clássicos de aprendizado de árvores de decisão. Seu critério principal é o ganho de informação.

10.3.1 Ideia central

Em cada nó, o ID3 escolhe o atributo que mais reduz a entropia do conjunto local.

10.3.2 Visão conceitual do procedimento

  • se todos os exemplos do nó pertencem à mesma classe, cria-se uma folha;
  • se não há mais atributos disponíveis, usa-se a classe majoritária;
  • caso contrário, escolhe-se o melhor atributo segundo ganho de informação;
  • o processo continua recursivamente em cada ramo.

10.3.3 Pseudocódigo conceitual

ID3(exemplos, atributos):
  se todos os exemplos são da mesma classe:
    retorna folha
  se não restam atributos:
    retorna folha com classe majoritária
  escolhe o atributo com maior ganho de informação
  cria um nó para esse atributo
  para cada valor do atributo:
    cria um ramo
    chama ID3 para o subconjunto correspondente

10.4 Forças do ID3

  • alta clareza conceitual;
  • forte valor didático;
  • boa conexão entre teoria da informação e classificação;
  • capacidade de construir regras simbólicas interpretáveis.

10.5 Limitações do ID3

Apesar de elegante, o ID3 possui limitações clássicas.

  • foi pensado principalmente para classificação;
  • lida de forma mais natural com atributos categóricos;
  • pode favorecer atributos com muitos valores distintos;
  • não é, por si só, um mecanismo completo de poda robusta, como nas variantes posteriores.

10.6 O problema do viés por muitos valores

Imagine dois atributos:

  • código_cliente, com muitos valores quase únicos;
  • inadimplencia_previa, com poucos valores e forte significado.

Um atributo com muitos valores pode gerar partições pequenas demais e aparentar grande ganho no treino, mesmo sem generalizar bem. Esse tipo de problema motivou refinamentos posteriores.

10.7 C4.5

O C4.5 pode ser visto como uma extensão importante do ID3. Ele preserva a ideia de construção top-down, mas introduz mecanismos mais sofisticados para problemas reais.

10.7.1 Melhorias conceituais associadas ao C4.5

  • tratamento mais flexível de atributos contínuos;
  • melhor tratamento de valores ausentes;
  • uso de critérios que reduzem o viés por atributos com muitos valores;
  • poda posterior para melhorar generalização.

10.7.2 Gain ratio

Uma ideia frequentemente associada ao C4.5 é o uso do gain ratio, que ajusta o ganho de informação pela forma como o atributo divide os dados. Isso reduz a tendência de favorecer atributos com muitos valores.

Em termos intuitivos, o algoritmo pergunta não apenas “quanto esse atributo reduz a incerteza?”, mas também “essa redução veio de uma divisão razoável ou de uma fragmentação excessiva?”.

10.8 Tratamento de atributos contínuos

Em domínios reais, muitos atributos são numéricos: idade, renda, temperatura, saldo, tempo, consumo, score. O C4.5 considera pontos de corte e transforma um atributo contínuo em testes do tipo:

  • idade <= 35.5
  • saldo <= 1200
  • tempo_contrato <= 18

Essa ideia foi crucial para a aplicabilidade prática das árvores.

10.9 Poda no C4.5

A poda entra para reduzir complexidade e melhorar generalização. O algoritmo aceita que a árvore inicial possa crescer mais e, em seguida, remove ramos cuja contribuição não justifica a complexidade adicional.

10.10 CART

CART significa Classification and Regression Trees. Esse nome já sinaliza um diferencial importante: o algoritmo foi formulado tanto para classificação quanto para regressão.

10.10.1 Características conceituais do CART

  • usa divisões binárias;
  • pode ser aplicado à classificação e à regressão;
  • popularizou a lógica de poda por custo-complexidade;
  • está fortemente ligado a implementações modernas.

10.11 Divisões binárias

Enquanto alguns materiais didáticos apresentam árvores com vários ramos por atributo categórico, o CART trabalha de forma muito natural com divisões binárias. Isso significa que cada nó produz dois filhos.

Exemplos:

  • idade <= 35.5 versus idade > 35.5;
  • regiao in {sul, sudeste} versus regiao fora desse grupo.

Essa estrutura binária simplifica vários aspectos computacionais e aparece claramente em muitas bibliotecas atuais.

10.12 CART em classificação e regressão

No caso de classificação, o CART costuma usar medidas como Gini para avaliar a qualidade da divisão. Na regressão, usa critérios associados à redução da variância ou do erro.

Por isso, o CART se tornou particularmente influente na prática moderna e em famílias inteiras de modelos baseados em árvores.

10.13 Relação com o scikit-learn

Na prática, quando treinamos uma DecisionTreeClassifier ou DecisionTreeRegressor no scikit-learn, estamos muito mais próximos da família conceitual do CART do que do ID3 puro.

Isso significa que, mesmo estudando ID3 e C4.5, o leitor deve entender que a implementação corrente da biblioteca segue uma linha mais próxima de:

  • divisões binárias;
  • critérios como Gini e entropia para classificação;
  • poda por custo-complexidade com ccp_alpha.

10.14 Comparação conceitual resumida

10.14.1 ID3

  • fortemente didático;
  • usa ganho de informação;
  • associado ao estudo clássico de indução;
  • mais limitado diante de atributos contínuos e questões práticas modernas.

10.14.2 C4.5

  • amplia o ID3;
  • lida melhor com atributos contínuos e valores ausentes;
  • introduz refinamentos como gain ratio;
  • incorpora poda mais estruturada.

10.14.3 CART

  • trabalha com divisões binárias;
  • cobre classificação e regressão;
  • tem enorme relevância prática;
  • inspira bastante as implementações de uso corrente.

10.15 Por que estudar algoritmos clássicos se a biblioteca já faz tudo?

Porque a biblioteca treina a árvore, mas não substitui o entendimento.

Quem compreende ID3, C4.5 e CART consegue:

  • interpretar melhor o comportamento do modelo;
  • explicar por que determinado critério foi escolhido;
  • identificar limitações de generalização;
  • tomar decisões mais conscientes sobre hiperparâmetros e poda.
NoteResumo

ID3, C4.5 e CART representam momentos centrais na evolução das árvores de decisão. O ID3 formaliza a indução top-down guiada por ganho de informação. O C4.5 amplia essa proposta para lidar melhor com problemas reais. O CART consolida uma abordagem extremamente prática, binária e aplicável tanto à classificação quanto à regressão.

No próximo capítulo, vamos sair da formulação algorítmica e voltar ao uso concreto em Python, observando como essas ideias aparecem em uma árvore treinada de fato.

WarningErros comuns
  • estudar apenas a API moderna e ignorar a intuição dos algoritmos clássicos;
  • imaginar que ID3, C4.5 e CART são equivalentes em todos os detalhes;
  • esquecer o problema do viés por atributos com muitos valores;
  • supor que bibliotecas atuais implementam ID3 puro.
TipPerguntas de revisão
  1. Qual é a ideia central do ID3?
  2. O que o C4.5 melhora em relação ao ID3?
  3. Por que o CART é tão importante na prática moderna?
  4. Como as divisões binárias influenciam a estrutura da árvore?