GAM för att lära sig icke-linjära transformationer

Övervakad inlärning i R: Regression

Nina Zumel and John Mount

Win-Vector, LLC

Generaliserade additiva modeller (GAM)

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

Övervakad inlärning i R: Regression

Lära sig icke-linjära samband

Övervakad inlärning i R: Regression

gam() i paketet mgcv

gam(formula, family, data)

family:

  • gaussian (standard): "vanlig" regression
  • binomial: sannolikheter
  • poisson/quasipoisson: antal

Bäst för större datamängder

Övervakad inlärning i R: Regression

Funktionen s()

anx ~ s(hassles)
  • s() anger att variabeln ska vara icke-linjär
  • Använd s() med kontinuerliga variabler
    • Mer än ungefär 10 unika värden
Övervakad inlärning i R: Regression

Återbesök hassles-data

Övervakad inlärning i R: Regression

Återbesök hassles-data

Modell RMSE (korsvalidering) $R^2$ (träning)
Linjär ($hassles$) 7,69 0,53
Kvadratisk ($hassles^2$) 6,89 0,63
Kubisk ($hassles^3$) 6,70 0,65
Övervakad inlärning i R: Regression

GAM av hassles-data

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
Övervakad inlärning i R: Regression

Granska transformationerna

plot(model)

$y$-värden: predict(model, type = "terms")

Övervakad inlärning i R: Regression

Förutsäga med modellen

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

Övervakad inlärning i R: Regression

Jämföra prestanda på osedd data

Att känna till rätt transformation är bäst, men GAM är användbart när den är okänd

Modell RMSE (korsvalidering) $R^2$ (träning)
Linjär ($hassles$) 7,69 0,53
Kvadratisk ($hassles^2$) 6,89 0,63
Kubisk ($hassles^3$) 6,70 0,65
GAM 7,06 0,64
  • Liten datamängd $\rightarrow$ brusigare GAM
Övervakad inlärning i R: Regression

Nu kör vi en övning!

Övervakad inlärning i R: Regression

Preparing Video For Download...