← 統計検定テキスト 一覧

📊 対象級:準1級 | 重要度:B(標準)

要点(BLUF)

  β^ridge=(XX+λI)1Xy  \boxed{\;\hat{\boldsymbol\beta}^{\mathrm{ridge}} = (X^\top X + \lambda I)^{-1} X^\top \mathbf y\;}

1. なぜ正則化が要るのか(過学習と多重共線性)

最小二乗推定量

β^OLS=(XX)1Xy\hat{\boldsymbol\beta}^{\mathrm{OLS}} = (X^\top X)^{-1} X^\top \mathbf y

は、説明変数が多い・説明変数どうしが強く相関している(多重共線性)とき、極端に不安定になります。理由は XXX^\top X にあります。

XXX^\top X がほぼ特異(行列式がほぼ 0、=ある列が他の列の線形結合で近似できてしまう)になると、その逆行列 (XX)1(X^\top X)^{-1} の成分が爆発的に大きくなります。推定量の分散は

Var(β^OLS)=σ2(XX)1\mathrm{Var}(\hat{\boldsymbol\beta}^{\mathrm{OLS}}) = \sigma^2 (X^\top X)^{-1}

なので、(XX)1(X^\top X)^{-1} が暴れる = 係数の分散が暴れる、ということです。要するに:データがほんの少し変わるだけで係数が大きく振れ、符号すら反転する。これが過学習(訓練データの偶然のノイズまで拾ってしまい、新しいデータで外す状態)の温床です。

正則化は、損失に「係数を大きくしすぎたら罰金」という項を足し、係数を 0 方向へ引き戻すことでこの不安定さを抑えます。

graph LR
    A["説明変数が多い<br/>/多重共線性"] --> B["X^T X がほぼ特異"]
    B --> C["(X^T X)^-1 が爆発"]
    C --> D["OLS係数の分散が暴れる<br/>=過学習"]
    D --> E["罰則項で係数を縮small"]
    E --> F["分散が下がり安定"]

2. リッジ回帰(L2 正則化)

2.1 定義

リッジ回帰は、係数の二乗和(L2 ノルムの二乗)を罰則として足した最小化問題です。

β^ridge=argminβ{yXβ22+λβ22}\hat{\boldsymbol\beta}^{\mathrm{ridge}} = \arg\min_{\boldsymbol\beta} \left\{ \lVert \mathbf y - X\boldsymbol\beta \rVert_2^2 + \lambda \lVert \boldsymbol\beta \rVert_2^2 \right\}

ここで β22=jβj2\lVert \boldsymbol\beta \rVert_2^2 = \sum_{j} \beta_j^2λ0\lambda \ge 0正則化パラメータ(罰則の強さ)です。要するに:「残差を小さくしたい」気持ちと「係数を小さく保ちたい」気持ちを λ\lambda で天秤にかけています。λ=0\lambda=0 なら普通の最小二乗、λ\lambda \to \infty なら係数は全部 0 へ押しつぶされます。

2.2 閉形式解の導出(省略しない)

目的関数を

J(β)=(yXβ)(yXβ)+λββJ(\boldsymbol\beta) = (\mathbf y - X\boldsymbol\beta)^\top (\mathbf y - X\boldsymbol\beta) + \lambda \boldsymbol\beta^\top \boldsymbol\beta

と書きます。第1項を展開します。

J(β)=yy2βXy+βXXβ+λββJ(\boldsymbol\beta) = \mathbf y^\top \mathbf y - 2\boldsymbol\beta^\top X^\top \mathbf y + \boldsymbol\beta^\top X^\top X \boldsymbol\beta + \lambda \boldsymbol\beta^\top \boldsymbol\beta

要するに:ここまでは普通の最小二乗の展開に、末尾の λββ\lambda \boldsymbol\beta^\top \boldsymbol\beta が増えただけです。

β\boldsymbol\beta で微分して 0 と置きます(ベクトル微分の公式 (βAβ)/β=2Aβ\partial(\boldsymbol\beta^\top A \boldsymbol\beta)/\partial\boldsymbol\beta = 2A\boldsymbol\betaAA 対称)、(βc)/β=c\partial(\boldsymbol\beta^\top \mathbf c)/\partial\boldsymbol\beta = \mathbf c を使う)。

Jβ=2Xy+2XXβ+2λβ=0\frac{\partial J}{\partial \boldsymbol\beta} = -2 X^\top \mathbf y + 2 X^\top X \boldsymbol\beta + 2\lambda \boldsymbol\beta = \mathbf 0

両辺を 2 で割って β\boldsymbol\beta について整理します。

(XX+λI)β=Xy(X^\top X + \lambda I)\,\boldsymbol\beta = X^\top \mathbf y

要するに:最小二乗の正規方程式 (XX)β=Xy(X^\top X)\boldsymbol\beta = X^\top \mathbf y の左辺に λI\lambda I が足されただけです。両辺に左から (XX+λI)1(X^\top X + \lambda I)^{-1} をかけて、

  β^ridge=(XX+λI)1Xy  \boxed{\;\hat{\boldsymbol\beta}^{\mathrm{ridge}} = (X^\top X + \lambda I)^{-1} X^\top \mathbf y\;}

を得ます。

2.3 なぜ λI\lambda I が多重共線性を救うのか

ここが理論の核心です。任意の行列 XX に対し XXX^\top X半正定値(固有値がすべて 0\ge 0)です。多重共線性があると固有値のいくつかがほぼ 0 になり、これが逆行列を爆発させていました。

λI\lambda I を足すと、XXX^\top X のすべての固有値が一律に λ\lambda だけ持ち上がります。XXX^\top X の固有値を μi0\mu_i \ge 0 とすると、XX+λIX^\top X + \lambda I の固有値は μi+λ\mu_i + \lambda になるからです。よって λ>0\lambda > 0 なら全固有値が λ>0\ge \lambda > 0 となり、XX+λIX^\top X + \lambda I正定値=必ず可逆になります。要するに:ほぼ 0 だった固有値が λ\lambda 以上に底上げされ、逆行列の爆発が止まる。XX がフルランクでなくても(説明変数の数 > データ数でも)リッジは解けます。これが「λI\lambda IXXX^\top X を正則化する」の意味です。

2.4 リッジは係数を縮めるが 0 にはしない

対角化して見ると分かります。XX の特異値分解を使うと、リッジは最小二乗の各成分を μiμi+λ\dfrac{\mu_i}{\mu_i + \lambda} 倍(0<μiμi+λ<10 < \dfrac{\mu_i}{\mu_i + \lambda} < 1)に縮める操作になります。要するに:すべての係数を一律に 0 方向へ「比例縮小」しますが、係数が連続的に小さくなるだけで、有限の λ\lambda ではちょうど 0 にはなりません。これが次の Lasso との決定的な違いです。


3. Lasso(L1 正則化)とスパース性

3.1 定義

Lasso(Least Absolute Shrinkage and Selection Operator)は罰則を絶対値和(L1 ノルム)にします。

β^lasso=argminβ{yXβ22+λβ1},β1=jβj\hat{\boldsymbol\beta}^{\mathrm{lasso}} = \arg\min_{\boldsymbol\beta} \left\{ \lVert \mathbf y - X\boldsymbol\beta \rVert_2^2 + \lambda \lVert \boldsymbol\beta \rVert_1 \right\}, \qquad \lVert \boldsymbol\beta \rVert_1 = \sum_j \lvert \beta_j \rvert

要するに:罰則を「二乗和」から「絶対値和」に変えただけ。ところがこの違いが、一部の係数をちょうど 0 にする(スパースな解=変数選択)という劇的な効果を生みます。Lasso には閉形式解はなく、座標降下法などで数値的に解きます。

3.2 なぜ L1 だけ角で 0 になるのか(制約領域の幾何)

最小化問題は、ラグランジュ双対により「制約付き最小化」と等価です。

minβyXβ22s.t.{β1t(Lasso)β22t(リッジ)\min_{\boldsymbol\beta} \lVert \mathbf y - X\boldsymbol\beta \rVert_2^2 \quad \text{s.t.}\quad \begin{cases} \lVert \boldsymbol\beta \rVert_1 \le t & (\text{Lasso}) \\ \lVert \boldsymbol\beta \rVert_2^2 \le t & (\text{リッジ}) \end{cases}

要するに:「係数の入る範囲(制約領域)を決めて、その中で残差を最小化する」という見方です。

解は「楕円の等高線が制約領域に最初に触れる点」になります。ここで形が効きます。

要するに:尖った角=軸上=ある係数が 0、という幾何のため、Lasso は係数を 0 にします。次元 pp が増えるほどひし形の角(軸・座標部分空間)が増え、いっそう多くの係数が 0 に落ちます。これが「L1 はスパース、L2 はスパースでない」の正体です。

graph TB
    subgraph L2["リッジ(L2):制約領域は円"]
        R1["角が無くなめらか"] --> R2["楕円は軸外の一般点で接触"]
        R2 --> R3["係数は縮むが 0 にならない"]
    end
    subgraph L1["Lasso(L1):制約領域はひし形"]
        S1["座標軸上に尖った角"] --> S2["楕円は角で接触しやすい"]
        S2 --> S3["角=軸上=係数がちょうど 0<br/>→ 変数選択"]
    end

3.3 もう一段の裏付け:劣微分とソフト閾値

絶対値 βj\lvert\beta_j\rvertβj=0\beta_j=0 で微分できませんが、劣微分(subgradient)が使えます。説明変数が直交している特別な場合、Lasso の解は最小二乗解 β^jOLS\hat\beta_j^{\mathrm{OLS}}ソフト閾値作用素を当てた形になります。

β^jlasso=Sλ/2 ⁣(β^jOLS),Sγ(z)={zγ(z>γ)0(zγ)z+γ(z<γ)\hat\beta_j^{\mathrm{lasso}} = S_{\lambda/2}\!\left(\hat\beta_j^{\mathrm{OLS}}\right), \qquad S_{\gamma}(z) = \begin{cases} z - \gamma & (z > \gamma) \\ 0 & (\lvert z \rvert \le \gamma) \\ z + \gamma & (z < -\gamma) \end{cases}

要するに:絶対値が小さい係数(zγ\lvert z\rvert \le \gamma)は問答無用で 0 に潰し、大きい係数も一定量 γ\gamma だけ 0 方向へずらす。L1 罰則の勾配は係数の大きさによらず一定の押し(符号 ±λ\pm\lambda)なので、最後まで 0 へ押し切れます。

対してリッジ(L2)の罰則の勾配は 2λβj2\lambda\beta_j で、係数が小さくなるほど押す力も弱まる(0 に近づくと 0 に押す力も 0 に消える)。だから 0 ちょうどには到達しない。この勾配の違いが、幾何の「角 vs なめらか」の代数版です。


4. バイアス・バリアンストレードオフ

正則化のバイアス-バリアンスとMSEのU字

リッジ回帰で λ を上げると分散(緑)は下がるが偏り²(赤)は上がり、MSE(青)は中間の λ で最小(U字)。少し偏らせて分散を抑えると総合誤差が下がるのが正則化。図は simulations/seisokuka_bias_variance.py で生成。

正則化の効果は、推定量の良さを測る**平均二乗誤差(MSE)**の分解で説明できます。推定量の評価(MSE・フィッシャー情報量・クラメール・ラオの不等式) で見たとおり、

MSE(θ^)=(E[θ^]θ)2バイアス2+Var(θ^)分散\mathrm{MSE}(\hat\theta) = \underbrace{\bigl(\mathbb E[\hat\theta] - \theta\bigr)^2}_{\text{バイアス}^2} + \underbrace{\mathrm{Var}(\hat\theta)}_{\text{分散}}

と分解されます。

要するに:正則化は「不偏だが暴れる推定量」を「少し偏るが安定した推定量」に取り替え、トータルの誤差(MSE)を下げる賭けです。下表は λ\lambda を動かしたときの典型的な振る舞いです(数値は概念図としての目安)。

λ\lambda係数の縮みバイアス2^2分散MSE状態
0(最小二乗)なし小(≈0)過学習寄り
少し改善
適度適度最小ちょうど良い
強いさらに小中〜大過小適合(underfit)
\infty全部 0最大≈0完全な過小適合
graph LR
    L0["λ を 0 から増やす"] --> B["バイアス² は単調増加"]
    L0 --> V["分散は単調減少"]
    B --> M["MSE = バイアス² + 分散<br/>は U 字(谷あり)"]
    V --> M
    M --> OPT["谷の底の λ が最適<br/>(交差検証で探す)"]

5. λ\lambda の選択と Elastic Net

5.1 交差検証(クロスバリデーション)

λ\lambdaハイパーパラメータで、データから直接は推定できません。標準的には K 分割交差検証で選びます。

  1. 候補の λ\lambda を複数用意する。
  2. データを K 個に分け、K−1 個で学習し残り 1 個で予測誤差を測る、を K 通り回して平均する。
  3. 平均予測誤差が最小(または「最小から 1 標準誤差以内で最も簡素」の 1-SE ルール)の λ\lambda を採用する。

要するに:「未知データでの当たり具合」を擬似的に測り、それが最良になる罰則の強さを選ぶ、ということです。

5.2 Elastic Net(L1 + L2)

L1 と L2 を両方混ぜた罰則が Elastic Net です。

argminβ{yXβ22+λ1β1+λ2β22}\arg\min_{\boldsymbol\beta} \left\{ \lVert \mathbf y - X\boldsymbol\beta \rVert_2^2 + \lambda_1 \lVert \boldsymbol\beta \rVert_1 + \lambda_2 \lVert \boldsymbol\beta \rVert_2^2 \right\}

要するに:Lasso の変数選択(スパース性)と、リッジの「相関した変数たちをまとめて拾う安定性」のいいとこ取り。Lasso は強く相関したグループから 1 本だけ拾って他を捨てがちですが、Elastic Net は相関グループをまとめて残せます。準1級では「両者の折衷がある」程度の理解で十分です。


6. 具体例(直観をつかむ)

説明変数 x1,x2x_1, x_2 がほとんど同じ情報(相関 0.99)を持ち、真のモデルが y=2x1+εy = 2x_1 + \varepsilon だとします。

要するに:多重共線性を「縮めて均す」のがリッジ、「片方を捨てて選ぶ」のが Lasso です。


7. 試験での問われ方(準1級)

準1級の出題範囲・ワークブックでは、過学習を抑える手法として「変数増減(ステップワイズ)/縮小推定/次元削減/正則化」が並びで扱われ、その中で L1(Lasso)・L2(リッジ)・Elastic Net が問われます(範囲表は改訂されうるため要最新確認)。

典型的な問われ方は次のとおりです。


⚠️ 引っかけ・頻出論点


よくある疑問(Q&A)

Q1. 「正則化=わざとバイアスを入れて分散を下げる」って、不偏性をあえて捨てているということ? A. はい、その理解で正しいです。最小二乗は(仮定下で)最良線形不偏推定量(BLUE)で、不偏性を死守する立場です。一方で正則化は不偏性をあえて手放し、係数を 0 へ縮めることでバイアスを受け入れる代わりに分散を大きく下げます。MSE = バイアス² + 分散 なので、分散の減り幅がバイアスの増え幅を上回れば、トータルの誤差は最小二乗より小さくできます。多重共線性のように分散が暴れている状況では、この取引が割に合います。

Q2. リッジと Lasso、結局どちらを使えばいい? A. 目的で使い分けます。変数を絞り込みたい(解釈したい・不要な変数を落としたい)なら Lasso(係数を 0 にして自動で変数選択)。全変数を残しつつ多重共線性を抑えて安定させたいならリッジ(すべて縮めるが 0 にしない)。相関の強い変数群をまとめて扱いたい、かつスパース性も欲しいなら Elastic Net。試験では「0 にしたい→L1、安定化→L2」の対応だけ押さえれば十分です。

Q3. λ\lambda を大きくしすぎるとどうなる? 過学習が進む? A. 逆です。λ\lambda を大きくするほど係数は強く 0 へ縮められ、最終的に全係数が 0(=定数モデル)に近づきます。これは過小適合(underfitting)で、データの構造すら表現できなくなる状態です。過学習は λ\lambda小さすぎる(罰則が弱く最小二乗に近い)ときに起きます。λ\lambda は「過学習(小さすぎ)」と「過小適合(大きすぎ)」の間の谷を交差検証で探します。

Q4. なぜ正則化の前に説明変数を標準化するの? A. 罰則項が係数の絶対的な大きさを見るからです。例えば身長を「メートル」で測ると係数は大きく、「ミリメートル」で測ると係数は小さく出ます。同じ変数でも単位が変わるだけで罰金の重さが変わってしまい、罰則がスケールに振り回されます。これを避けるため、各説明変数を平均 0・分散 1 に標準化してから当てはめ、全変数が罰則の前で対等になるようにします(正規分布(標準正規・標準化) の標準化と同じ発想で、ここでは罰則の公平化が目的)。なお切片はデータの位置合わせの役割なので、通常は罰則に含めません。

Q5. リッジに閉形式解があるのに、Lasso にはないのはなぜ? A. 目的関数の滑らかさの違いです。リッジの罰則 λβ22=λβj2\lambda\lVert\boldsymbol\beta\rVert_2^2 = \lambda\sum\beta_j^2β\boldsymbol\beta について滑らかな二次関数なので、微分して 0 と置けば線形方程式になり、β^=(XX+λI)1Xy\hat{\boldsymbol\beta} = (X^\top X + \lambda I)^{-1} X^\top \mathbf y という閉じた式が出ます。一方 Lasso の罰則 λβ1=λβj\lambda\lVert\boldsymbol\beta\rVert_1 = \lambda\sum\lvert\beta_j\rvertβj=0\beta_j = 0尖っていて微分不能です。だから素直に微分して解く方法が使えず、劣微分・座標降下法・最小角回帰(LARS)などで数値的に解きます。皮肉なことに、この「尖り(微分不能点)」こそが係数を 0 にできる源でもあります。

Q6. リッジで λI\lambda I を足すと、なぜ必ず逆行列が存在するの? A. XXX^\top X は半正定値なので固有値が μi0\mu_i \ge 0(最小は 0 もあり得る、これが特異の原因)。λI\lambda I を足すと固有値が一斉に μi+λ\mu_i + \lambda にシフトします。λ>0\lambda > 0 なら全固有値が λ>0\ge \lambda > 0正定値となり、固有値に 0 が無いので逆行列が必ず存在します。だから最小二乗が解けない状況(多重共線性、説明変数の数 > データ数)でもリッジは解けます。これが「λI\lambda I が正則化(regularize)する」という言葉どおりの効果です。


まとめ


関連ノート