回帰分析における正則化について、あらためて考える

# 最初に結論
本記事で説明する話の結論だけ先に言うと、こうなります。

* 3種類の回帰分析（MLE（最小二乗法＝最尤推定）、ラッソ回帰、リッジ回帰）はMAP推定の枠組みを用いることで統一的に理解することができる。
* モデルが想定する事前の確率分布をどうするかで回帰分析（正則化）の種類が変わる。
* すなわち、モデルが想定する事前確率の分布がラプラス分布ならラッソ回帰、ガウス分布ならリッジ回帰、一様分布ならMLEとなる。

詳細は本文で説明します。これから順に説明していきますので興味を感じた方はお読みいただければ幸いです。


# 1. この記事はなに？
　本記事では[前回記事](https://qiita.com/smats-rd/items/381619b4210ae1fc8126)の続きとして、回帰分析における正則化についてあらためて考えてみたいと思います。

https://qiita.com/smats-rd/items/381619b4210ae1fc8126
 
　前回記事で、想定される「理想的なモデル」に対してデータの実測時に正規分布に従って発生するノイズを最小化することを考えていくと最小二乗法に行きつくという話をしました。この「理想的なモデル＋ノイズ」というイメージで考えると機械学習における「過学習」という現象もつかみやすくなります。本来機械学習でモデルが学習したいのは $y_{ideal} = W^TX$ という「理想的なモデル」のパラメータ$W$であって、実測時に生じたノイズである$ε$の部分は学習したくないわけです。しかし、観測データ $y=W^TX+ε$ を使って学習するため、モデルが訓練データに適合しようとするとノイズ $ε$ のランダムな変動パターンまで学習してしまい、複雑すぎる $W$ が得られてしまう。これが「過学習」であり、未知のデータに対する予測性能（汎化性能）が悪化する原因となります。
　この過学習を少なくしたいということで考えられた手法が正則化です。基本的なアイデアとしては、事前に想定したモデルの性質を「こんなモデルであるはずだという方向性＝事前知識」としてあらかじめモデルに組み込んでおくことで、モデルの最適化＝学習の方向を調節する手法です。具体的にどういうことかはこの後説明します。

# 2. その前にまず、なぜ「正則化」というのか

　この点をちゃんと説明してくれない入門書が多いように感じるので、ここであらためてまとめます。
「正則」と聞くと、線形代数で出て来た「正方行列が逆行列を持てる（＝行列式の分母がゼロにならない）」性質のことを正則と呼んでいたのを思い出すかもしれません。あの「正則」と今回の正則化における「正則」は同じなのでしょうか？同じでないなら、どういうときに「正則」という言葉を使うのでしょうか？

　結論から言うと、線形代数における「正則行列」の「正則」と、機械学習における「正則化」の「正則」には直接的な関係はありません。 ただし、どちらも「良い性質を持つようにする」というニュアンスは共通しています。

## 2-1. 線形代数における「正則」（Regular/Invertible）

   *   正方行列に対して使われる言葉で、「逆行列が存在する」という性質を表します。
   *   正則な行列は、線形変換において情報を失わない、可逆な変換を行う行列と言えます。
   *   「正則」という言葉は、英語の "regular" に由来し、「規則正しい」「正常な」といった意味合いがあります。逆行列が存在するという性質が、「規則正しい」振る舞いをする行列、というイメージから来ていると考えられます。

## 2-2. 機械学習における「正則化」（Regularization）
   *   モデルの学習において、過学習を抑制し、汎化性能を高めるために行うテクニックの総称です。
   *   モデルの複雑さを制限したり、パラメータに制約を加えたりすることで、モデルが訓練データに過剰に適合するのを防ぎます。
   *   「正則化」という言葉は、英語の "regularization" に由来し、「規則的にする」「正常な状態にする」といった意味合いがあります。過学習によって異常な状態になっているモデルを、「規則正しい」「正常な」状態に戻す、というイメージから来ていると考えられます。

　機械学習における「正則化」は、モデルを「規則正しい状態」に近づけることで、過学習を防ぎ、未知のデータに対する予測性能を向上させることを目指す、というニュアンスで使われています。線形代数における「正則」と直接的な関係はありませんが、「良い性質を持つようにする」という抽象的な意味合いが共通しています。
　また、機械学習における正則化はパラメータの値を小さく抑えるように働くことが多いため、結果としてモデルの挙動が「滑らか」になったり「安定」したりするという効果もあります。 このような意味でも、「規則正しい」状態に近づける、という解釈ができるかもしれません。



# 3. なぜ事前知識（正則化）が必要なのか？
　では本題に移ります。なぜ単純な最小二乗法＝最尤推定だけでは不十分な場合があるのでしょうか？

## 3-1.  **過学習 (Overfitting)** 
　データにノイズが多い場合や、データ数に対してモデルのパラメータ（重み $W$ の要素数）が多すぎる場合、モデルはデータに存在するノイズまで学習してしまい、訓練データには非常に良く当てはまるものの、未知の新しいデータに対してはうまく予測できない状態（過学習）に陥ることがあります。正則化をしない最小二乗法はデータへの当てはまり（尤度）だけを最大化するため、過学習を引き起こしやすい傾向があります。

## 3-2.  **解の不定性** 
　特徴量間に強い相関がある場合（多重共線性）など、最小二乗法の解（最適な$W$）が一意に定まらない、あるいは非常に不安定になることがあります。
 
## 3-3.  **モデルの複雑さ** 
　データへの当てはまりが同じくらい良いモデルが複数存在する場合、より「シンプル」なモデル（例えば、重みの値が全体的に小さい、あるいは不要な特徴量の重みがゼロになっている）を選びたい、という動機があります。

## 3-4. そこで正則化です
　これらの問題に対処するため、「データへの当てはまり具合」だけでなく、「モデルのパラメータWがどのような値であるべきか」という**事前知識（Prior Knowledge）** を導入する考え方が出てきます。これが**正則化 (Regularization)** の基本的なアイデアです。

# 4. MAP推定：尤度と事前分布のバランスをとる

　最小二乗法は**最尤推定 (Maximum Likelihood Estimation, MLE)** に基づいています。これは、パラメータ$W$によって$D$のデータが生成される確率（尤度）$P(D | W)$ を最大にするパラメータ$W$を探す方法でした。数式で表現するとこうなります。

```math
MLE: \underset{W}{\operatorname{argmax}}(P(D | W))
```

　これに対し、ベイズ統計学の枠組みにもとづいて事前知識を導入する方法が**最大事後確率推定 (Maximum A Posteriori Estimation, MAP)** です。MAP推定では、データ $D$ を観測した後で、そのときに使ったパラメータが $W$ であった確率がどのくらいありそうかを表す**事後確率 (Posterior Probability)** $P(W | D)$ を最大化する $W$ を探します。この「事後確率」は結果から原因へ遡及して確率を求めるもので、考える時の時系列が尤度のときとは逆になるのでちょっと考えづらくてもやっとします。

```math
MAP: \underset{W}{\operatorname{argmax}}(P(W | D))
```

　ここで**ベイズの定理**を使うと、比較的楽に$P(W|D)$を考えられるようになります。ベイズの定理が主張していることとは、「データ（結果）を観測した後の仮説（原因）の確率(ここでは $P(W|D)$)は、仮説の下でデータが観測される確率=尤度(ここでは $P(D|W)$)と、データを見る前の仮説の確率=事前確率(ここでは$P(W)$)の積に比例する。」すなわち $事後確率 ∝ 尤度 × 事前確率 （∝は比例を表す記号）$ということで、今回の文脈に沿って数式で表せばこうなります。この形ならば時系列が自然になるので$P(W|D)$を考えやすくなります。

```math
P(W | D) = \frac{P(D | W) \times P(W)}{P(D)}
```

この式の各項が持つ意味を整理します。

*   **$P(W | D)$ (事後確率 - Posterior)**
    *   **意味:** データ $D$ を観測した後、パラメータが $W$ であった確率。
    *   **役割:** 私たちが最大化したい確率値。データによる学習と事前知識の両方を反映した結果。

*   **$P(D | W)$ (尤度 - Likelihood)**
    *   **意味:** もしパラメータが $W$ だった場合に、データ $D$ が観測される確率。
    *   **役割:** モデル$W$が観測データをどれだけうまく説明できるかを表す。MLEで最大化しようとしたもの。

*   **$P(W)$ (事前確率 - Prior)**
    *   **意味:** データ $D$ を観測する前に、私たちがパラメータ $W$ に対して持っている信念や仮定、想定（$W$ がどのような値を取りやすいか）。
    *   **役割:** モデルの複雑さに対するペナルティや、特定の性質（例: スパース性）をモデルに促すための**事前知識**。正則化の根源となる。

*   **$P(D)$ (データ$D$が生ずる確率 / 周辺尤度 / 証拠 - Evidence)**
    *   **意味:** パラメータ $W$ の値に関係なく、データ $D$ そのものが観測される確率。
    *   **役割:** 事後確率 $P(W|D)$ を正規化するため、言い換えれば全ての可能な $W$ について$P(W|D)$を合計すると1になるように式の分母においた定数。考えられる全ての $W$ について $P(D | W) \times P(W)$ を足し合わせた（パラメータ$W$は連続値なので積分した）値とも言えます。$P(D)$ は $W$ に依存しない定数になります。

    $$ P(D) = \int{P(D | W) \times P(W)} dW $$

　今、私たちは事後確率 $P(W | D)$ の値そのものを知りたいのではなく、$P(W | D)$ を最大にする $W$ を見つけたいだけです。分母の $P(D)$ は $W$ の値によって変化しないため、$P(W | D)$ においてどの $W$ が最大値を与えるかには影響しません。したがって、MAP推定を行う際には、分母の $P(D)$ 項は無視して、分子の $P(D | W) \times P(W)$ を最大化することに集中すればよいはずです。前回記事でも同様の考え方をしていましたが、このことはしばしば比例記号 $\propto$ を使って以下のように書かれます。

```math
\displaylines{
P(W | D) \propto P(D|W) P(W) \\
(事後確率 P(W|D) は、尤度P(D|W)と事前確率P(W)の積に比例する)
}
```

したがって、MAP推定は実質的に、尤度 $P(D | W)$ と事前分布 $P(W)$ の積を最大化することと同じになります。

$$
MAP: \underset{W}{\operatorname{argmax}}(P(D | W) \times P(W))
$$

これは、「$W$のデータ$D$への当てはまり（尤度）＝$P(D | W)$」と「パラメータW自体のありえやすさ（事前分布）＝$P(W)$」の両方を考慮して、より適切な $W$ を見つけようとしていることを意味します。

# 5. **対数事後確率と正則化項**

　ここで前回にひきつづき、計算を簡単にするためのテクニックとして対数を取ります。logの中の掛け算がlogの足し算になります。

```math
\displaylines{
\underset{W}{\operatorname{argmax}}(P(D | W) \times P(W)) \\
↓\\
\underset{W}{\operatorname{argmax}} [\log(P(D | W)) + \log(P(W))]
}
```

　各項の意味はこうです。

*  $\log(P(D | W))$: **対数尤度**。前回記事で見たように、ノイズがガウス分布だと仮定すると、これを最大化することは**二乗誤差 $\sum(y_i - W^TX_i)^2$ を最小化**することに対応します。
* $\log(P(W))$: **対数事前分布**。私たちがパラメータ$W$についてどのような事前分布を仮定するかによって、この項の形が変わり、結果として異なる正則化項として現れます。

　つまりMAP推定は、元の最小二乗法の目的関数（二乗誤差の最小化）に、対数事前分布 $\log(P(W))$ に由来するペナルティ項（正則化項）を加えたものを最適化（最大化または最小化）することになります。$\log(P(D|W))$ についてはすでに前回記事で考えてあります。残るは $\log(P(W))$ がどんな値なのかを考えることです。

# 6. L2正則化（リッジ回帰）の導出：ガウス事前分布

　ここで、パラメータ $W$ の各要素 $w_i$ が、**平均0、分散 τ² のガウス分布**に従うという事前知識を仮定するとどうなるかを考えます。これは「多くの重みはゼロに近い値を取り、極端に大きな値は取らないだろう」という仮定を置くということです。言い換えると、パラメータの値が全体的に小さい方が「ありえそう」だと考えているわけです。この場合の確率密度関数はこうなります（前回記事でもご紹介したガウス分布の確率密度関数に従うだけです）。

 $$
 f(w_i) = \frac1{\sqrt{(2πτ²)}} \times exp(-\frac{w_i^2}{2τ^2})
 $$

事前分布 $P(W)$ は、各 $wᵢ$ がガウス分布にしたがった場合の積になりますので

$$
P(W)=\prod{f(w_i)} 
$$
よって$w_i$の影響がない定数部分$\frac1{\sqrt{(2πτ²)}}$を無視すれば以下の比例関係が成り立ちます。
$$
P(W)∝ \prod exp(-\frac{wᵢ²}{2τ²})
$$

この対数を取ると、log(exp()) は逆関数で中の式だけ残して消えるのでこうなります。

$$\log(P(W))= \sum(-\frac{wᵢ²}{2τ²}) + (定数項)$$

定数 $-\frac1{2τ²}$ は$\sum$の外に出します。

$$\log(P(W))= -\frac1{2τ²}  \sum wᵢ² + (定数項)$$

ここで、前項で算出していた対数事後確率の式を思い出します。
$$
\underset{W}{\operatorname{argmax}} [\log(P(D | W)) + \log(P(W))]
$$

また、$\log(P(D|W))$ は前回記事ですでに算出していました。

```math
\displaylines{
\log(P(D | W, σ²)) = -n \times \log(σ\sqrt{2π}) - \frac1{2σ²} \sum_{i=1}^n(y_i - W^TX_i)^2 \\
少し簡略化してこう考えられます。\\
\log(P(D | W)=(定数項)- \frac1{2σ²} \sum(y_i - W^TX_i)^2 
}
```


これらを対数事後確率の式に入れると、
```math
\displaylines{
Maximize [ \log P(D | W) + \log P(W) ] =\\
Maximize [ (定数項) - \frac1{2σ²} \sum(y_i - W^TX_i)^2  - \frac1{2τ²}\sum{wᵢ²} ]\\
（σ² はノイズの分散、τ² は事前分布の分散）
}
```

最大化の問題を、符号を反転させて最小化の問題に書き換えます。定数項はこの問題では無視していいので無くします。
$$
Minimize [\frac1{2σ²} \sum(y_i - W^TX_i)^2 + \frac1{2τ²}\sum{w_i^2} ]
$$

ここで、定数倍は最適化の結果に影響しないので、全体を $2σ²$ 倍して整理すると
$$
Minimize [\sum(y_i - W^TX_i)^2 + \frac{σ^2}{τ^2}\sum{w_i^2} ]
$$

$\frac{σ²}{τ²}$ を新しい定数 $λ$ (ラムダ) と置くと、

```math
\displaylines{
Minimize [\sum(y_i - W^TX_i)^2 + λ\sum{w_i^2} ] \\
(ここでλ=\frac{σ²}{τ²})
}
```

　おわかりいただけただろうか… **L2正則化（リッジ回帰）** の目的関数が現れました。
$\sum{w_i^2} $ は重み$w_i$の二乗和（L2ノルムと言われるもの）であり、これが正則化項です。$λ$は、データへの適合（二乗誤差）とモデルの複雑さ（重みの二乗和）のバランスを調整するハイパーパラメータとなります。

# 7. **L1正則化（ラッソ回帰）の導出：ラプラス事前分布**

　今度は、パラメータ $W$ の各要素 $wᵢ$ が、**平均0のラプラス分布**に従うという事前知識を仮定した場合を考えてみます。ラプラス分布は、ゼロで鋭いピークを持ち、裾が指数的に減衰する分布です。確率密度関数はこんな形をしています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2261111/18a84053-824f-4759-a409-c9a595dbe999.png)

 
 これは「ほとんどの重みは厳密にゼロであり、ゼロでない重みが少数存在するだろう」という**スパース性 (Sparsity)** の仮定に対応します。

事前分布 $P(W)$ は、今度は各 $wᵢ$ のラプラス分布の積になります。
ラプラス分布の確率密度関数は 
```math
\displaylines{
\frac 1 {2b} exp\left(\frac{-|w_i - μ|} b\right) \\

（bはスケールパラメータ）
}
```

なので、平均 $μ=0$とすると、
```math
\displaylines{
P(W) ∝ \prod_{i=1}^n exp\left(\frac{-|w_i|} b\right) \\
}
```

この対数を取ると、
```math
\displaylines{
\log(P(W)) = \sum (\frac{-|w_i|} b) + (定数項) \\
\log(P(W)) = -\frac1 b \sum |w_i| + (定数項)
}
```

これを対数事後確率の式に入れ、リッジ回帰の場合と同様に最小化問題に書き換えて整理すると、
```math
\displaylines{
Minimize \left[ \sum(yᵢ - W^TX_i)² + λ  \sum |w_i| \right] \\
（λ はσ², b から決まる新しい定数）
}
```

　おわかりいただけただろうか…これは **L1正則化（ラッソ回帰）** の目的関数です。
$\sum{|wᵢ|}$ は**重みの絶対値和（L1ノルム）** であり、これが正則化項です。
L1正則化は、最適化の過程で多くの重み $w_i$ を厳密にゼロにする性質があり、不要な特徴量を取り除く**特徴量選択 (Feature Selection)** の効果があります。



# 8. L1正則化(ラッソ回帰)とL2正則化(リッジ回帰)の使い分け

　正則化に種類があることが分かりましたが、それではこれらをどう使い分けるか？が問題になると思います。ラプラス分布（L1正則化）とガウス分布（L2正則化）のどちらの事前分布を仮定するかは、**問題の性質や目的、そしてパラメータWに対してどのような事前知識を持っているか**に基づいて決定します。


主な判断基準は以下の通りです。

## 8-1.  スパース性 (Sparsity) の期待
*   **ラプラス分布 (L1正則化):** 多くの特徴量の重みが**厳密にゼロ**になることを期待する場合、またはそれを望む場合に選択します。
    *   **理由:** ラプラス分布はゼロ地点で尖ったピークを持つため、「ほとんどの重みはゼロである可能性が高い」という事前知識を強く反映します。
    *   **適した状況:**
        *   特徴量の数が非常に多いが、実際に目的変数に影響を与えているのはそのうちのごく一部だと考えられる場合 (例: 遺伝子解析、文書分類など)。
        *   モデルの解釈性を高めるために、不要な特徴量を自動的に選択・除外したい場合 (特徴量選択)。

*   **ガウス分布 (L2正則化):** 多くの特徴量が目的変数に対して何らかの (小さいかもしれない) 影響を持つと考えており、重みが**ゼロに近い値**を取ることを期待するが、**厳密にゼロになることはあまり期待しない**場合に選択します。
    *   **理由:** ガウス分布はゼロ付近で滑らかな形状をしており、「重みはゼロに近い値を取りやすいが、完全にゼロでなくても良い」という事前知識を反映します。
    * **適した状況:**
        * ほとんどの特徴量が何らかの形で予測に寄与すると考えられる場合。
        *   特にスパース性を仮定する強い理由がない場合。
        *   特徴量間に強い相関がある場合 (L1より安定することがある)。

## 8-2.  **モデルの解釈性**
   *   **L1正則化:** 不要な特徴量の重みがゼロになるため、どの特徴量が重要なのかが分かりやすくなり、**モデルの解釈性が向上**します。
   *   **L2正則化:** 全ての重みがゼロに近づきますが、完全にゼロにはなりにくいため、L1ほどの解釈性は得られにくい場合があります。しかし、全ての特徴量の寄与を考慮したモデルになります。

## 8-3.  **予測性能 (実験による選択)**
   *   理論的な事前知識だけでなく、実際にどちらの正則化を使った方が**予測性能が高くなるか**を実験的に確認することも重要です。
   *   **交差検証 (Cross-Validation)** などの手法を用いて、L1正則化、L2正則化、あるいは両者を組み合わせた**Elastic Net**などの性能を比較し、最も良い結果が得られるものを選択するのが実践的なアプローチです。正則化の強さを決めるハイパーパラメータ `λ` も同時に調整します。

## 8-4.  **計算上の考慮**

   *   **L2正則化:** 目的関数が微分可能であるため、最適化が比較的容易で、解析解（正規方程式の変形版）が存在します。
   *   **L1正則化:** 目的関数が絶対値を含むため原点で微分不可能ですが、効率的な最適化アルゴリズム（近接勾配法など）が開発されています。

## 8-5. 正則化項の使い分けポイント

*   スパースな解（多くの重みがゼロ）が必要・期待される → L1正則化 (ラプラス分布)
*   重みは小さい方が良いが、ゼロでなくても良い・多くの特徴量が寄与する → L2正則化 (ガウス分布)
*   解釈性（特徴量選択）を重視する → L1正則化 (ラプラス分布)
*   どちらが良いか不明・性能を最大化したい → 交差検証で比較検討

このように、問題設定や目的に応じて適切な事前分布（正則化手法）を選択することが重要です。

具体的な実装については、他の記事に譲ります。下記の記事など良いかも知れません。

https://qiita.com/Takayoshi_Makabe/items/8f6dcb25124b9dcb1ae8

# 9. P(W) の確率分布は他にもありうるのでは？
　ここまでの説明により$P(W)$ の確率分布がラプラス分布ならラッソ回帰、ガウス分布ならリッジ回帰になるということがわかったと思います。しかし確率分布には他にもいろいろ種類があります。$P(W)$に他の確率分布も想定できるのではないか？と思わないでしょうか。答えは Yes であり、必要なら他の確率分布を使っても良いのです。これまでの歴史の中で、ラプラス分布とガウス分布を使う場合が計算もしやすく実用性が高かったということなのだと思います。ここでさらに言えば $P(W)$ を一様分布と考えた場合、$P(W)$ は定数になります。おや？と思いますよね。$P(W)$ が一様分布であり、例えば定数$k$であるなら、$P(W|D)$ はどうなるでしょうか？

 $$
 P(W | D) = \frac{P(D | W) \times P(W)}{P(D)} = \frac{k}{P(D)} \times P(D|W) =(定数) \times P(D|W)
 $$

 つまり

 $$
 P(W | D) ∝ P(D|W) 
 $$

 ですからこの場合$W$ はMLEで推定した値と同じになります。ベイズ統計学の枠組みにおいて$P(W|D)$を考える時に、$P(W)$ を一様分布と仮定すればMLEとなるのであり、実はMLEとはMAP推定の特殊ケースであるとも言えるのです。


# 10. まとめ

*   正則化は、モデルの過学習を防いだり、よりシンプルなモデルを選んだりするために、パラメータ $W$ に対する事前知識を導入する考え方。
*   ベイズの定理を利用し、尤度 $P(D | W)$ と事前分布 $P(W)$ の積（事後確率 $P(W | D)$ に比例）を最大化するMAP推定を行う。
*   対数を取ると $\log P(D | W) + \log P(W)$ の最大化になる。$\log P(D | W)$ が（-1倍の）二乗誤差項に対応し、$\log P(W)$ が正則化項に対応する。
*   事前分布として**ガウス分布**を仮定すると、正則化項はL2ノルム（二乗和）になり、L2正則化（リッジ回帰）が導かれる。
*   事前分布として**ラプラス分布**を仮定すると、正則化項はL1ノルム（絶対値和）になり、L1正則化（ラッソ回帰）が導かれる。
*   L1正則化とL2正則化の使い分けは問題設定や目的に対して適切と思われるものを選択する。
* 事前分布として**一様分布**を仮定すると、MAP推定はMLE(最小二乗法＝最尤推定）と同じになる。

長くなりました。お疲れ様でした。
今回記事は以上となります。ここまでお読みいただきありがとうございました。この記事がどなたかのお役にたてば幸いです。

# 参考記事
　本記事を読んで機械学習と正則化について興味が湧いてきたら、以下のような記事で図解とともに解説されているので読んでみるとよいかと思います。わかりやすく書かれた素晴らしい記事だと思います。

https://qiita.com/c60evaporator/items/784f0640004be4eefc51