【JDLA E資格】線形回帰

#はじめに
JDLA E資格試験で出題される線形回帰について解説した記事です。
E資格試験の機械学習パートでは、__モデルの定義や学習などが出題されます__。
また、線形回帰は機械学習全般における基礎ですので、本稿の内容を理解しておくのは必須です。


なお、他パートの具体的な解説については、下記をご覧ください。
[E資格試験に関する私の投稿記事リスト][link-1]
[link-1]:https://qiita.com/fridericusgauss/items/5a97f2645cdcefe15ce0

###目次
1. [機械学習の分類](#機械学習の分類)
2. [線形単回帰](#線形単回帰)
3. [線形重回帰](#線形重回帰)
4. [おわりに](#おわりに)

#機械学習の分類
###モデルの分類
E資格試験で登場する機械学習モデル・アルゴリズムは下記表のように分類されます。

| モデル | 学習タイプ | タスク |
|:-----:|:------:|:------:|
| 線形回帰 | 教師あり  | 回帰  |
| ロジスティック回帰 | 教師あり  | 分類  |
| SVM | 教師あり  | 分類  |
| k-近傍法 | 教師あり  | 分類  |
| k-means | 教師なし  | クラスタリング  |
| k-means++ | 教師なし  | クラスタリング  |
| 主成分分析 | 教師なし  | 次元削減  |
| 動的計画法 | 強化学習  | ー  |
| モンテカルロ法 | 強化学習  | ー  |
| Q-Learning | 強化学習  | ー  |
| SARSA | 強化学習  | ー  |


###線形回帰
線形回帰は、教師あり学習で回帰タスクのための(説明変数を用いて実数値の目的変数を表現する)線形の数理モデルです。
説明変数と目的変数の組のデータを学習させ、目的変数を予測するモデルを構築できます。
__線形単回帰モデル__は、説明変数が1つの線形回帰モデルで、__線形重回帰モデル__は、説明変数が2つ以上の線形回帰モデルです。


#線形単回帰
###線形単回帰のモデル
目的変数$y$、説明変数$x$としたとき、線形単回帰モデルは式(1)で表されます。

```math
y=wx+w_{0}
\tag{1}
```

$w,w_{0}$はモデルパラメータ（回帰係数、バイアス）で、データを学習することで決定します。
学習によってモデルパラメータが決まれば、そのモデルに説明変数にデータを入力することで、目的変数の値を出力することができます。
このとき、学習済データの説明変数$x$を入力して、目的変数$y$の値を出力することを__推定__、未学習データの説明変数$x$を入力して、目的変数$y$の値を出力することを__予測__と呼びます。


###線形単回帰の学習
線形回帰モデル（式(1)）による目的変数の出力を$\hat{y}$、学習データを$D=\\{(x_{1},y_{1}),\cdots,(x_{N},y_{N})\\}$と表します。
学習では、学習データ$D$を与え、最小二乗法によって誤差関数を最小化する問題を解くことで、モデルパラメータを求めます。

学習データの説明変数$x_n$を入力したときにモデル（式(1)）から計算される目的変数の値$\hat{y_{n}}$を、学習データの目的変数$y_{n}$に近づけることができれば、「モデルが学習した」と言えるので、その差の2乗和を誤差とみなし、誤差を最小化するようなモデルパラメータを求めます。

2乗和誤差関数$L(w;D)$は式(2)で表されます。

```math
L(w;D)=\frac{1}{2}\sum_{n=1}^N(y_n-\hat{y_{n}})^2
\tag{2}
```

線形単回帰の場合、式(2)の誤差関数は式(3)に変形できます。

```math
L(w,w_0;D)=\frac{1}{2}\sum_{n=1}^N(y_n-(wx_n+w_{0}))^2
\tag{3}
```

$L(w,w_0;D)$が最小となるような、モデルパラメータは式(4)で表されます。__なお、式(4)はE資格試験では出題されません。__

```math
\begin{align}
w=&\frac{s_{xy}}{s_{x}}\\
w_0=&\mu_{y}-\frac{s_{xy}}{s_{x}}\mu_{x}
\end{align}
\tag{4}
```

ただし、式(4)中の$\mu_{y}$は$y$の平均、$\mu_{x}$は$x$の平均、$s_{x}$は$x$の分散、$s_{xy}$は$x$と$y$の共分散です。

```math
\begin{align}
\mu_{y}=&\mathbb{E}[y]=\frac{1}{N}\sum_{n=1}^N y_n\\
\mu_{x}=&\mathbb{E}[x]=\frac{1}{N}\sum_{n=1}^N x_n\\
s_{x}=&\mathbb{V}[x]=\frac{1}{N}\sum_{n=1}^N (x_n-\mu_{x})^2\\
s_{xy}=&\frac{1}{N}\sum_{n=1}^N (x_n-\mu_{x})(y_n-\mu_{y})
\end{align}
```


<details>
<summary>【折り畳み】式(4)の導出</summary><div>
>$L(w,w_0;D)$の最小値を求めるには、ラグランジュの未定乗数法によって解く。
>つまり、$L(w,w_0;D)$のモデルパラメータによる偏微分が$0$になるような連立方程式を解けば良い。
>その偏微分方程式は下記で表される。
>
>```math
>\begin{align}
>\frac{\partial L(w,w_0;D)}{\partial w}=&0\\
>\frac{\partial L(w,w_0;D)}{\partial w_0}=&0
>\end{align}
>```
>
>各偏微分方程式は下記の通り整理できる。
>
>```math
>\begin{align}
>&\frac{\partial}{\partial w}\frac{1}{2}\sum_{n=1}^N(y_n-(wx_n+w_{0}))^2\\
=&-\sum_{n=1}^N x_n(y_n-(wx_n+w_{0}))\\
>=&-\sum_{n=1}^N (x_n y_n - x_n^2 w - x_n w_{0})\\
>=&-\sum_{n=1}^N (x_n y_n) + w\sum_{n=1}^N(x_n^2) + w_{0}\sum_{n=1}^N(x_n)=0
>\end{align}
>```
>
>```math
>\begin{align}
>&\frac{\partial}{\partial w_0}\frac{1}{2}\sum_{n=1}^N(y_n-(wx_n+w_{0}))^2\\
>=&-\sum_{n=1}^N(y_n-(wx_n+w_{0}))\\
>=&-\sum_{n=1}^N(y_n - x_n w - w_{0})\\
>=&-\sum_{n=1}^N (y_n) + w\sum_{n=1}^N(x_n) + \sum_{n=1}^N (w_{0})\\
>=&-\sum_{n=1}^N (y_n) + w\sum_{n=1}^N(x_n) + N w_{0}=0
>\end{align}
>```
>
>これらの連立方程式を解くと、式(4)が得られます。
</div></details>


#線形重回帰
###線形重回帰のモデル
目的変数$y$、説明変数$\boldsymbol{x}=(x_1,\cdots,x_M)^{\mathrm{T}}$としたとき、線形重回帰モデルは式(5)で表されます。

```math
y=\boldsymbol{w}^{\mathrm{T}}\boldsymbol{x}+w_{0}
\tag{5}
```

$\boldsymbol{w}=(w_1,\cdots,w_M)^{\mathrm{T}},w_{0}$はモデルパラメータ（偏回帰係数、バイアス）で、データを学習することで決定します。


###線形重回帰の学習
線形回帰モデル（式(5)）による目的変数の出力を$\hat{y}$、学習データを$D=\\{({\boldsymbol{x}}\_{1},y_{1}),\cdots,({\boldsymbol{x}}\_{N},y_{N})\\}$と表します。

線形重回帰の場合、式(2)の誤差関数は式(6)に変形できます。

```math
L(\boldsymbol{w},w_0;D)=\frac{1}{2}\sum_{n=1}^N(y_n-(\boldsymbol{w}^{\mathrm{T}}\boldsymbol{x}_n+w_{0}))^2
\tag{6}
```

$L(\boldsymbol{w},w_0;D)$が最小となるような、モデルパラメータは式(7)で表されます。__なお、式(7)はE資格試験では出題されません。__

```math
\boldsymbol{w}^{\prime}=(\boldsymbol{X}^{\mathrm{T}}\boldsymbol{X})^{-1}\boldsymbol{X}^{\mathrm{T}}\boldsymbol{y}
\tag{7}
```

ただし、式(7)中の文字をダミー変数として置換し直しています。

```math
\begin{align}
\boldsymbol{y}=&(y_1,\cdots,y_N)^{\mathrm{T}}\\
\boldsymbol{w}^{\prime}=&(w_1 ,\cdots,w_M ,w_0 )^{\mathrm{T}}\\
\boldsymbol{x}^{\prime}=&(x_1 ,\cdots,x_M ,1)^{\mathrm{T}}\\
\boldsymbol{X}=&[\boldsymbol{x}_1 ^{\prime},\cdots,\boldsymbol{x}_N ^{\prime}]^{\mathrm{T}}
\end{align}
```


###非線形性への対応方法
線形回帰モデルは、説明変数に対して目的変数が線形なので、データの非線形性に対応できません。
そこで、非線型性やバイナリ出力（分類タスク）に対応するための、線形回帰の発展形として、基底展開法に基づく非線型回帰や、活性化関数を用いるものがあります。
このとき、モデルは線形回帰とは呼ばなくなるので、ご注意ください。

これらの解説については下記をご覧ください。
[基底展開法に基づく非線形回帰][link-2]
[link-2]:https://qiita.com/fridericusgauss/items/3052ba024521f50bd666


#おわりに
E資格向けの線形回帰について解説しました。
なお、上記は、2021年2月時点における内容であることにご注意ください。

[E資格試験に関する私の投稿記事リスト][link-1]