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...