データサイエンティスト(仮)

元素粒子論博士。今はデータサイエンティスト(仮)。

多重共線性があるときにL2正則化項を加えると解けるようになることのざっくりとした説明

動機

回帰モデル構築の際、特徴量とデータの関係によってはうまく機能しない(解けない)ことがあります。たとえば、考えているデータ数に対して特徴量の数が非常に多い場合や、特徴量間に強い相関(多重共線性)がある場合です。このような場合に、正則化項と呼ばれる項を通常の回帰モデル構築の際に用いられる2乗誤差などの目的関数に加えることで、先程の問題を解消することができます。こういった正則化項を加えた上でモデルの最適化をおこなう( = パラメータを推定する)方法を、正則化法といいます。

上記の解けない場合が正則化によってどうして解けるようになるのか、数式で説明している資料があまりないと思ったので、メモとして残しておこうと思います。厳密でない部分もありますが、線形代数をそれなりに知っていればわかった気にはなれるかな、という感じの説明です。

記法と準備

データ数をn, 説明変数の数をp, 計画行列をX, 正則化パラメータを\lambdaとします。
今回は、以下のような線形回帰モデルを仮定します。
$$ \vec{y} = X\vec{\beta} + \vec{\epsilon} \tag{1} $$
ここで、y,\ \vec{\beta},\ \vec{\epsilon}はそれぞれ目的変数、回帰係数(推定するパラメータ)、残差を表しています。
y,\ \vec{\epsilon}n次元ベクトル、\vec{\beta}p+1次元ベクトル(切片項も含む)、Xn \times (p+1)行列となります。

回帰モデル構築の問題は、回帰係数\vec{\beta}を求める最適化問題へと帰着されます。最適化のためのよく用いられる目的関数は、以下のような2乗誤差関数です。
$$
S( \vec{\beta} ) = ( \vec{y} - X \vec{\beta} )^T ( \vec{y} - X \vec{\beta} ) \tag{2}
$$
この2乗誤差関数を最小にするようなパラメータ\vec{\hat{\beta}}は、実測とモデル式の誤差の2乗和を最小にするという意味で、最適なパラメータだと考えます。このパラメータは、目的関数をパラメータで微分したものを0とおいた方程式の解を求めればよく、以下のようになることがわかります。
$$
\vec{\hat{\beta}} = ( X^TX )^{-1} X^T \vec{y} \tag{3}
$$
式(3)の右辺は観測された量だけで構成されているため、それらを代入すれば回帰係数を求めることができます。

式(3)が解けない場合の一つに、(X^TX)逆行列が求められない場合があります。例えば、多重共線性がある場合、(X^TX)のなかにほとんど同じ値を持つような列が複数出現することになります。全く同じ値をもった列があると行列式が0になることが知られており、行列式の割り算を含む逆行列は発散してしまいます。つまり、逆行列が求められない状況になります。このような行列を特異(正則行列ではない)であるといいます。

以下では、(X^TX)が特異である場合に正則化項、特にL_2ノルムを加えると式(3) (を拡張したもの) が解けるようになること、つまり推定量が存在することを説明します。L_2ノルムを考える理由は、手計算ができるからです*1

簡単な説明

L_2 ノルムを加えた場合の目的関数は、以下のようになります。
(本によってファクターが微妙に違いますが、結果に影響はないので一番すっきりしたものにします。)
$$
S( \vec{\beta} ) = ( \vec{y} - X \vec{\beta} )^T ( \vec{y} - X \vec{\beta} ) + \lambda \vec{\beta}^T \vec{\beta} \tag{4}
$$
式(2)から式(3)への変形と同様に、式(4)の目的関数を最小とするパラメータ\vec{\hat{\beta}_{\text{Ridge}}}を求めると、以下のようになります。
$$
\vec{\hat{\beta} }_{\text{Ridge}} = ( X^TX + \lambda \vec{1} ) ^{-1} X^T \vec{y} \tag{5}
$$
ここで、  \vec{1}単位行列です。逆行列 ( X^TX + \lambda \vec{1} ) ^{-1}が存在することを示すことが目標です。

まず、X^TXp \times pの実対称行列である*2ため、直交行列*3によって対角化することができます。対角化された行列を \Gamma = \text{diag}(\gamma _1, · · · , \gamma _p) ( \gamma _i \Gamma固有値) とすると、X^TX逆行列
$$
(X^T X)^{−1} = (PΓP^T )^{−1} = PΓ^{−1}PT
= P\text{diag} (1/\gamma _1, · · · , 1/\gamma _p)P^T \tag{6}
$$
となります。

ここで、行列が特異な場合にはいくつかの iでゼロ固有値が出現しますが、その際は対応する \gamma _iをいったん0でない値にしておき、あとで0の極限をとる、といった操作をするものと理解してください。式(6)から、特異な場合はあるiに関して \gamma _i \rightarrow 0となり、X^TX逆行列が発散してしまうため、最小二乗推定量が求まらなくなります。

次に、上記の直行行列Pを用いて逆行列 ( X^TX + \lambda \vec{1} ) ^{-1}を変形してみましょう。  \vec{1}単位行列であることから
$$
(X^TX + \lambda \vec{1})^{−1} = (P \Gamma P^T + \lambda \vec{1})^{−1}
= \{P(\Gamma + \lambda \vec{1})P^T \}^{−1}
= P(\Gamma + \lambda \vec{1})^{-1}P^T
$$
と変形できます。 \Gamma  + \lambda \vec{1}の対角成分は \gamma _i +  \lambda \ (i = 1, \cdots , p)であるため、逆行列
$$
(X^TX + \lambda \vec{1})^{−1} = P\text{diag}(1/(\gamma _1 + \lambda), · · · , 1/(\gamma _p + \lambda))P^T
$$
となります。これより、\lambdaが0でなければ \gamma _i \rightarrow 0の極限でも1/(\gamma _i +  \lambda)は無限大になりません。
よって、逆行列 ( X^TX + \lambda \vec{1}) ^{-1}が存在するため、  X^TX + \lambda \vec{1}は正則になり、推定量が求まります。

まとめ

今回は、正則化で起きていることを線形代数の知識を使って説明しました。細かい議論は抜け漏れあるかもしれませんが、こういった知識を知っているとデータ分析の内容をより理解するのに役に立つ、ということを感じていただけたら幸いです。

*1:大事

*2:実対称行列は、行列の要素が実数で、転置をとったものが自分自身になる行列のことです。確かに、(X^TX)^T = X^TXとなっています。

*3:P^T = P^{−1}となる行列のことです。