【本記事の内容】L2正則化を初学者向けに説明
今回は初学者向けに「L2正則化」を説明していきます。
本記事は前回の記事の続きになります。

また、本記事は自分がQiitaに挙げた記事に周辺説明を肉付けした形で説明しています。
・Qiitaに挙げた記事「Ridge回帰 まとめ 【切片の扱い】【数式表現まとめ】」
【目次】
L2正則化とは
L2正則化
まず、正則化とは機械学習において、モデルの過学習を抑えるために損失関数(誤差関数)に正則化項を導入する手法のことを言います。
「L2正則化(またはRidge)」とは、特に正則化項(罰則項)として「L2ノルム」を採用した正則化のことを言います。
・L2正則化 :
$$ S_{\lambda}(\boldsymbol{\beta}) = f(\boldsymbol{\beta}) + \lambda \sum_{j=0}^{p} \boldsymbol{\beta}_j^{~2}\\
$$
- \(\boldsymbol{\beta} = (\beta_0,\beta_1, … , \beta_p)^T \) : 回帰係数ベクトル(これが求めたいもの!!!)
- \(S_{\lambda}(\boldsymbol{\beta})\) : コスト関数(=損失関数+正則化項)
- \(f(\boldsymbol{\beta})\) : 損失関数(誤差関数)
- \(\lambda (≧0)\) : 正則化パラメータ →この値が大きいほど(モデルの複雑さに)より強いペナルティを与える
- \(\lambda \sum_{j=0}^{p} \boldsymbol{\beta}_i^{~2}\) : 正則化項(罰則項)→ モデルの複雑さ(回帰係数の大きさ)にペナルティを科すことで過学習を抑制している ; \(\beta_i 大\) →コスト大
L2正則化の特徴(長所・短所)
【長所】
- 過学習を抑制できる
- 回帰係数を解析的に求めることができる
【短所】
- 説明変数の数が多くなるとモデルが複雑になる/モデルの解釈がしずらくなる
【その他の特徴】
- 回帰係数の推定値\(\hat{\beta_i}\)は正則化パラメータ\(\lambda\)を大きくしていくと0に近づく(が、完全に0にはならない)
→この性質からL2正則化を用いた推定は「縮小推定」とも言われます。
https://tjo.hatenablog.com/entry/2015/03/03/190000 から引用
Ridge回帰(重回帰分析+L2正則化)
L2正則化を用いた回帰のことを「Ridge回帰」と言います。
今回は特に重回帰分析にL2正則化を用いた例を取り上げます。
設定
データ
サンプルNo | 説明変数\(x_1\) | 説明変数\(x_2\) | … | 説明変数\(x_p\) | 目的変数\(y\) |
1 | \(x_{11}\) | \(x_{21}\) | … | \(x_{p1}\) | \(y_{1}\) |
2 | \(x_{12}\) | \(x_{22}\) | … | \(x_{p2}\) | \(y_{2}\) |
… | … | … | … | … | … |
\(n\) | \(x_{1n}\) | \(x_{2n}\) | … | \(x_{pn}\) | \(y_{n}\) |
詳しくは前々回の記事を参照ください。(具体例などが載っています。)

設定
- 説明変数(入力)を標準化
→これにより罰則項(正則化項)から切片\(\beta_0\)を除いて議論することができます。
→実用上では、スケーリングをそろえて精度を出すために説明変数(入力)の標準化は必須です。
※標準化は平均を0,分散を1にする変換のことを言います。
- 入力サンプル数 : \(n\)
- 説明変数の個数 : \(p\)
- 目的変数ベクトル : \(\boldsymbol{y}=(y_1, … ,y_n)^T\)
- 説明変数行列 :
$$\boldsymbol{X}=\begin{pmatrix} x_{11} & … & x_{p1}\\ x_{12} & … & x_{p2} \\ … & … & … \\ x_{1n} & … & x_{pn}\end{pmatrix} $$
→\(\beta_0\)は別で推定するため、前々回の記事で説明した「説明変数行列」の1列目の「要素1のみをもつn×1ベクトル」を省きます。
- 回帰係数ベクトル : \(\boldsymbol{\beta}= (\beta_1, … ,\beta_p)^T\)
→\(\beta_0\)は別で推定します。
コスト関数(=損失関数(誤差関数)+正則化項)
$$ S_{\lambda}(\boldsymbol{\beta}) = \sum_{i=1}^{n} \{y_i – (\beta_0 +\beta_1 x_{1i} + … + \beta_px_{pi}) \}^2 + \lambda \sum_{j=1}^{p} \boldsymbol{\beta}_j^{~2} $$
回帰係数の最適化問題の式表現
$$ \hat{\boldsymbol{\beta}} = argmin_{~\beta} ~[~ \sum_{i=1}^{n} \{y_i – (\beta_1 x_{1i} + … + \beta_px_{pi}) \}^2 + \lambda \sum_{j=1}^{p} \boldsymbol{\beta}_j^{~2} ~] $$
あるいは、等価な式として以下の式で書ける。
$$ \hat{\boldsymbol{\beta}} = argmin_{~\beta} ~[~ \sum_{i=1}^{n} \{y_i – (\beta_0 + \beta_1 x_{1i} + … + \beta_px_{pi}) \}^2 ~]$$
$$ subject ~~to ~~ \sum_{j=1}^{p} \boldsymbol{\beta}_j^{~2} ≦ t $$
ただし、
・回帰係数ベクトル : \($\hat{\boldsymbol{\beta}}=(\beta_1, … ,\beta_p)^T\)$
・\(arg min_{~\beta} ~f\) : \(f\)を最小にする\(\boldsymbol{\beta}\)
・\(subject ~to\) : 制約条件
※上の最適化問題の式は「Lagrange form(ラグランジェ形式)」と呼ぶこともあります。(下の最適化問題を「Lagrangeの未定乗数法」を使うことで上式に帰着させることができることに由来します。)
回帰係数
$$ \hat{\beta_0} = \frac{1}{n} \sum_{i=1}^{n}y_i
\hat{\boldsymbol{\beta}} = (\boldsymbol{X}^T \boldsymbol{X}+\lambda\boldsymbol{I}_p)^{-1} (\boldsymbol{X}^T \boldsymbol{y}) $$
ただし、
・回帰係数ベクトル(p×1) : \(\hat{\boldsymbol{\beta}}=(\beta_1, … ,\beta_p)^T\)
・目的変数ベクトル(n×1) : \(\boldsymbol{y}=(y_1, … ,y_n)^T\)
・説明変数行列(n×p) :
$$\boldsymbol{X}=\begin{pmatrix} x_{11} & … & x_{p1}\\ x_{12} & … & x_{p2} \\ … & … & … \\ x_{1n} & … & x_{pn} \end{pmatrix}$$
・p×p単位行列 : \(\boldsymbol{I}_p\)
※最小二乗法を用いた回帰係数の導出は余裕があれば別記事を書きたいと思います。(重回帰分析のとまとめて書ければと思っています。)
参考文献
また、切片の扱い(罰則項から切片を抜いたり、コスト関数に切片を含めたりすること)については以下が詳しいです。
次回予告
勉強まとめとしては「L1正則化」を書く予定です。(なぜスパース解が得られるかを等高線の説明も踏まえて解説していきます。)
何か指摘などあればコメント欄にてお待ちしております。
コメント