多重共線性とは?
多重共線性1(マルチコ)とは,重回帰分析をするときによく出てくる問題です.説明変数の間に強い相関があったり,一次従属な変数の関係がある場合に起こるもので,回帰の結果の信頼性が低くなったり,パラメータの値が求められなくなったりします.
今回は多重共線性が説明変数間の相関が強いときに起こる,という理由を数式から考えてみようと思います.
最小二乗法の復習
まず,重回帰分析のときによく用いられる最小二乗法を定式化していきます.
$m$次元の説明変数があり,$(x_1, \cdots, x_m, y)$の組のデータが$n$個与えられたとします.このとき,パラメータを$\mathbf{w} = (w_0, \cdots, w_m)^{\text{T}}$として,
\begin{align*}
\hat{y} &= w_0 + \sum_{i=1}^m w_ix_i&\\
&= \sum_{i=0}^m w_ix_i &(x_0 \stackrel{\text{def}}{=} 1)\\
\end{align*}
というモデルを作ることで,説明変数$\mathbf{x}$と目的変数$y$の関係を表そう,というのが回帰分析の目的になります.そのためには$\mathbf{w}$の値を決める必要があるのですが,その方法として,$y$と$\hat{y}$の二乗誤差の和分が最小になるように決める,という方針で計算をするのが最小二乗法です.
計算をする$y$と$\hat{y}$の二乗誤差の和分を$\mbox{RSS}(\mathbf{w})$とすると,(RSS: residual sum of squares,残差平方和)
\begin{eqnarray*}
\mbox{RSS}(\mathbf{w}) &=& \sum_{i=1}^{n}(y_i - \mathbf{w}^\text{T}\mathbf{x}_i)^2\\
&=& (\mathbf{y} - X\mathbf{w})^\text{T}(\mathbf{y} - X\mathbf{w})\\
&=& \mathbf{y}^\text{T}\mathbf{y} - \mathbf{y}^\text{T}X\mathbf{w} - \mathbf{w}^\text{T}X^\text{T}\mathbf{y} + \mathbf{w}^\text{T}X^\text{T}X\mathbf{w}\\
(X &\stackrel{\text{def}}{=}&
\begin{pmatrix}
x_0^1 \dots x_m^1\\
\vdots\\
x_0^n \dots x_m^n
\end{pmatrix})
\end{eqnarray*}
ただし,$x_i^j$は$j$番目に得られたデータの$i$番目の説明変数と定義します.
\begin{eqnarray*}
\frac{\partial}{\partial \mathbf{w}}\mbox{RSS}(\mathbf{w}) &=& -X^\text{T}\mathbf{y} - X^\text{T}\mathbf{y} + (X^\text{T}X + (X^\text{T}X)^\text{T})\mathbf{w}\\
&=& 2X^\text{T}X\mathbf{w} - 2X^\text{T}\mathbf{y}\\
\end{eqnarray*}
$\mbox{RSS}(\mathbf{w})$は下に凸な関数なので,$\frac{\partial}{\partial \mathbf{w}}\mbox{RSS}(\mathbf{w})$を$0$にすれば最小値を得られます.よって,
X^\text{T}X\mathbf{w} = X^\text{T}\mathbf{y} \tag{1}\\
この式を解析的に解いてやれば$\mathbf{w}$は求まります.つまり,
\mathbf{w} = (X^\text{T}X)^{\text{-}1}X^\text{T}\mathbf{y} \tag{2}\\
となります.$X^\text{T}X$の逆行列が存在する場合、式$(2)$を計算すれば$\mathbf{w}$は陽に求まりますが,今回は多重共線性とパラメータ同士の相関の関係を見るため式$(2)$の形は使わず,式$(1)$の形から変形していきます.
あるベクトル$\mathbf{a}$の平均を$\bar{a}$とおくと,
\bar{x}_i\sum_{i=0}^{m}(w_i\bar{x}_i) = \bar{x}_i\bar{y} \tag{3}
であることを利用します.式$(1)$から式$(3)$を行列の形に直して$n$倍したものを引くと,
\begin{align*}
& X^\text{T}X\mathbf{w} - n\begin{pmatrix}
\bar{x}_0\sum_{i=0}^{m}(\bar{x}_iw_i)\\
\vdots\\
\bar{x}_m\sum_{i=0}^{m}(\bar{x}_iw_i)\\
\end{pmatrix}
= X^\text{T}\mathbf{y} - n\begin{pmatrix}
\bar{x}_0\bar{y}\\
\vdots\\
\bar{x}_m\bar{y}\\
\end{pmatrix}\\
&\iff X^\text{T}X\mathbf{w} - 2n \begin{pmatrix}
\bar{x}_0\sum_{i=0}^{m}(\bar{x}_iw_i)\\
\vdots\\
\bar{x}_m\sum_{i=0}^{m}(\bar{x}_iw_i)\\
\end{pmatrix} + n \begin{pmatrix}
\bar{x}_0\sum_{i=0}^{m}(\bar{x}_iw_i)\\
\vdots\\
\bar{x}_m\sum_{i=0}^{m}(\bar{x}_iw_i)\\
\end{pmatrix}
= X^\text{T}\mathbf{y} - 2n \begin{pmatrix}
\bar{x}_0\bar{y}\\
\vdots\\
\bar{x}_m\bar{y}\\
\end{pmatrix} + n\begin{pmatrix}
\bar{x}_0\bar{y}\\
\vdots\\
\bar{x}_m\bar{y}\\
\end{pmatrix}\\
&\iff \begin{pmatrix}
\sum_{i=0}^m\mathbf{x}_0^{\text{T}}\mathbf{x}_iw_i\\
\vdots\\
\sum_{i=0}^m\mathbf{x}_m^{\text{T}}\mathbf{x}_iw_i\\
\end{pmatrix} - 2n \begin{pmatrix}
\bar{x}_0\sum_{i=0}^{m}(\bar{x}_iw_i)\\
\vdots\\
\bar{x}_m\sum_{i=0}^{m}(\bar{x}_iw_i)\\
\end{pmatrix} + n\begin{pmatrix}
\bar{x}_0\sum_{i=0}^{m}(\bar{x}_iw_i)\\
\vdots\\
\bar{x}_m\sum_{i=0}^{m}(\bar{x}_iw_i)\\
\end{pmatrix}
= \begin{pmatrix}
\sum_{i=1}^nx_0^iy^i\\
\vdots\\
\sum_{i=1}^nx_m^iy^i\\
\end{pmatrix} - 2n \begin{pmatrix}
\bar{x}_0\bar{y}\\
\vdots\\
\bar{x}_m\bar{y}\\
\end{pmatrix} + n\begin{pmatrix}
\bar{x}_0\bar{y}\\
\vdots\\
\bar{x}_m\bar{y}\\
\end{pmatrix}\\
&\iff \begin{pmatrix}
\sum_{i=0}^m(\mathbf{x}_0^{\text{T}}\mathbf{x}_iw_i - 2n \bar{x}_0(\bar{x}_iw_i) + n\bar{x}_0(\bar{x}_iw_i))\\
\vdots\\
\sum_{i=0}^m(\mathbf{x}_m^{\text{T}}\mathbf{x}_iw_i - 2n \bar{x}_m(\bar{x}_iw_i) + n\bar{x}_m(\bar{x}_iw_i))\\
\end{pmatrix} = \begin{pmatrix}
\sum_{i=1}^nx_0^iy^i\\
\vdots\\
\sum_{i=1}^nx_m^iy^i\\
\end{pmatrix} - 2n \begin{pmatrix}
\bar{x}_0\bar{y}\\
\vdots\\
\bar{x}_m\bar{y}\\
\end{pmatrix} + n\begin{pmatrix}
\bar{x}_0\bar{y}\\
\vdots\\
\bar{x}_m\bar{y}\\
\end{pmatrix}\\
&\iff \begin{pmatrix}
\sum_{i=0}^m(\mathbf{x}_0 - \bar{x}_0{\mathbf{e}})^{\text{T}}(\mathbf{x}_i - \bar{x}_i{\mathbf{e}})w_0\\
\vdots\\
\sum_{i=0}^m(\mathbf{x}_m - \bar{x}_m{\mathbf{e}})^{\text{T}}(\mathbf{x}_i - \bar{x}_i{\mathbf{e}})w_m\\
\end{pmatrix} = \begin{pmatrix}
\sum_{i=1}^n(x_0^i - \bar{x}_0)(y^i - \bar{y})\\
\vdots\\
\sum_{i=1}^n(x_m^i - \bar{x}_m)(y^i - \bar{y})\\
\end{pmatrix}\\
&(\mathbf{e}: \text{all-ones vector})\\
\end{align*}
ここの式変形は,$\sum_{i=1}^n a_i = n \bar{a}$になることに気をつければ追えると思います.
\begin{align*}
&\iff \begin{pmatrix}
(\mathbf{x}_0 - \bar{x}_0{\mathbf{e}})^{\text{T}}(\mathbf{x}_0 - \bar{x}_0{\mathbf{e}}) & \cdots & (\mathbf{x}_0 - \bar{x}_0{\mathbf{e}})^{\text{T}}(\mathbf{x}_m - \bar{x}_m{\mathbf{e}})\\
\vdots & \ddots & \vdots\\
(\mathbf{x}_m - \bar{x}_m{\mathbf{e}})^{\text{T}} (\mathbf{x}_0 - \bar{x}_0{\mathbf{e}}) & \cdots & (\mathbf{x}_m - \bar{x}_m{\mathbf{e}})^{\text{T}} (\mathbf{x}_m - \bar{x}_m{\mathbf{e}})\\
\end{pmatrix} \mathbf{w} = \begin{pmatrix}
\sum_{i=1}^n(x_0^i - \bar{x}_0)(y^i - \bar{y})\\
\vdots\\
\sum_{i=1}^n(x_m^i - \bar{x}_m)(y^i - \bar{y})\\
\end{pmatrix}\\
&\iff \begin{pmatrix}
\sum_{i=0}^m(\mathbf{x}_0 - \bar{x}_0{\mathbf{e}})^{\text{T}}(\mathbf{x}_i - \bar{x}_i{\mathbf{e}})w_0\\
\vdots\\
\sum_{i=0}^m(\mathbf{x}_m - \bar{x}_m{\mathbf{e}})^{\text{T}}(\mathbf{x}_i - \bar{x}_i{\mathbf{e}})w_m\\
\end{pmatrix} = \begin{pmatrix}
\sum_{i=1}^n(x_0^i - \bar{x}_0)(y^i - \bar{y})\\
\vdots\\
\sum_{i=1}^n(x_m^i - \bar{x}_m)(y^i - \bar{y})\\
\end{pmatrix}\\
&\iff \begin{pmatrix}
(\mathbf{x}_0 - \bar{x}_0{\mathbf{e}})^{\text{T}} (\mathbf{x}_0 - \bar{x}_0{\mathbf{e}}) & \cdots & (\mathbf{x}_0 - \bar{x}_0{\mathbf{e}})^{\text{T}} (\mathbf{x}_m - \bar{x}_m{\mathbf{e}})\\
\vdots & \ddots & \vdots\\
(\mathbf{x}_m - \bar{x}_m{\mathbf{e}})^{\text{T}} (\mathbf{x}_0 - \bar{x}_0{\mathbf{e}}) & \cdots & (\mathbf{x}_m - \bar{x}_m{\mathbf{e}})^{\text{T}} (\mathbf{x}_m - \bar{x}_m{\mathbf{e}})\\
\end{pmatrix} \mathbf{w} = \begin{pmatrix}
(\mathbf{x}_0^i - \bar{x}\mathbf{e}_0)(\mathbf{y}^i - \bar{y}\mathbf{e})\\
\vdots\\
(\mathbf{x}_m^i - \bar{x}\mathbf{e}_m)(\mathbf{y}^i - \bar{y}\mathbf{e})\\
\end{pmatrix}\\
&\iff \frac{1}{n}\begin{pmatrix}
(\mathbf{x}_0 - \bar{x}_0{\mathbf{e}})^{\text{T}} (\mathbf{x}_0 - \bar{x}_0{\mathbf{e}}) & \cdots & (\mathbf{x}_0 - \bar{x}_0{\mathbf{e}})^{\text{T}} (\mathbf{x}_m - \bar{x}_m{\mathbf{e}})\\
\vdots & \ddots & \vdots\\
(\mathbf{x}_m - \bar{x}_m{\mathbf{e}})^{\text{T}} (\mathbf{x}_0 - \bar{x}_0{\mathbf{e}}) & \cdots & (\mathbf{x}_m - \bar{x}_m{\mathbf{e}})^{\text{T}} (\mathbf{x}_m - \bar{x}_m{\mathbf{e}})\\
\end{pmatrix} \mathbf{w} = \frac{1}{n}\begin{pmatrix}
(\mathbf{x}_0^i - \bar{x}\mathbf{e}_0)(\mathbf{y}^i - \bar{y}\mathbf{e})\\
\vdots\\
(\mathbf{x}_m^i - \bar{x}\mathbf{e}_m)(\mathbf{y}^i - \bar{y}\mathbf{e})\\
\end{pmatrix}\\
\end{align*}
\begin{align*}
&\iff \begin{pmatrix}
\mbox{Ver}(\mathbf{x}_0) & \cdots & \mbox{Cov}(\mathbf{x}_0, \mathbf{x}_m)\\
\vdots & \ddots & \vdots\\
\mbox{Cov}(\mathbf{x}_m, \mathbf{x}_0) & \cdots & \mbox{Ver}(\mathbf{x}_m)\\
\end{pmatrix} \mathbf{w} = \begin{pmatrix}
\mbox{Cov}(\mathbf{x}_0, \mathbf{y})\\
\vdots\\
\mbox{Cov}(\mathbf{x}_m, \mathbf{y})
\end{pmatrix}\\
&\iff \Sigma \mathbf{w} = \begin{pmatrix}
\mbox{Cov}(\mathbf{x}_0, \mathbf{y})\\
\vdots\\
\mbox{Cov}(\mathbf{x}_m, \mathbf{y})
\end{pmatrix} \tag{4}\\
\end{align*}
($\Sigma$: 分散・共分散行列)
ここで$\Sigma$の逆行列が存在すると仮定すると,
\mathbf{w} = \Sigma^{\text{-}1} \begin{pmatrix}
\text{Cov}(\mathbf{x}_0, \mathbf{y})\\
\vdots\\
\text{Cov}(\mathbf{x}_m, \mathbf{y})\\
\end{pmatrix}
となるので,パラメータ$\mathbf{w}$を分散・共分散行列の逆行列を使って表すことができました.
パラメータ間で相関が強いときにマルチコの問題が起こる理由を数式でみる
さて,次にパラメータ間で相関が強いとき分散・共分散行列の行列式が$0$に近くなることを示して,マルチコの問題が起こる理由を見てみます.
パラメータ間で相関が強いということは,一次従属の関係がほぼ成り立つということなので2,以下の式を満たす$\mathbf{a}$が存在します.
a_0x_0 + \cdots + a_mx_m \approx 0 \ \ \ \ (\mathbf{a} \in \mathcal{R}^n, \mathbf{a} \neq \mathbf{0})\tag{5}
ここで,期待値の線形性により,
a_0\bar{x}_0 + \cdots + a_m\bar{x}_m \approx 0 \tag{6}
$(5)$, $(6)$より,
\begin{align*}
&a_0(x_0 - \bar{x}_0) + \cdots + a_m(x_m - \bar{x}_m) \approx 0\\
&\iff \sum_{i=0}^m a_i(x_i - \bar{x}_i) \approx 0\\
&\Rightarrow \left( \sum_{i=0}^m a_i(x_i - \bar{x}_i)\right)^2 \approx 0\\
&\Rightarrow \left( \sum_{i=0}^m a_i(x_i - \bar{x}_i)\right)\left( \sum_{i=0}^m (x_i - \bar{x}_i)a_i \right) \approx 0\\
&\Rightarrow \mathbf{a}^{\text{T}}(\mathbf{x} - \bar{x}\mathbf{e})(\mathbf{x} - \bar{x}\mathbf{e})^{\text{T}}\mathbf{a} \approx 0\\
&\Rightarrow \frac{1}{n}\mathbf{a}^{\text{T}}(\mathbf{x} - \bar{x}\mathbf{e})(\mathbf{x} - \bar{x}\mathbf{e})^{\text{T}}\mathbf{a} \approx 0\\
&\Rightarrow \mathbf{a}^{\text{T}}\Sigma\mathbf{a} \approx 0\\
\end{align*}
$\mathbf{a}^{\text{T}}\Sigma\mathbf{a}$の値は$\Sigma$の固有値の一つであるので3,
\begin{align*}
\det{\Sigma} &= \Pi_{i=0}^m\lambda_i\\
&\approx 0\\
\end{align*}
($\Sigma$の固有値を$\lambda$としている)
逆行列の性質から,
\Sigma^{\text{-}1} = \frac{1}{\det{\Sigma}}\tilde{\Sigma}
($\tilde{\Sigma}$: $\Sigma$の余因子行列)
であるので,$\det{\Sigma}$の値が$0$に近いと逆行列の成分が非常に大きくなります.そのため,
\mathbf{w} = \Sigma^{\text{-}1} \begin{pmatrix}
\text{Cov}(\mathbf{x}_0, \mathbf{y})\\
\vdots\\
\text{Cov}(\mathbf{x}_m, \mathbf{y})\\
\end{pmatrix}
の値は得られたサンプルのノイズにも強く影響を受けるようになってしまい,不安定になる,というのがマルチコの問題を数式から見た仕組みになります.
回避方法 (メモだけ)
- 相関の高そうな説明変数を減らす
→残った説明変数が削除した説明変数の代表のような役割を持つので注意
RidgeやLassoなどを使う (機械学習ではメジャー)
VIF使って計算
参考: http://takehiko-i-hayashi.hatenablog.com/entry/20110901/1314846708
↑上のリンクで説明している「マルチコもどき」にはVIFは対応できないようです.
参考サイト・文献
Kevin P. Murphy, Machine Learning: A Probabilistic Perspective, The MIT Press; 1 edition, p.220 (7.16)
※ 2019/08/24 「最小二乗法の復習」内の文中の誤りを修正、及び文言を変更