教師あり学習の基礎その2ー重回帰ー（備忘録）

# 重回帰分析の理論
**（数学的な議論が永遠と続くだけなので読まない方が幸せかも笑）**

一般的な（線形）回帰モデルを考えよう。
重回帰とは、説明変数（入力変数）が複数ある場合のことをいう。

```math
\begin{array}{c}
y_1 = \beta_1x_{11} + \cdots + \beta_d x_{1d} + \varepsilon_1\\
y_2 = \beta_1x_{21} + \cdots + \beta_d x_{2d} + \varepsilon_2\\
\cdots\\
y_n = \beta_1x_{n1} + \cdots + \beta_d x_{nd} + \varepsilon_n\\
\end{array}
```
ここで、目的変数は行列表示で

$$
X=(x_1, x_2, \cdots , x_n)^T
$$

とし（注：それぞれの成分はベクトルです）、目的変数（ターゲット）を

$$
y=(y_1, y_2, \cdots , y_n)^T
$$

とする（注：それぞれの成分はスカラーです）。ここで、ベクトルはいちいち太字で書かないことにする（面倒臭いだけです、すみません）。
また、重みは

```math
\beta = (\beta_1 , \beta_2 , \cdots , \beta_d)^T
```

バイアスは

$$
\varepsilon = (\varepsilon_1, \varepsilon_2, \cdots , \varepsilon_n)^T
$$

である。
このとき、

$$
y_i = \beta^T x_i
$$

であるから、上の式は簡単に

```math
y = X\beta + \varepsilon
```

と表示できる。本によっては、文字が少し違うこともありますが、統計の本だとこの記法がほぼ一般的のようです。

損失関数を残差平方和としよう。

```math
L(\beta )=||\varepsilon ||_2^2 = ||y-X\beta ||_2^2
```

ここで、$||\cdot ||\_2 $ はユークリッドノルム（$l\_2$ノルム）を表す。
この損失関数を最小化したい。転置の性質を使えば

```math
\begin{eqnarray}
L(\beta)&=&(y-X\beta)^T(y-X\beta)\\
&=&(y^T-\beta^TX^T)(y-X\beta)\\
&=&y^Ty -y^TX\beta -\beta^TX^Ty + \beta^TX^TX\beta
\end{eqnarray}
```

最小値を求めるために、$\beta$に関して偏微分か平方完成を用いる。
今回は偏微分で求めてみよう。

まず、ベクトルに関する偏微分について復習する。

$$
\frac{\partial}{\partial \beta}(\beta^Tx_i) = \frac{\partial}{\partial\beta}(x_i^T\beta) = x_i
$$

が成り立つ（注：$\beta, x_i$はベクトルです）。実際、

$$
\frac{\partial}{\partial\beta_j}(\beta_1x_{i1}+\beta_2x_{i2}+\cdots \beta_dx_{id}+\varepsilon_i)=x_{ij}
$$

であるからである。よって、

```math
\begin{eqnarray}
\frac{\partial L(\beta)}{\partial\beta}&=&-2X^Ty+2X^TX\beta
\end{eqnarray}
```

であるから、

```math
\begin{eqnarray}
&&\frac{\partial L(\beta)}{\partial\beta}=0\\
&\Leftrightarrow&\beta = (X^TX)^{-1}X^Ty
\end{eqnarray}
```

この最小値を与える$\beta$を$\widehat{\beta}$とかくと

```math
\begin{eqnarray}
L(\widehat{\beta})&=&y^Ty-2y^TX\widehat{\beta}+\widehat{\beta}^TX^TX\widehat{\beta}\\
&=& y^Ty-2y^TX(X^TX)^{-1}X^Ty+((X^TX)^{-1}X^Ty)^TX^TX(X^TX)^{-1}X^Ty\\
&=&y^Ty-2y^TX(X^TX)^{-1}X^Ty+y^TX((X^TX)^{-1})^{T}X^Ty\\
&=& y^T (I-X(X^TX)^{-1}X^T) y\\
\end{eqnarray}
```

と求められます。ここで、$X^TX$（これは対称行列であることに注意する）は逆行列を持つ、すなわち$\mathrm{rank}X=d$と仮定しています。
$X^TX$が正則でない例としては、

- $n<d$、すなわち説明変数の数が多い場合
- 冗長な説明変数がある場合

です。対処法としては、サンプル数を増やす（目的変数を増やす）や、説明変数の数を減らす、（L1またはL2）正則化する、一般化逆行列を用いる、という考え方がある。暇があればこれらも解説したい。

ちなみに、$P=X(X^TX)^{-1}X^T$とおき、予測値を

$$
\widehat{y}=X\widehat{\beta}
$$

とおくと、

$$
y-\widehat{y} = (I-P)y
$$

と書け、$P,\ I-P$は射影行列となっている。実際、

$$
P^2=X(X^TX)^{-1}X^TX(X^TX)^{-1}X^T=X(X^TX)^{-1}X^T=P
$$

より、

$$
(I-P)^2=I-2P+P=I-P
$$

であるからである。

残差$e$を

$$
e=y-\widehat{y}
$$

とおくと、損失関数の$\beta$に関する偏微分が0という条件、すなわち$X^Ty=X^TX\beta$（正規方程式という）より

$$
X^Te = 0
$$

であるから、説明変数は残差と直交する。特に

```math
||y||_2^2=||e||_2^2+||\widehat{y}||_2^2
```

が成り立つ。

<img width="956" alt="スクリーンショット 2020-04-19 18.26.24.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/606074/5a4ac2aa-a086-0640-270c-1481a9940bdc.png">


### [発展]統計的性質

$\varepsilon\sim N(0,\sigma^2I)$とし、それぞれ独立であるとする。

```math
\begin{eqnarray}
E[\widehat{\beta}]=E[(X^TX)^{-1}X^Ty]&=&(X^TX)^{-1}X^TE[y]\\
&=&(X^TX)^{-1}X^T(X\beta)\\
&=&(X^TX)^{-1}(X^TX)\beta\\
&=& \beta
\end{eqnarray}
```

より、$\widehat{\beta}$は$\beta$の不変推定量である。また、分散（分散共分散行列）は

$$
\widehat{\beta}-E[\widehat{\beta}] = (X^TX)^{-1}X^Ty-\beta=(X^TX)^{-1}X^T(X\beta+\varepsilon)-\beta=(X^TX)^{-1}X^T\varepsilon
$$

より

```math
\begin{eqnarray}
V[\widehat{\beta}]&=&E[(\widehat{\beta}-E[\widehat{\beta}])(\widehat{\beta}-E[\widehat{\beta}])^T]\\
&=&E[(X^TX)^{-1}X^T\varepsilon ((X^TX)^{-1}X^T\varepsilon)^T]\\
&=&(X^TX)^{-1}X^T  E[\varepsilon\varepsilon^T]X(X^TX)^{-1}\\
&=&(X^TX)^{-1}X^T(\sigma^2I)X(X^TX)^{-1}\\
&=&\sigma^2(X^TX)^{-1}
\end{eqnarray}
```

と求められる。

これ以上続けると、難解になるのでやめておこう。。

## 参考文献
- 梅津佑太、西井龍映、上田勇祐『スパース回帰分析とパターン認識』講談社、2020年
- 加藤公一『機械学習のエッセンス』SB Creative、2019年
- 知識のサラダボウル https://omedstu.jimdofree.com/2018/04/21/重回帰分析①/