Machine Learning · Insper

Árvores de Decisão

Abordagem avançada

Onde as árvores brilham, onde falham e por que viram a matéria-prima dos ensembles

O caminho desta parte

  1. Medir o corteimpureza, não erros; variância na regressão
  2. Podar depois de crescerpoda por custo-complexidade e a escolha de α
  3. Encarar a instabilidadeuma pequena mudança nos dados, outra árvore
  4. Forças e limitesescala, escadas, NaN, importância
Cada etapa responde a uma pergunta: o que um corte deve medir? → quanto de uma árvore crescida vale manter? → quanto dá para confiar numa árvore só? → quando a árvore é a ferramenta certa?
Etapa 1 · o que um corte deve medir?

Por que não simplesmente contar erros?

Entropia, Gini e taxa de erro; um corte em que a taxa de erro não se move e o Gini cai
  • Pai: 8 negativos, 2 positivos. Corte: 5 + 0 e 3 + 2. Os dois filhos continuam prevendo "negativo": taxa de erro 0,20 → 0,20.
  • Mas um filho ficou puro e os positivos se concentraram: Gini 0,32 → 0,24.
Gini e entropia são estritamente côncavas: recompensam o progresso antes de a previsão mudar. É o que faz a busca gulosa funcionar.

Árvores de regressão

A folha prevê a média; a impureza é o MSE em torno dela (a variância do alvo no nó).

\[ I(\text{nó}) = \frac{1}{n}\sum_{i \in \text{nó}} (y_i - \bar y)^2 \]
  • Oito apartamentos: média R$ 2,362 mil, MSE 0,7873.
  • area ≤ 67.5: R$ 1,720 mil para os cinco pequenos, R$ 3,433 mil para os três grandes; MSE ponderado 0,0993.
Uma única pergunta remove 87% da variância. O mesmo algoritmo, outra impureza.

Uma escada que não extrapola

Árvores de profundidade 1 e 3 e uma reta ajustadas a aluguéis; acima de 120 m² as árvores ficam planas
Com \(L\) folhas, no máximo \(L\) valores. Acima de 120 m², a árvore de profundidade 3 diz R$ 3,87 mil para qualquer tamanho: RMSE fora da faixa 1,14, contra 0,22 da reta.
Etapa 2 · quanto de uma árvore crescida vale manter?

Pós-poda: crescer, depois cortar

\[ R_\alpha(T) = R(T) + \alpha\,|T| \qquad \alpha_{\text{ef}}(t) = \frac{R(t) - R(T_t)}{|T_t| - 1} \]
Poda do elo mais fraco na árvore de churn em quatro estágios

Cada passo colapsa o nó de menor \(\alpha_{\text{ef}}\): 0,111 (o corte que isolava J) → 0,127 → 0,248. É a sequência de cost_complexity_pruning_path.

A poda no Spambase

Acurácia de treino e de validação por profundidade e por número de folhas na poda
  • Sem poda: 221 folhas, 0,906. Melhor \(\alpha\): 109 folhas, 0,915.
  • Regra de um erro padrão (Breiman et al., 1984): 57 folhas, 0,913 — um quarto da árvore.
A poda compra pouca acurácia aqui; seu trunfo é o tamanho: igualmente acurada e muito mais fácil de ler.
Etapa 3 · quanto dá para confiar numa árvore só?

Instabilidade: uma pequena mudança, outra árvore

Três árvores de reamostras bootstrap com fronteiras diferentes

50 reamostras bootstrap do Spambase:

  • a raiz muda: $ em 29, ! em 19, outras duas palavras uma vez cada;
  • 136 a 186 folhas;
  • acurácia 0,895 em média, mas duas árvores discordam em 11,8% dos e-mails.
Deixar as 50 votarem dá 0,950, melhor que a melhor árvore (0,919). A instabilidade é o defeito de uma árvore e a matéria-prima do ensemble.
Etapa 4 · quando a árvore é a ferramenta certa?

O que as árvores dispensam

Escalonamento

Um corte só usa a ordem. Padronizar: as mesmas previsões em 100% do teste. log1p: 99,3% (só os limiares entre valores mudam).

Interações

"O tempo de casa importa quando a conta é alta": a árvore diz isso aninhando perguntas, sem atributo-produto.

Imputação

Desde o scikit-learn 1.3, NaN entra direto: cada corte aprende para que lado mandar o faltante.

Categorias

O DecisionTreeClassifier ainda pede números: one-hot para poucas categorias.

Onde elas sofrem: diagonais viram escadas

Fronteira diagonal aproximada por degraus; logística e árvore com o atributo x2 − x1
16 folhas e 0,932 para o que a regressão logística diz com uma reta (0,985). Com o atributo \(x_2 - x_1\), 2 folhas e 1,000: engenharia de atributos ajuda uma árvore mais que qualquer hiperparâmetro.

Importância de atributos e seu viés

  • feature_importances_ soma a queda de impureza dos cortes de cada atributo, nos dados de treino.
  • Uma coluna de números aleatórios fica em 12º lugar entre 59, à frente de 46 atributos reais; uma moeda aleatória, em 41º.
  • Atributos com muitos valores oferecem muitos limiares; um deles separa algumas linhas ruidosas por acaso (Strobl et al., 2007).
Para medir importância de verdade: permutação em dados separados (próxima aula) ou SHAP (Explicabilidade).

Perfil prático

Pontos fortesregras legíveis; sem escalonamento; interações automáticas; aceita NaN; rápida
Pontos fracossobreajusta sem poda; instável; escadas para diagonais; não extrapola; importância enviesada; probabilidades grosseiras
Use quandoo modelo precisa ser lido, auditado ou aplicado à mão
Uma árvore, raramente; muitas árvores, o tempo todo: random forests (muitas árvores fundas, em média) e gradient boosting (muitas rasas, somadas).
Lab avançado · cerca de 35 min, em duplas

A chave final e o que ela vale, passos 6 a 10

  • Mesmo notebook, mesma sessão: os passos usam X, X_train, y_train, cv e cv_report.
  • Ajustar profundidade, folhas e poda; comparar com regressão logística e k-NN nos mesmos folds; testar uma vez; medir a estabilidade da chave.
  • Notebook no Colab, a partir do passo 6.
  • Simulações: dê a diagonal à árvore (passo 7) e bagging à mão (passo 10).

Ritmo: passos 6 e 7 e a primeira simulação em 15 min; passos 8 e 9 em 10 min; passo 10 e a segunda em 10 min.