正則化項付き最小二乗法の行列表現の導出

スポンサーリンク

まとめ

通常の最小二乗法の行列表現

\[\boldsymbol{a} = (X X^T)^{-1} X \boldsymbol{y}\]

リッジ正則化項を加えた最小二乗法の行列表現

\[\boldsymbol{a} = (X X^T + \lambda E)^{-1} X \boldsymbol{y}\]

ラッソ正則化項

?(工事中)

ここで\(X=(\boldsymbol{x}_1,\boldsymbol{x}_2,\dots,\boldsymbol{x}_N)\),\(\boldsymbol{y} = (y_1,y_2,\dots,y_N)^T\).
太字の文字はベクトルを表し,ここではベクトルはすべて列ベクトルとします(縦長です).
\(X\)などの大文字は行列を意味します.
このページと\(X\)の転置がついている位置が逆の文献もあるかと思いますがそれは\(X\)の定義が転置した後のものになっているだけですので基本的には同じです.

スポンサーリンク

前提

この記事では従属変数\(y\)が独立変数\(\boldsymbol{x} = (1, x_1, x_2, \cdots, x_k)^T\)で
\[y = a_0 + a_1 x_1 + a_2 x_2 + \cdots + a_k x_k\]
のようにモデル化する場合を考えます(このページの太字はベクトルを意味します.).

方針

損失関数を係数のベクトル\(\boldsymbol{a}=(a_0,a_1,\dots,a_k)^T\)で微分して\(\boldsymbol{0} \)になる点を見つける.

通常の最小二乗法の導出

最小二乗法は損失関数\(l = \frac{1}{2}\sum_{i=1}^{N} (\boldsymbol{x}_i^T \boldsymbol{a} – y_i)^2\)が最小になる係数ベクトル\(\boldsymbol{a}\)を求めます.
具体的には\(l\)を\(\boldsymbol{a}\)で微分して\(\boldsymbol{0}\)になる係数を求めています(これが一致するのは\(l\)が下に凸だからです).
ここで\(i\)は各データ点の番号\((i=1,\dots,N)\)です.

損失関数\(l\)を和記号ではなく行列を使って表すと以下の式になります.

\[l = \frac{1}{2}(X^T \boldsymbol{a} – \boldsymbol{y})^T(X^T \boldsymbol{a} – \boldsymbol{y})\]

ここで\(X=(\boldsymbol{x}_1,\boldsymbol{x}_2,\dots,\boldsymbol{x}_N)\),\(\boldsymbol{y} = (y_1,y_2,\dots,y_N)^T\)です.

\(l\)を\(\boldsymbol{a}\)で微分したときに0になる係数\(\boldsymbol{a}^*\)が誤差の二乗を最小にします.
計算すると
\begin{align}
\frac{dl}{d\boldsymbol{a} } &= \frac{1}{2} \times 2 X (X^T \boldsymbol{a} – \boldsymbol{y})\\
&= X (X^T \boldsymbol{a} – \boldsymbol{y})
\end{align}
スカラーのベクトル微分については参考文献[2]も参考にしてください.

つまり\(\boldsymbol{a}^*\)が満たす式は
\begin{align}
X (X^T \boldsymbol{a}^* – \boldsymbol{y}) &= \boldsymbol{0}\\
X X^T \boldsymbol{a}^* &= X\boldsymbol{y} \\
\boldsymbol{a}^* &= (X X^T)^{-1}X\boldsymbol{y}
\end{align}
このように通常の最小二乗法の計算式が導出できました.

リッジ正則化項を加えた最小二乗法の導出

リッジ正則化項を加えた最小二乗法の損失関数は\(l_R = \frac{1}{2}\sum_{i=1}^{N} (\boldsymbol{x}_i^T \boldsymbol{a} – y_i)^2 + \frac{1}{2}\lambda \sum_{i=1}^{N}a_i^2\)です.
ここで\(\lambda\)は正則化項をどの程度重視するかを決めるハイパーパラメータです.

これも通常の場合と同様に行列\(X\)を使って表すと
\[l_R = \frac{1}{2}(X^T \boldsymbol{a} – \boldsymbol{y})^T(X^T \boldsymbol{a} – \boldsymbol{y})+ \frac{1}{2}\lambda \boldsymbol{a}^T\boldsymbol{a}\]

\(l_R\)を\(\boldsymbol{a}\)について微分すると,
\begin{align}
\frac{dl_R}{d\boldsymbol{a} } &= X (X^T \boldsymbol{a} – \boldsymbol{y}) + \lambda \boldsymbol{a}
\end{align}

つまり\(\boldsymbol{a}^*\)が満たす式は
\begin{align}
X (X^T \boldsymbol{a}^* – \boldsymbol{y}) + \lambda \boldsymbol{a}^*&= \boldsymbol{0}\\
X X^T \boldsymbol{a}^* + \lambda \boldsymbol{a}^* &= X\boldsymbol{y} \\
(X X^T + \lambda E)\boldsymbol{a}^* &= X\boldsymbol{y} \\
\boldsymbol{a}^* &= (X X^T+ \lambda E)^{-1}X\boldsymbol{y}
\end{align}
\(E\)は単位行列です.

このように通常の場合と同様の手順でリッジ正則化項つきの最小二乗法の係数を求める式も導出できます.

参考文献

[1] Algorithm Site

[2]「ベクトルで微分・行列で微分」公式まとめ

コメント

タイトルとURLをコピーしました