GAM para aprender transformações não lineares

Aprendizado Supervisionado em R: Regressão

Nina Zumel and John Mount

Win-Vector, LLC

Modelos Aditivos Generalizados (GAMs)

$$ y \sim b0 + s1(x1) + s2(x2) + .... $$

Aprendizado Supervisionado em R: Regressão

Aprendendo relações não lineares

Aprendizado Supervisionado em R: Regressão

gam() no pacote mgcv

gam(formula, family, data)

family:

  • gaussian (padrão): regressão "comum"
  • binomial: probabilidades
  • poisson/quasipoisson: contagens

Melhor para conjuntos de dados maiores

Aprendizado Supervisionado em R: Regressão

A função s()

anx ~ s(hassles)
  • s() indica que a variável deve ser não linear
  • Use s() com variáveis contínuas
    • Mais de ~10 valores únicos
Aprendizado Supervisionado em R: Regressão

Revisite os dados de hassles

Aprendizado Supervisionado em R: Regressão

Revisite os dados de hassles

Modelo RMSE (cross-val) $R^2$ (treino)
Linear ($hassles$) 7.69 0.53
Quadrático ($hassles^2$) 6.89 0.63
Cúbico ($hassles^3$) 6.70 0.65
Aprendizado Supervisionado em R: Regressão

GAM com os dados de hassles

model <- gam(
  anx ~ s(hassles), 
  data = hassleframe, 
  family = gaussian
)

summary(model)
...

R-sq.(adj) =  0.619   Deviance explained = 64.1%
GCV = 49.132  Scale est. = 45.153    n = 40
Aprendizado Supervisionado em R: Regressão

Examinando as transformações

plot(model)

Valores de $y$: predict(model, type = "terms")

Aprendizado Supervisionado em R: Regressão

Prevendo com o modelo

predict(model, newdata = hassleframe, type = "response")

Aprendizado Supervisionado em R: Regressão

Comparando desempenho fora da amostra

Saber a transformação correta é ideal, mas GAM ajuda quando ela é desconhecida

Modelo RMSE (cross-val) $R^2$ (treino)
Linear ($hassles$) 7.69 0.53
Quadrático ($hassles^2$) 6.89 0.63
Cúbico ($hassles^3$) 6.70 0.65
GAM 7.06 0.64
  • Conjunto de dados pequeno $\rightarrow$ GAM mais ruidoso
Aprendizado Supervisionado em R: Regressão

Vamos praticar!

Aprendizado Supervisionado em R: Regressão

Preparing Video For Download...