前提知識
LASSO
Least Absolute Shrinkage and Selection Operator
つまり、2乗誤差と$L^1$罰則項を用いて行う線形回帰のこと。
ネーミングセンスなさすぎだろと思う。なにがLeastでAbsoluteなShrinkageなのか不明だし、Selectionしてるとはいえ、Operatorではないだろ。
${ y^{(i)}}$ を結果変数、 ${ \boldsymbol{x}^{(i)} = {}^t(x^{(i)}_1, \dots , x^{(i)}_P) }$ を説明変数とし、 $y^{(i)} = \sum_p \beta_p x^{(i)}_p$ の式で回帰を行うとして、
E_\lambda = \sum_i \left| y^{(i)} - \sum_p \beta_p x^{(i)}_p \right|^2 + \lambda \left\| \boldsymbol \beta \right\|_1
を最小化する。
パラメタの多くが0になる結果が返ってくるので、sparse modelingで活躍する。
Ridge regression
LASSOの罰則項が$L^2$ノルムの場合。
これは、Bayes統計でも出て来る。ノイズが正規分布であると仮定して、パラメタの共役事前分布を取った場合。
最小化するのは、下の式の $\alpha = 0$ の場合のもの。
erastic net
これもネーミングセンス無くない?どこらerasticでどこがnetなの???
罰則項が$L^1$と$L^2$のあわせ技になっているもの。
E_{\lambda, \alpha} = \sum_i \left| y^{(i)} - \sum_p \beta_p x^{(i)}_p \right|^2 + \lambda \left ( \alpha \left \| \boldsymbol \beta \right \|_1 + (1 - \alpha) \left \| \boldsymbol \beta \right \|_2^2 \right )
を最小化する。
sparse modelingした時、説明変数の間に強い相関があると、回帰結果が不安定になる。
それを抑えるために、相関がある説明変数の係数が同じ程度の値になるよう、$L^2$ノルムを入れていると解釈できる。
Rのコード
以下のライブラリを使用
glmnet
適当にcsvか何かからdataframeを作っておいて、
x <- scale(as.matrix(dplyr::select(dataframe, -result_variable)))
で説明変数x
と結果変数y
を準備
(dataframe
のなかのresult_variable
が結果変数の場合)
LASSO
fit <- glmnet(x, y)
で出せる。
交差検証で最適な$\lambda$を探すなら、
cvfit <- cv.glmnet(x, y)
Ridge regression
fit <- glmnet(x, y, alpha = 1)
で出せる。
交差検証で最適な$\lambda$を探すなら、
cvfit <- cv.glmnet(x, y, alpha = 1)
erastic net
fit <- glmnet(x, y, alpha = hoge)
で出せる。
交差検証で最適な$\lambda$を探すなら、
cvfit <- cv.glmnet(x, y, alpha = hoge)
hoge
には、誤差関数$E_{\lambda, \alpha}$の$\alpha$を入れよう。
plot系
plot(fit)
で、solution path($\lambda$の値を変えたとき、$\boldsymbol{\beta}$の各成分がどう変わるかのグラフ)を見せてくれる。
plot(cvfit)
で、$\lambda$の値を変えたときにどのように誤差関数が変化するかを教えてくれる。
coef(cvfit, s="lambda.min")
で、誤差最小の$\lambda$でのパラメタがわかる。
参照
岩波データサイエンス vol.5
help(glmnet)
TeXのフォーマティングについては→TeX 書式での数式表示が崩れるメモ