logo

リッジ回帰とは? 📂統計的分析

リッジ回帰とは?

定義

$$ \begin{bmatrix} y_{1} \\ y_{2} \\ \vdots \\ y_{n} \end{bmatrix} = \begin{bmatrix} 1 & x_{11} & \cdots & x_{p1} \\ 1 & x_{12} & \cdots & x_{p2} \\ \vdots & \vdots & \ddots & \vdots \\ 1 & x_{1n} & \cdots & x_{pn} \end{bmatrix} \begin{bmatrix} \beta_{0} \\ \beta_{1} \\ \vdots \\ \beta_{p} \end{bmatrix} + \begin{bmatrix} \varepsilon_{1} \\ \varepsilon_{2} \\ \vdots \\ \varepsilon_{n} \end{bmatrix} $$ $n$ 個のデータが与えられ、$p < n$ とするとき、線形多重回帰モデル計画行列で表すと上記のようになり、簡単に $Y = X \beta + \varepsilon$ と表す。このとき、次の最適化問題を解くことをリッジ回帰ridge Regressionという。 $$ \argmin_{\beta} \left( \left\| Y - X \beta \right\|_{2}^{2} + \lambda \left\| \beta \right\|_{2}^{2} \right) $$ ここで、$\lambda \ge 0$ をチューニングパラメーターtuning Parameterという。


説明

リッジ回帰は稜線回帰とも呼ばれることがあるが、基本的には英単語がそれほど長くないため、そのまま読むことが多い。読むときの音価は[릳지]ではなくリッジ[rɪdʒ]で、Edgeを[엗지]ではなくエッジ[edʒ]と読むのと似ている。Ridgeは山脈という意味で、稜線というのは「山脈から山脈へと続く線」を意味する稜線から来ている言葉である。これは、幾何学的に見たとき、通常の多重回帰分析で$\beta$の目的関数であるRSSが作る超曲面hyper Surfaceで$\lambda \left\| \beta \right\|_{2}$のために稜線が生じるためである。

一方で機械学習では、$\lambda \left\| \beta \right\|_{2}$を加える形式の正則化regularizationティホノフ正則化tikhonovともいう。1 この項をRSSと共に最小化することは、単に回帰分析を行うだけでなく、$\beta$の大きさ、つまり回帰係数の大きさも可能な限り小さくしようとすることであり、回帰係数の大きさが減少するということは、$0$に近い回帰係数が多くなるということである。

実際の歴史がどうであれ、結果の解釈が何であれ、本質的な欠陥があるかどうかにかかわらず、リッジ回帰をスパース回帰の一種と見なすことは否定しにくい。

なぜ使うのか?

スパース回帰のドキュメントを先に読んでおくとよい:

  • 統計学の観点から: 解釈が簡単なモデルを見つけるためである。基本的に回帰係数の大きさは、データのスケールに比べて十分に大きくなければ統計的に有意ではないとされる。つまり、$0$ではなくてもほぼ$0$であれば、データを説明するために必要なものではないかもしれないということである。このような解釈はリッジ回帰では完全に同じではないかもしれないが、結局のところ、目指しているのは「小さい回帰係数」を見つけて処理することである。
  • 機械学習の観点から: オーバーフィッティングoverfittingを防ぐためである。与えられたデータをうまく説明するために非常に複雑な項を追加するなどして、本当に特殊なケースまでカバーするモデルを作ることができるかもしれないが、このように細かく合わせてしまうと、トレーニングデータでは優れていても実際のテストではひどい結果になることがある。そう多くの変数に対して細かく回帰係数を見つけることは、オーバーフィッティングのリスクを増大させるため、データを説明する力を低下させるペナルティを負ってでも防ごうとするものである。

これは観点の違いに過ぎず、よく読むと同じことを言っている。

チューニングパラメーター $\lambda$

定義で紹介されたチューニングパラメーター $\lambda$ は、大きければ大きいほどペナルティpenalty $\left\| \lambda \right\|$ が強くなるが、これが小さすぎるとただの回帰分析と変わらなくなり、大きすぎるとデータを説明するかどうかにかかわらず、単に $\beta = \mathbf{0}$ が最良の選択になってしまう。極端な直感的な例として、データから得られる値のスケールが0~10程度であっても、ペナルティに過度に大きな重み $\lambda = 10^{6}$ を与えると、$\left\| \beta \right\|$ を小さくすることに気を取られて、本来の仕事―データをうまく説明するモデルを作ることを全くできなくなってしまう。要点は適切な $\lambda$ を選択する必要があるということで、数式だけを見たときに $\lambda$ が大きいか小さいか自体には特に良し悪しがない。

したがって、与えられたデータに対する特別な直感や基準がない場合は、単に $\lambda$ を変えながら目的関数が最小になるものを選ぶのも一つの方法である。上の図は、ある分析で $\lambda$ を変えながらクロスバリデーションを行った後のエラーを $\lambda$ に対する関数値として見たグラフを描いたものである。2 このグラフは $5 \times 10^{-1}$ 付近で最小値を持つことを縦の点線で示しており、特に理由がなければ $\lambda$ はその値を使用するのが妥当である。

ラッソ回帰との違い

歴史的にリッジridgeは1970年にバイアス-バリアンストレードオフの関係で偏りをある程度犠牲にしてもわずかな偏りが生じることでパラメーター推定に関する効率性を向上させる方法として紹介された3。ラッソlASSOは1986年に地球物理学geophysicsで初めて登場し、1996年に再び紹介されてラッソという名前が付けられたと言われている。4

  • リッジ回帰の目的関数: $$\argmin_{\beta} \left( \left\| Y - X \beta \right\|_{2}^{2} + \lambda \left\| \beta \right\|_{2}^{2} \right)$$
  • ラッソ回帰の目的関数: $$\argmin_{\beta} \left( \left\| Y - X \beta \right\|_{2}^{2} + \lambda \left\| \beta \right\|_{1} \right)$$

リッジ回帰ラッソ回帰目的関数は非常に似ており、多くの場合一緒にされるが、実際には目的関数の形式的な見た目だけが似ているに過ぎず、それぞれの長所と短所を議論すること自体が単純な視点である可能性がある。一般的にリッジとラッソの違いは、ペナルティ項が$l_{1}$か$l_{2}$か、微分可能で最適解がクローズドフォームclosed formで簡単に表されるかどうか、実際に係数を$0$まで減らすことができるかどうかなどで説明されることが多い。さらに詳しくなると、Pythonの例示コードが含まれ、経験的には通常どちらが優れているか、ある場合には他の方がより良い可能性があるという言及が追加される。

…しかし、そのような説明は各種の書籍、ウィキペディア、ブログなどにたくさんある。これらよく知られていることをきちんと整理した記事は、Googleで’Ridge vs LASSO’と検索すれば簡単に見つけることができるため、この投稿ではそれらよりも少し、非常にわずかに深く掘り下げてみる。


  • 以下の内容はリッジ回帰の観点からラッソとどのように異なるかを説明する。ラッソの観点からリッジ回帰をどのように見るかは該当する投稿で確認しよう。

与えられたデータを見て「どちらがより良いパフォーマンスを発揮するか」を比較すると、通常リッジよりもラッソの方が元の意図に近く、つまり実際に$\beta_{k}$を$0$にするように動作することは事実である。しかし、ここで終わることは、これらの関係を「最適解を直接求めやすいリッジ回帰から、いくつかの欠点を克服してラッソ回帰へと発展した」と見る視点が強いことを意味する。このような単純な比較の問題点は、大きな文脈で見たときにその事実がそれほど重要ではないということである。その比較が完全に間違っているわけではないが、特に大きな意味もない。

リッジ回帰は目的関数が微分可能であり、特別な追加条件なしに最適解$\hat{\beta}$が具体的なクローズドフォーム $$ \hat{\beta} = \left( X^{T} X + \lambda I \right)^{-1} X^{T} Y $$ で与えられている。ここから、基本的に多重回帰分析の$\hat{\beta} = \left( X^{T} X \right)^{-1} X^{T} Y$とほぼ同じ複雑さを持っていることがわかり、この極端なシンプルさはリッジ回帰の長所そのものである。別の言い方をすれば、最小二乗法を基礎とするほぼすべての応用で即座に採用できるほど柔軟であり、新しい方法の研究や開発においてラッソよりもはるかに高い優先順位を持つことを意味する。正確に $$ \argmin_{\beta} \left( \left\| Y - X \beta \right\|_{2}^{2} + \lambda \left\| \beta \right\|_{?} \right) $$ のような問題でリッジとラッソの長所と短所を検討する価値があるかもしれないが、それぞれを基にしてより複雑で困難な方法に進んだ場合、リッジ回帰の拡張性があまりにも圧倒的であるため、ラッソ回帰との比較自体が成り立たない。新しい知識を生み出す必要がある「研究」の観点から見れば、根本から異なるものである。

これで、この良い$\hat{\beta}$がどのように導かれるかを具体的に見てみよう。

最適解 5

$$ L \left( \beta \right) = \left\| Y - X \beta \right\|_{2}^{2} + \lambda \left\| \beta \right\|_{2}^{2} $$ $\lambda$が定数として与えられたとき、リッジ回帰の目的関数$L$を上記のように表す。リッジ回帰の最適解$\hat{\beta} = \argmin_{\beta} L \left( \beta \right)$は次の通りである。 $$ \hat{\beta} = \left( X^{T} X + \lambda I \right)^{-1} X^{T} Y $$ ここで、$A^{T}$は$A$の転置行列、$I$は単位行列、$A^{-1}$は$A$の逆行列である。

導出

ベクトルと行列のグラディエント: $$ \frac{ \partial }{ \partial \mathbf{w} }\left( \mathbf{w}^{T}\mathbf{R}\mathbf{w} \right)= \left( \mathbf{R} + \mathbf{R}^{T} \right) \mathbf{w} $$

残差二乗和のグラディエント: $$ f \left( \mathbf{s} \right) := \left( \mathbf{y} - X \mathbf{s} \right)^{T} R \left( \mathbf{y} - X \mathbf{s} \right) $$ $\mathbf{s}$に依存しないベクトル$\mathbf{y} \in \mathbb{R}^{n}$と行列$X \in \mathbb{R}^{n \times p}$、$R \in \mathbb{R}^{n \times n}$に対して次が成立する。 $$ {{ \partial f \left( \mathbf{s} \right) } \over { \partial \mathbf{s} }} = - X^{T} \left( R + R^{T} \right) \left( \mathbf{y} - X \mathbf{s} \right) $$

$R = I$の場合に上記の公式を適用すると $$ \begin{align*} {{ \partial } \over { \partial \beta }} L \left( \beta \right) =& {{ \partial } \over { \partial \beta }} \left\| Y - X \beta \right\|_{2}^{2} + {{ \partial } \over { \partial \beta }} \lambda \left\| \beta \right\|_{2}^{2} \\ =& {{ \partial } \over { \partial \beta }} \left( Y - X \beta \right)^{T} \left( Y - X \beta \right) + \lambda {{ \partial } \over { \partial \beta }} \beta^{T} \beta \\ =& - X^{T} \left( I + I^{T} \right) \left( Y - X \beta \right) + \lambda \left( I + I^{T} \right) \beta \\ =& - 2 X^{T} \left( Y - X \beta \right) + 2 \lambda \beta \\ =& - 2 X^{T} Y + 2 X^{T} X \beta + 2 \lambda \beta \end{align*} $$ となり、$\beta = \hat{\beta}$は${{ \partial } \over { \partial \beta }} L = 0$を満たさなければならないので、整理すると次を得る。 $$ \begin{align*} & X^{T} X \hat{\beta} + \lambda \hat{\beta} = X^{T} Y \\ \implies & \left( X^{T} X + \lambda I \right) \hat{\beta} = X^{T} Y \\ \implies & \hat{\beta} = \left( X^{T} X + \lambda I \right)^{-1} X^{T} Y \end{align*} $$

関連項目