Machine Learning · Insper

Gradient Boosting

Abordagem avançada

Outras perdas, as bibliotecas modernas e quando o boosting vence a floresta

O caminho desta parte

  1. Qualquer perda, o mesmo laçoperdas robustas, log-odds, AdaBoost
  2. Ajustar os outros botõestamanho da árvore, folhas, L2, com η fixo
  3. As bibliotecas modernashistogramas, XGBoost, LightGBM, CatBoost
  4. Floresta ou boosting?uma comparação justa, lado a lado
Cada etapa responde a uma pergunta: o que a próxima árvore escuta? → quais botões importam com a taxa de aprendizado e a parada antecipada fixas? → o que as bibliotecas acrescentam ao algoritmo? → qual ensemble usar?
Etapa 1 · o que a próxima árvore escuta?

A perda decide o que a próxima árvore escuta

perdapseudo-resíduo \(-\partial L/\partial F\)\(F_0\)
quadrática\(y - F\)média
absoluta\(\operatorname{sinal}(y - F)\)mediana
Huber\(y - F\), cortado em \(\pm\delta\)—
log loss\(y - p\)log-odds da taxa base

Um outlier, \(y_6 = 40\): pseudo-resíduos quadráticos −9,33 … 28,67; absolutos, todos \(\pm 1\).

Com a perda quadrática, o primeiro toco gasta o corte no outlier; com a absoluta ou a Huber, todo ponto empurra com a mesma força.

Classificação: somar log-odds

  • O ensemble soma \(F\) (log-odds) e usa a sigmoide: \(p = 1/(1 + e^{-F})\). Pseudo-resíduo: \(y - p\).
  • Seis pontos, 4 positivos: \(F_0 = \ln 2 = 0{,}693\). O toco corta em \(x < 3{,}5\).
  • Cada folha recebe um passo de Newton: \(\sum (y_i - p_i) / \sum p_i (1 - p_i) = \pm 1{,}5\).
\[ F_1 = 0{,}693 \pm 0{,}5 \times 1{,}5 \;\Rightarrow\; p = 0{,}486 \text{ e } 0{,}809 \]
Mão e scikit-learn concordam até a terceira casa; um toco baixa a log loss de 0,637 para 0,448. Dividir por \(p(1-p)\), a curvatura, deixa o passo cauteloso onde o modelo está em dúvida.

AdaBoost, o ancestral

  • Em vez de resíduos, repondera os pontos: os errados ganham peso, o próximo toco é forçado a olhar para eles.
  • Toco que erra 3 de 10: \(\alpha = \tfrac12 \ln\frac{0{,}7}{0{,}3} = 0{,}424\); cada ponto errado vai de 10% para 16,7%; juntos, metade do peso.
10 atributos, soma de quadrados (ESL §10.1)erro de teste
um toco45,9%
uma árvore completa24,5%
AdaBoost, 400 tocos11,6%
gradient boosting, 400 tocos11,1%
Etapa 2 · quais botões importam com a taxa de aprendizado e a parada antecipada fixas?

Os outros botões, com \(\eta\) e parada antecipada fixos

California housing, CV 5-foldRMSEárvores
padrões (31 folhas)45,8 ± 0,6350
max_leaf_nodes=846,3 ± 0,8736
max_leaf_nodes=12745,9 ± 0,6179
min_samples_leaf=20046,4 ± 0,3452
l2_regularization=1045,5 ± 0,4419
Depois de \(\eta\) e do número de árvores, os outros botões mudam pouco o erro e muito quantas árvores são precisas. Ordem de ajuste: \(\eta\) moderado + parada antecipada → tamanho da árvore e da folha → subamostragem e L2.
Etapa 3 · o que as bibliotecas acrescentam ao algoritmo?

As bibliotecas modernas

  • Histogramas (LightGBM, XGBoost hist, HistGradientBoosting*): até 255 faixas por atributo; faltantes e categorias nativos.
  • XGBoost: penalidade por árvore e derivada segunda; o valor ótimo de cada folha é
\[ w_j^* = -\frac{G_j}{H_j + \lambda} \qquad \lambda = 0:\ -1{,}5 \quad \lambda = 1:\ -0{,}6 \]
  • LightGBM: cresce folha a folha (num_leaves), GOSS e EFB para dados grandes.
  • CatBoost: codifica categorias pela média do alvo das linhas anteriores, sem ver o próprio rótulo.
Com \(\lambda = 0\), \(w^*\) é o passo de Newton feito à mão; \(\lambda\) é o Ridge dentro de cada folha.
Etapa 4 · qual ensemble usar?

Floresta ou boosting?

R² de 16 configurações aleatórias de floresta e de boosting
  • Padrões, fold a fold: o boosting vence a floresta em todos os folds, +1,6 ± 0,4 mil de RMSE; ajustado, +3,8 ± 0,4.
  • 16 configurações aleatórias: floresta de R² 0,762 a 0,826; boosting de 0,650 a 0,844.
A floresta é difícil de estragar; o boosting ajustado vai mais longe, mas uma configuração descasada fica muito pior. A parada antecipada tira da busca o botão mais perigoso.

Lado a lado

Random forestGradient boosting
árvoresindependentes, profundasem sequência, rasas
reduza variância (média)o viés (soma)
mais árvoresnunca atrapalhamacabam sobreajustando
sem ajustemuito boaboa; ruins podem ser muito piores
ajustadaum pouco melhorem geral a melhor em dados tabulares
de graçaOOB, treino paraleloparada antecipada, faltantes, perdas
Lab avançado · cerca de 40 min, em duplas

Comparar, ajustar e testar, passos 6 a 11

  • Mesmo notebook, mesma sessão: os passos usam X_dev, cv, cv_eval, summary e results.
  • A floresta e o XGBoost e o LightGBM nos mesmos folds; uma busca aleatória; o limiar fora do fold; o teste, uma vez; as colunas que o modelo usa.
  • Notebook no Colab, a partir do passo 6.
  • Simulações: boosting estocástico (passo 7) e e no ano seguinte? (passo 11).

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