GAM для нелінійних перетворень

Кероване навчання в R: регресія

Nina Zumel and John Mount

Win-Vector, LLC

Узагальнені адитивні моделі (GAM)

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

Кероване навчання в R: регресія

Вивчення нелінійних залежностей

Кероване навчання в R: регресія

gam() у пакеті mgcv

gam(formula, family, data)

family:

  • gaussian (типово): «звичайна» регресія
  • binomial: імовірності
  • poisson/quasipoisson: кількості

Найкраще для великих наборів даних

Кероване навчання в R: регресія

Функція s()

anx ~ s(hassles)
  • s() позначає, що змінна має бути нелінійною
  • Використовуйте s() для неперервних змінних
    • Понад ~10 унікальних значень
Кероване навчання в R: регресія

Повернімося до даних hassles

Кероване навчання в R: регресія

Повернімося до даних hassles

Модель RMSE (крос-валідація) $R^2$ (навчальна)
Лінійна ($hassles$) 7.69 0.53
Квадратична ($hassles^2$) 6.89 0.63
Кубічна ($hassles^3$) 6.70 0.65
Кероване навчання в R: регресія

GAM для даних 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
Кероване навчання в R: регресія

Аналіз перетворень

plot(model)

Значення $y$: predict(model, type = "terms")

Кероване навчання в R: регресія

Прогнозування з моделлю

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

Кероване навчання в R: регресія

Порівняння якості поза вибіркою

Знати точне перетворення — найкраще, але GAM корисна, коли перетворення невідоме

Модель RMSE (крос-валідація) $R^2$ (навчальна)
Лінійна ($hassles$) 7.69 0.53
Квадратична ($hassles^2$) 6.89 0.63
Кубічна ($hassles^3$) 6.70 0.65
GAM 7.06 0.64
  • Малий набір даних $\rightarrow$ більш зашумлена GAM
Кероване навчання в R: регресія

Давайте потренуємось!

Кероване навчання в R: регресія

Preparing Video For Download...