6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

LASSO, Ridge regression, erastic netをRで実行

Last updated at Posted at 2017-04-12

前提知識

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を作っておいて、

:select(dataframe, result_variable))
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 書式での数式表示が崩れるメモ

6
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?