多重共線性の問題が説明変数間の相関が強いときに起こる理由を数式から見てみる

## 多重共線性とは？

多重共線性[^1](マルチコ)とは，重回帰分析をするときによく出てくる問題です．説明変数の間に強い相関があったり，一次従属な変数の関係がある場合に起こるもので，回帰の結果の信頼性が低くなったり，パラメータの値が求められなくなったりします．

今回は多重共線性が説明変数間の相関が強いときに起こる，という理由を数式から考えてみようと思います．

## 最小二乗法の復習

まず，重回帰分析のときによく用いられる最小二乗法を定式化していきます．

$m$次元の説明変数があり，$(x_1, \cdots, x_m, y)$の組のデータが$n$個与えられたとします．このとき，パラメータを$\mathbf{w} = (w_0, \cdots, w_m)^{\text{T}}$として，

```math
\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，残差平方和)

```math
\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$番目の説明変数と定義します．

```math
\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$にすれば最小値を得られます．よって，

```math
X^\text{T}X\mathbf{w} = X^\text{T}\mathbf{y} \tag{1}\\
```

この式を解析的に解いてやれば$\mathbf{w}$は求まります．つまり，

```math
\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}$とおくと，

```math
\bar{x}_i\sum_{i=0}^{m}(w_i\bar{x}_i) = \bar{x}_i\bar{y} \tag{3}
```

であることを利用します．式$(1)$から式$(3)$を行列の形に直して$n$倍したものを引くと，

```math
\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}$になることに気をつければ追えると思います．

```math
\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*}
```

```math
\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$の逆行列が存在すると仮定すると，

```math
\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}$が存在します．

```math
a_0x_0 + \cdots + a_mx_m \approx 0 \ \ \ \ (\mathbf{a} \in \mathcal{R}^n, \mathbf{a} \neq \mathbf{0})\tag{5}
```

ここで，期待値の線形性により，

```math
a_0\bar{x}_0 + \cdots + a_m\bar{x}_m \approx 0 \tag{6}
```

$(5)$, $(6)$より，

```math
\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]，

```math
\begin{align*}
\det{\Sigma} &= \Pi_{i=0}^m\lambda_i\\
&\approx 0\\
\end{align*}
```

($\Sigma$の固有値を$\lambda$としている)

逆行列の性質から，

```math
\Sigma^{\text{-}1} = \frac{1}{\det{\Sigma}}\tilde{\Sigma}
```

($\tilde{\Sigma}$: $\Sigma$の余因子行列)

であるので，$\det{\Sigma}$の値が$0$に近いと逆行列の成分が非常に大きくなります．そのため，

```math
\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は対応できないようです．



## 参考サイト・文献

- [重回帰分析における係数の意味と求め方 - 具体例で学ぶ数学](https://mathwords.net/kaikikeisu)

- Kevin P. Murphy, Machine Learning: A Probabilistic Perspective, The MIT Press; 1 edition, p.220 (7.16)

- [相関行列の定義と分散共分散行列との関係 | 高校数学の美しい物語](https://mathtrain.jp/correlationmatrix)

- [多重共線性](https://qiita.com/xuyun19840618/items/b95ae1398a2d020f91bd)

- [多重共線性の意味を数式を使ってきちんと説明する - 具体例で学ぶ数学](https://mathwords.net/tajukyosensei)


※ 2019/08/24 「最小二乗法の復習」内の文中の誤りを修正、及び文言を変更


[^1]: 多重線形性ではないので注意 (間違いやすい気がする)
[^2]: 自信ないです
[^3]: なんでなのかあまりわかっていません