非線形変換を学習するGAM

R による Supervised Learning:回帰

Nina Zumel and John Mount

Win-Vector, LLC

一般化加法モデル(GAM)

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

R による Supervised Learning:回帰

非線形関係の学習

R による Supervised Learning:回帰

mgcvパッケージのgam()

gam(formula, family, data)

family:

  • gaussian(デフォルト):通常の回帰
  • binomial:確率
  • poisson/quasipoisson:カウント

大規模データに適している

R による Supervised Learning:回帰

s()関数

anx ~ s(hassles)
  • s() は変数を非線形として指定する
  • s() は連続変数に使用する
    • ユニーク値がおよそ10以上の場合
R による Supervised Learning:回帰

hasslesデータの再検討

R による Supervised Learning:回帰

hasslesデータの再検討

モデル RMSE(交差検証) $R^2$(訓練)
線形 ($hassles$) 7.69 0.53
2次 ($hassles^2$) 6.89 0.63
3次 ($hassles^3$) 6.70 0.65
R による Supervised Learning:回帰

hasslesデータのGAM

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 による Supervised Learning:回帰

変換の確認

plot(model)

$y$ の値: predict(model, type = "terms")

R による Supervised Learning:回帰

モデルによる予測

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

R による Supervised Learning:回帰

サンプル外性能の比較

適切な変換が既知の場合が理想的だが、未知の場合にGAMが有効

モデル RMSE(交差検証) $R^2$(訓練)
線形 ($hassles$) 7.69 0.53
2次 ($hassles^2$) 6.89 0.63
3次 ($hassles^3$) 6.70 0.65
GAM 7.06 0.64
  • 小規模データ $\rightarrow$ GAMのノイズが増加
R による Supervised Learning:回帰

練習しましょう!

R による Supervised Learning:回帰

Preparing Video For Download...