Ridge回帰#
モデル#
リッジ回帰(ridge regression)は誤差関数に正則化項を追加した線形回帰モデルである。
モデル自体は線形回帰と同様で目的変数\(y\)をパラメータ\(\boldsymbol{\beta}=(\beta_1, \beta_2, ..., \beta_d)^\top\)と特徴量\(\boldsymbol{x}=(x_1, x_2, ..., x_d)^\top\)の線形関数と誤差\(\varepsilon\)で表現するものになる。
サンプルサイズが\(n\)のデータセット\(\{\boldsymbol{x}_i, y_i\}^n_{i=1}\)があるとして、目的変数を\(\boldsymbol{y} = (y_1, y_2, ..., y_n)^\top\)、特徴量を\(\boldsymbol{X}=(\boldsymbol{x}_1, \boldsymbol{x}_2, ..., \boldsymbol{x}_n)^\top\)とおくと
と表記することもできる。
パラメータの推定#
制約付き最小化問題#
リッジ回帰が線形回帰と違う点は、パラメータの推定(誤差関数の最小化)に関して制約条件があること。
線形回帰は目的変数の実測値\(y_i\)と予測値\(\hat{y}_i=\sum^d_{j=1} x_{ij} \beta_j\)の誤差二乗和\(SSE=\sum^n_{i=1} (y_i - \hat{y}_i)^2\)を最小にするパラメータを求めるものであった。
リッジ回帰はこれに「パラメータ\(\beta_j\)の二乗和がある値\(R\)以下である」という制約条件が付いた下でパラメータを推定する。
この制約条件は円の方程式と呼ばれるもので、2次元で描くと円の形になる。円の範囲内で誤差を最小化するパラメータを選ぶという条件付き最適化問題を解くことになる。
この問題を解くために、ラグランジュの未定乗数法を利用する。
誤差関数の整理#
ラグランジュの未定乗数法を利用して、誤差関数を以下のように書くことができる。
この右辺第二項は正則化項、\(\lambda\)は正則化パラメータと呼ばれる。\(\lambda=0\)のときは最小二乗法と同じ誤差関数になり、得られる推定量も最小二乗推定量と等しくなる。
一般的なラグランジュ双対問題とは異なり、リッジ回帰では最適な\(\lambda\)を推定することはせず、あらかじめ\(\lambda\)を指定して\(x\)を推定する。(誤差を最小にする\(\lambda\)はゼロであり、正則化の意味がなくなるためだと思われる。)
また、最初の制約問題で登場した\(R\)は誤差関数に含めない(おそらく誤差関数を\(\beta\)について微分したときに定数項の\(R\)は消えて特に影響をもたらさないため)
ちなみに行列表記するとこんな感じに表される。
リッジ回帰の推定量\(\hat{\boldsymbol{\beta}}^{\text{Ridge}}\)は解析的に解くことができ、
なので、誤差関数の傾きがゼロ(誤差が最小値)の点を求めると
となり、
となる。
リッジ回帰の特徴#
リッジ回帰は制約をかけたことにより通常の線形回帰(最小二乗法)とは異なる特徴をもっている。
正則化#
線形回帰の最小二乗推定量\(\hat{\boldsymbol{\beta}}^{\text{LS}}\)は次のようなものだった。
このとき、
\(\boldsymbol{X}\)の列数が行数よりも多い(サンプルサイズより特徴量の次元数のほうが多い)
特徴量間の相関が非常に強い
といった状況においては、\(\boldsymbol{X}^\top \boldsymbol{X}\)が正則でなくなって逆行列が計算できなくなったり、あるいは推定が不安定になることがある。
そこでリッジ回帰の推定量\(\hat{\boldsymbol{\beta}}^{\text{Ridge}}\)では
と、\(\boldsymbol{X}^\top \boldsymbol{X}\)の対角成分に\(\lambda\)を足すことで尾根(ridge)を作り、正則にすることで逆行列が計算できるようにしている。
リッジ推定量が正則となる証明
\(X\)は\(n\)次の実行列とする。実対称行列\(X^\top X\)は非負値定符号行列であるため、
と分解可能。ここで\(P\)は直交行列であり、\(\Gamma = \mathrm{diag}(\gamma_1, \cdots, \gamma_n)\)は\(X^\top X\)の固有値(\(\gamma_1 \geq \cdots \geq \gamma_n \geq 0\))を対角成分にもつ対角行列。
もし\(\gamma_n = 0\)なら\(X^\top X\)の逆行列は存在せず、\(\gamma_n > 0\)なら逆行列は存在し、
となる。\(X^\top X\)の最小固有値が\(\gamma_n \to 0\)の場合、\(1/\gamma_n \to \infty\)になり逆行列が計算できない。
一方、リッジ推定量のように\(X^\top X + \lambda I\)とする(\(\lambda \in\mathbb{R}\))と、その逆行列は
となる。こちらは\(\gamma_n \to 0\)の場合であっても\(1 / (\gamma_p + \lambda I)\)は無限大に発散することがないため、\(X^\top X + \lambda I\)は正則となる。
過学習の抑制#
リッジ回帰の誤差関数
は、\(\lambda\)を大きくすると誤差に占める第二項の比重が大きくなり、パラメータ\(\beta_j\)の値をゼロに向けて縮小(shrink)させる。
パラメータが学習データに過学習して大きい値になっているような状況ではパラメータをうまく縮小させることによって過学習を抑制してモデルの汎化誤差を下げることができる。
OLS推定量との関係#
\(\boldsymbol{A}:=\boldsymbol{X}^\top \boldsymbol{X}\)とおくと
となる。このとき
であり、この逆行列をとると\((AB)^{-1}=B^{-1}A^{-1}\)より
よって
と変形することができる。ここで
とおいた。つまりRidge推定量はOLS推定量を\(Z\)で変換したもの。
なお\(\lambda=0\)のときにRidge推定量とOLS推定量が一致することは以下のようにわかる。
推定量のバイアスとバリアンス#
正則化しない通常の最小二乗推定量はBLUE(最良線形不偏推定量:線形不偏推定量のなかでバリアンスが最小)だった。 リッジ回帰やlassoの推定量は不偏ではない(バイアスがある)推定量であるが、最小二乗推定量よりも小さなバリアンスとなる可能性がある。 そのため、最小二乗推定法を使用する線形回帰よりもリッジ回帰のほうが予測の2乗誤差を小さくする可能性がある。
バイアス・バリアンスのトレードオフ#
Ridge推定量のバイアスとバリアンスは次のようになっている(鈴木 (2018))
これらにはトレードオフの関係がある。
(1) \(\lambda \to 0\)のとき(OLSに近づくとき)、\(\mathrm{Bias}\to 0, \mathrm{Variance} \to \sigma^2 \operatorname{Tr}[(X^{\top} X)^{-1}]\)となる。
(2) \(\lambda \to \infty\)のとき、\(\mathrm{Bias} \to \|\beta\|^2, \mathrm{Variance} \to 0\)となる。
Biasについては、 \(\left(X^{\top} X+\lambda I\right)^{-1}=\lambda^{-1}\left(I+\frac{1}{\lambda} X^{\top} X\right)^{-1}\) となることとノルムの斉次性 \(\| c \boldsymbol{x} \|^2 = c^2 \| \boldsymbol{x} \|^2\)を用いると
となる。
\(\left(X^{\top} X+\lambda I\right)^{-1}=\lambda^{-1}\left(I+\frac{1}{\lambda} X^{\top} X\right)^{-1}\) について
ゆえに
となる。\(A=X^\top X\)とおけばよい
ここで\(\lambda \to \infty\)なので、 \(\left\|\left(I+\frac{1}{\lambda} X^{\top} X\right)^{-1} \beta\right\|^2\) は \(\frac{1}{\lambda} X^{\top} X \to 0\) となり、\(I^{-1} = I\)のため
Variance \(\sigma^2 \operatorname{Tr}\left[\left(X^{\top} X+\lambda I\right)^{-2} X^{\top} X\right]\) については、
であり、 \(\left(I+\frac{1}{\lambda} X^{\top} X \right)^{-2}\) は \(\lambda \to \infty\) で\(I\)になるため
バリアンス#
https://hastie.su.domains/StatLearnSparsity_files/SLS.pdf
OLS推定量のバリアンス
線形回帰モデル\(y = X\beta + u\)をOLS推定量\(\hat{\beta}^{OLS} = (X^\top X)^{-1} X^\top y\)に代入して変形すると
\(\hat{\beta}^{OLS} = \beta + (X^\top X)^{-1} X^\top u\) は \(u\sim N(0, \sigma^2 I)\)の仮定より、 \(\hat{\beta}^{OLS} \sim N(\beta, \sigma^2 (X^\top X)^{-1})\)となる。これは以下の定理を用いる。
\(u\)を確率変数ベクトルとし、\(\mu\in\mathbb{R}^n\)、\(b\in\mathbb{R}^p\)、\(C\in\mathbb{R}^{p\times n}\)、\(\operatorname{rank} C = p\)とする。
\(u \sim N(\mu, \Sigma)\) のとき、\(Cu + b \sim N(C\mu + b, C\Sigma C^\top)\)
したがって \(\operatorname{Var}[\hat{\beta}^{OLS}] = \sigma^2 (X^\top X)^{-1}\) となる
証明
\(C := (X^\top X)^{-1} X^\top\)とおけば
であるため、\(u\sim N(0, \sigma^2 I)\) の仮定が満たされるとき、
Ridge推定量のバリアンス
(導出部分は書籍を参考にしたのではなくChatGPTと会話しながら考えたので誤ってる可能性あり)
線形回帰モデル\(\boldsymbol{y} = \boldsymbol{X} \boldsymbol{\beta} + \boldsymbol{u}\)をRidge推定量に代入して変形すると
第1項は標本分布によるばらつきがないバイアス項なので第2項だけが関わる。つまり、
である。
分散には行列\(A\)と確率変数ベクトル\(u\)について、\(\operatorname{Var}[Au]= A\operatorname{Var}[u]A^\top\)となる定理があるので利用すると、\(\boldsymbol{A} :=(\boldsymbol{X}^\top \boldsymbol{X} + \lambda \boldsymbol{I})^{-1} \boldsymbol{X}^\top\)と考えると
モンテカルロ・シミュレーション#
多項式をつかったデータに、多項式回帰をfittingしてみる
import numpy as np
beta = np.array([3, 2, 1])
def gen_data(seed=0, n=500):
np.random.seed(seed)
x = np.random.uniform(-5, 3, size=n)
X = np.array([np.ones(n), x, x**2]).T
u = np.random.normal(scale=3, size=n)
y = X @ beta + u
return X, y
import matplotlib.pyplot as plt
X, y = gen_data(seed=0, n=30)
plt.scatter(X[:, 1], y)
<matplotlib.collections.PathCollection at 0x7f9c881bbe20>
beta1
bias:
- ols: -0.026
- ridge: 0.038
variance:
- ols: 0.115
- ridge: 0.110
ridgeのほうがvarianceが若干小さくbiasが大きくなっている
fig, ax = plt.subplots()
ax.hist(results["ols_error"], label="OLS", alpha=0.5, bins=20)
ax.hist(results["ridge_error"], label="Ridge", alpha=0.5, bins=20)
ax.axvline(results["ols_error"].mean(), label="Mean(OLS)", color="steelblue")
ax.axvline(results["ridge_error"].mean(), label="Mean(Ridge)", color="darkorange")
ax.legend()
ax.set(xlabel="Mean Squared Error", ylabel="Frequency")
fig.show()
参考文献#
リッジ回帰#
ラグランジュの未定乗数法#
『言語処理のための機械学習入門』pp.14-19
『これならわかる最適化数学』