Parâmetros de Árvore de Decisão

2.3.3

Parâmetros de Árvore de Decisão

Atualizado 2025-11-05 Leitura 3 min
Resumo
  • Árvores de decisão oferecem diversas alavancas–profundidade, amostras mínimas por divisão/folha, poda e pesos de classe–que controlam diretamente sua capacidade e interpretabilidade.
  • max_depth e min_samples_leaf limitam quão detalhadas as regras podem se tornar, enquanto ccp_alpha (poda de custo-complexidade) remove ramos cuja melhoria não justifica seu tamanho.
  • Escolher o critério certo (squared_error, absolute_error, friedman_mse, etc.) muda o quão agressivamente a árvore reage a valores atípicos.
  • Diagnósticos visuais de fronteiras de decisão e estruturas de árvores ajudam a comunicar por que um determinado conjunto de hiperparâmetros funciona melhor.

Intuição #

Este método deve ser interpretado através de suas suposições, condições dos dados e como as escolhas de parâmetros afetam a generalização.

Explicação Detalhada #

1. Visão Geral #

Uma árvore de decisão cresce escolhendo repetidamente a divisão que produz a maior redução de impureza. Sem restrições, a árvore continua dividindo até que cada folha seja pura, o que frequentemente significa sobreajuste. Os hiperparâmetros atuam, portanto, como regularizadores: limites de profundidade mantêm a árvore rasa, contagens mínimas de amostras evitam folhas minúsculas, e a poda elimina ramos cuja contribuição é marginal.

2. Ganho de impureza e poda de custo-complexidade #

Para um nó pai (P) dividido em filhos (L) e (R), a redução de impureza é

$$ \Delta I = I(P) - \frac{|L|}{|P|} I(L) - \frac{|R|}{|P|} I(R), $$

onde (I(\cdot)) pode ser o índice Gini, a entropia, o MSE ou o MAE dependendo da tarefa. Uma divisão só é mantida se (\Delta I > 0).

A poda de custo-complexidade avalia uma árvore inteira (T) com

$$ R_\alpha(T) = R(T) + \alpha |T|, $$

onde (R(T)) é a perda de treinamento (por exemplo, erro quadrático total), (|T|) é o número de folhas, e (\alpha \ge 0) penaliza árvores grandes. Aumentar (\alpha) favorece estruturas mais simples.

3. Experimentos em Python #

O trecho abaixo treina vários modelos DecisionTreeRegressor em um conjunto de dados sintético e relata como diferentes hiperparâmetros afetam o (R^2) de treinamento e validação. Ajustar max_depth, min_samples_leaf ou ccp_alpha mostra como capacidade e generalização se equilibram.

import numpy as np
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeRegressor
from sklearn.datasets import make_regression
from sklearn.metrics import r2_score

X, y = make_regression(
    n_samples=500,
    n_features=2,
    noise=0.2,
    random_state=42,
)
Xtr, Xte, ytr, yte = train_test_split(X, y, test_size=0.3, random_state=0)

def evaluate(params):
    model = DecisionTreeRegressor(random_state=0, **params).fit(Xtr, ytr)
    r2_train = r2_score(ytr, model.predict(Xtr))
    r2_test = r2_score(yte, model.predict(Xte))
    print(f"{params}: train R2={r2_train:.3f}, test R2={r2_test:.3f}")

evaluate({"max_depth": 3})
evaluate({"max_depth": 10})
evaluate({"max_depth": 5, "min_samples_leaf": 5})
evaluate({"max_depth": 5, "ccp_alpha": 0.01})

As figuras a seguir (compartilhadas com a página em japonês) ilustram como a variação de parâmetros-chave remodela a superfície de predição. Use-as como uma lista de verificação visual ao ajustar sua própria árvore:

Árvore com limite de profundidade padrão (max_depth=3) Distribuição de dados e ajuste da árvore base Superfície 3D da árvore base Árvore mais profunda com max_depth=10 Árvore regularizada com min_samples_leaf=20 Árvore podada com ccp_alpha=0.4 Restrição de contagem de folhas max_leaf_nodes=5 Efeito do absolute_error sob valores atípicos Efeito do squared_error sob valores atípicos

4. Referências #

  • Breiman, L., Friedman, J. H., Olshen, R. A., & Stone, C. J. (1984). Classification and Regression Trees. Wadsworth.
  • Breiman, L., & Friedman, J. H. (1991). Cost-Complexity Pruning. In Classification and Regression Trees. Chapman & Hall.
  • scikit-learn developers. (2024). Decision Trees. https://scikit-learn.org/stable/modules/tree.html