こんにちは。
正則化パート2ですね。前回の最後に
- Ridge Regression (Tikhonov regularization)
- Lasso Regression
を例に出しました。今回はこれらを用いて正則化について学びましょう。の前に
線形回帰を思い出しましょう。その時に
![Rendered by QuickLaTeX.com \[\texttt{minimize} | y - X\beta|^2\]](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-50eb088c1174d38e9baa58f470c8cf11_l3.png)
を考えて
![Rendered by QuickLaTeX.com \[X(X^TX)^{-1}X^T\]](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-e969d6a5c655a05e2fbc370cc17376e3_l3.png)
の列ベクトルが張る空間への射影行列をやりましたね。ここで
![Rendered by QuickLaTeX.com X](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-d4ee28752517d6062a3ca0314890342d_l3.png)
が正則ということなのでもう一歩踏み込みQR分解を行います。つまり
![Rendered by QuickLaTeX.com \[X = QR ~~ s.t. ~~ Q^TQ = I ~~ , ~~ R~ \textrm{is upper triangular matrix}\]](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-f94d438ca12fefda43a0b28a512bb986_l3.png)
を使うと
![Rendered by QuickLaTeX.com \[(X^TX)^{-1}X^T = (R^TQ^TQR)^{-1}R^TQ^T = R^{-1}Q^T\]](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-aaf0f86f9f1491d3ab9737e2ca908de4_l3.png)
とできます。わかったことは
の列ベクトルが張る空間への射影行列![Rendered by QuickLaTeX.com X(X^TX)^{-1}X^T](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-58d0d43195b77077c7132832ba66350f_l3.png)
が
![Rendered by QuickLaTeX.com QQ^T](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-3693183f59d558553b3a84d892cd3e09_l3.png)
となるということ。超シンプル。これが線形回帰。で、これに
![Rendered by QuickLaTeX.com L_2](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-84db227018e3228ebc26b639aa94bbd0_l3.png)
正則化項を加えます。つまり
![Rendered by QuickLaTeX.com \lambda \in \mathbb{R}_+](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-658a08ad56c0604d12468512a8b71ea2_l3.png)
に対して
![Rendered by QuickLaTeX.com \[\texttt{minimize} | y - X\beta|^2 + \lambda | \beta|_2^2\]](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-0c904519a931f644f504160dcc84b13f_l3.png)
を考えます。これをリッジ回帰というのでしたね。ラッソは
![Rendered by QuickLaTeX.com L_1](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-6affe041739f78a044af6d3f56d6b659_l3.png)
正則化項を使います。
違いは?
正則化項のノルムです。
![Rendered by QuickLaTeX.com L_2](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-84db227018e3228ebc26b639aa94bbd0_l3.png)
と
![Rendered by QuickLaTeX.com L_1](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-6affe041739f78a044af6d3f56d6b659_l3.png)
の違いは?もう少し親しみある言い方だと距離と絶対値の違いは?
Answer: 微分可能性
![Rendered by QuickLaTeX.com L_1](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-6affe041739f78a044af6d3f56d6b659_l3.png)
は微分できませんね。前回の図を思い出してください。
![Rendered by QuickLaTeX.com L_1](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-6affe041739f78a044af6d3f56d6b659_l3.png)
は尖っていました。
gists
勾配法は微分を使いましたね。なので一旦ラッソは無視してリッジについて学びましょう。
次の解を考えます。ただし
![Rendered by QuickLaTeX.com \[\beta = \texttt{argmin}_b { |y-Xb |^2_2 + \lambda|b|^2_2 }\]](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-188ee680e6edf1bfa98fb17363f3a78b_l3.png)
「アーグミン
![Rendered by QuickLaTeX.com b](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-f56d50c26583f9a035ff6b4e3c0ca5c0_l3.png)
」は右辺を最小化するときの
![Rendered by QuickLaTeX.com b](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-f56d50c26583f9a035ff6b4e3c0ca5c0_l3.png)
ということ。これを展開し、微分すると
![Rendered by QuickLaTeX.com \[|y-Xb |^2_2 + \lambda|b|^2_2 &= (y-Xb)^T(y-Xb) + \lambda b^Tb\]](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-5f48b5804f6ffb95bfe92e227ddf1b12_l3.png)
![Rendered by QuickLaTeX.com \[= y^Ty -2y^TXb + b^TX^TXb + \lambda b^Tb\]](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-c5413427597f0d86e63100eec8a16c27_l3.png)
![Rendered by QuickLaTeX.com \[\frac{\partial}{\partial b} \left( |y-Xb |^2_2 + \lambda|b|^2_2 \right) = -2X^Ty + 2X^TXb + 2\lambda b = 0\]](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-fa62ac6b25164d11c44c853d772cc034_l3.png)
![Rendered by QuickLaTeX.com \[\Leftrightarrow (X^TX + \lambda I)b = X^Ty\]](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-a3cea3abb6e055308afea1256a4af62f_l3.png)
![Rendered by QuickLaTeX.com \[\Leftrightarrow \beta = (X^TX + \lambda I)^{-1}X^Ty\]](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-208057f3a9c40f8cb014273b8ac0c8ff_l3.png)
これが欲しかった
![Rendered by QuickLaTeX.com \beta](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-b6a7605b1bcca8f1b416eaf733f34e08_l3.png)
ですね。さっきの
![Rendered by QuickLaTeX.com X(X^TX)^{-1}X^T](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-58d0d43195b77077c7132832ba66350f_l3.png)
と似てませんか?邪魔なのは
![Rendered by QuickLaTeX.com \lambda](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-2b5c45836864531b8e37025dabadd24a_l3.png)
の項。なのでここで
![Rendered by QuickLaTeX.com \lambda \downarrow 0](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-21f3f15f42eb0f03cbd965f37e8bdd64_l3.png)
とするとさっきのと同じになります。だって元々のコスト関数の正則化項が0になるわけですからね。
、これ意味ある?
ここで
![Rendered by QuickLaTeX.com X^TX](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-45ae6e224610b89cbcb8217f0b82df04_l3.png)
は半正定値対称行列であり、実数値からなる対称行列は実数の固有値を持ちます。よって
![Rendered by QuickLaTeX.com X^TX](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-45ae6e224610b89cbcb8217f0b82df04_l3.png)
の固有値は0以上。行列式を計算して見よう。
![Rendered by QuickLaTeX.com \[\det |X^TX + \lambda I - t I| = 0\]](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-7c82764d23e4602165e3bbbc1b02031b_l3.png)
![Rendered by QuickLaTeX.com \[\det |X^TX - (t - \lambda) I| = 0\]](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-63ef36545841f670ec80fa65354c8aab_l3.png)
これを
![Rendered by QuickLaTeX.com (\lambda -t)](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-50ddb0de718a329d7d5a1d60404a7f83_l3.png)
について解くと
![Rendered by QuickLaTeX.com X^TX](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-45ae6e224610b89cbcb8217f0b82df04_l3.png)
の固有値が求まりますね。そこでその固有値の一つを
![Rendered by QuickLaTeX.com e_1](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-1900a484b687cf3bfd85c929f272f63c_l3.png)
とするとリッジ回帰における固有値は
![Rendered by QuickLaTeX.com t = e_1 + \lambda](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-c4b7c0b209a2d274f2c3a788eb46f74c_l3.png)
となり、
![Rendered by QuickLaTeX.com \lambda](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-2b5c45836864531b8e37025dabadd24a_l3.png)
分シフトされていますね。つまり、行列式をゼロから遠ざけており正則をキープしてくれています。
逆に
![Rendered by QuickLaTeX.com \lambda \uparrow \infty](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-1a1a187dd162ea171f0b46ab2ea41b48_l3.png)
とすると
![Rendered by QuickLaTeX.com \beta \rightarrow 0](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-d14fb82e86b38de621705a81d908827e_l3.png)
となってしまいますね。これもまずい。
をどうやって決めるか
これが問題ですね。これは
交差検証で選ばれます。交差検証ってなんやあ??
![](https://research.miidas.jp/wp-content/uploads/2019/02/Screen-Shot-2019-02-01-at-10.30.15.png)
ですかね。これはデータ
![Rendered by QuickLaTeX.com n](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-b170995d512c659d8668b4e42e1fef6b_l3.png)
個をK等分割(5か10が一般)してモデルの汎化性能を評価するためにあります。しかしここではパラメータ
![Rendered by QuickLaTeX.com \lambda](https://research.miidas.jp/wp-content/ql-cache/quicklatex.com-2b5c45836864531b8e37025dabadd24a_l3.png)
のベストチョイスのために使います。これはとても重要な概念なので次の記事で深く確認しましょう。今回は簡単な図を最後に見てお別れです。
でわ
READMORE