オムライスの備忘録

数学・統計学・機械学習・プログラミングに関することを記す

【統計学】最小二乗法 #アルゴリズム編 #02

この記事の読者

統計学の基礎となる「最小二乗法」について知りたい.

Index

線形重回帰における最小二乗法

#01 では、線形単回帰での最小二乗法を考えた.

その場合は、説明変数が 1 つだけだったので、回帰係数は 2 つのみだった.

しかし、説明変数が複数だった場合はどのような計算を行うのか考える.

 Y_i = \beta_0 + \beta_1 X_{1,i} + \cdots + \beta_K X_{K,i} + \epsilon_i ,\ \ \ (i = 1, 2, \cdots, n) \tag{1}



K 個の説明変数を重回帰方程式 は以上のようになる.

(  \beta の係数は調整して 0 始まりにした.)

データ  X_{k, i} は k番目の説明変数で、i 番目のデータという意味になる.

誤差項は、#01 同様に考えると以下のようになり、 その二乗和が最小化するための目的の関数になる.

誤差項 :  \epsilon_i = Y_i - (\beta_0 + \beta_1 X_{1,i} + \cdots + \beta_K X_{K,i})

最小化する関数 :  S = \displaystyle \sum \epsilon_i^2



(目的の関数である二乗和は S (Sum) で表現しているが、 機械学習だと目的の関数はコスト関数 (Loss Function) のように呼称され、L (Loss) で表現することもある.)



#01 同様この関数を最小化するため、 \beta で編微分し、それを 0 として k+1 個の連立方程式を解く.

 \displaystyle \frac{\partial \beta_0}{\partial S} = 0
 \vdots
 \displaystyle \frac{\partial \beta_K}{\partial S} = 0



解いた結果求められる  \hat{\beta_k} は、単回帰同様 標本回帰係数 となる.

また、それらを用いた重回帰方程式を 標本重回帰方程式 と呼ぶ.

 Y = \hat{\beta_0} + \hat{\beta_1}X_{1} + \cdots + \hat{\beta_K}X_{K}



ここまでは、#01 の単回帰の推定の手順と同様.

行列の適用

#01 では、2つのパラメータ係数を 連立方程式を解くだけだったが、 説明変数が k 個ある場合は k + 1 個のパラメータを推定してする必要がある.

そこで、連立方程式を解くために行列を使用して表現することで、いくつかのメリットを享受できる.

(1) の式をデータ番号 i を使わずに書くと以下のようになる.

 Y_1 = \beta_0 + \beta_1 X_{1, 1} + \cdots + \beta_K X_{K, 1} + \epsilon_1
 \vdots
 Y_n = \beta_0 + \beta_1 X_{1, n} + \cdots + \beta_K X_{K, n} + \epsilon_n



細かいところだが、 \beta_0 = \beta_0 \times 1 のように変更する.

 Y_1 = \beta_0 \times 1 + \beta_1 X_{1, 1} + \cdots + \beta_K X_{K, 1} + \epsilon_1
 \vdots
 Y_n = \beta_0 \times 1 + \beta_1 X_{1, n} + \cdots + \beta_K X_{K, n} + \epsilon_n



この連立方程式を行列の形式で表現する.


\begin{pmatrix}
y_1 \\
\vdots \\
y_n \\
\end{pmatrix}
 = 
\begin{pmatrix}
1, & X_{1, 1}, & \cdots, & X_{K, 1} \\
\vdots & \vdots & \ddots & \vdots \\
1, & X_{1, n}, & \cdots, & X_{K, n} \\
\end{pmatrix}

\begin{pmatrix}
\beta_0 \\
\vdots \\
\beta_K \\
\end{pmatrix}
 + 
\begin{pmatrix}
\epsilon_0 \\
\vdots \\
\epsilon_n \\
\end{pmatrix}


[n \times 1] = [n \times (K+1) ] \times [ (K+1) \times 1] + [n \times 1]



下には、行列のサイズを示している.



各行列を以下のようにして、

 
\boldsymbol{Y} = 
\begin{pmatrix}
y_1 \\
\vdots \\
y_n \\
\end{pmatrix}
, \ \ \ 
\boldsymbol{X} = 
\begin{pmatrix}
1, & X_{1, 1}, & \cdots, & X_{K, 1} \\
\vdots & \vdots & \ddots & \vdots \\
1, & X_{1, n}, & \cdots, & X_{K, n} \\
\end{pmatrix}
, \ \ \ 
\boldsymbol{\beta} =
\begin{pmatrix}
\beta_0 \\
\vdots \\
\beta_K \\
\end{pmatrix}
, \ \ \ 
\boldsymbol{\epsilon} =
\begin{pmatrix}
\epsilon_0 \\
\vdots \\
\epsilon_n \\
\end{pmatrix}



以下のように、行列の形式に書き直す.


\boldsymbol{Y} = \boldsymbol{X} \boldsymbol{\beta} + \boldsymbol{\epsilon}



  •  \boldsymbol{Y} : n次元観測値ベクトル (目的変数ベクトル)
  •  \boldsymbol{X} : 計画行列
  •  \boldsymbol{\beta} : 回帰係数ベクトル
  •  \boldsymbol{\epsilon} : 誤差ベクトル

このようにして、行列で表現することができる.

計算方法

まず、行列形式で最小化する目的の関数 S を表現する.

目的の関数は  \boldsymbol{\beta} に対する関数とも解釈できますので、  S(\boldsymbol{\beta}) と書いてみることにする.




\begin{eqnarray}
S(\boldsymbol{\beta}) &=& \displaystyle \sum_{i=1}^{n} \epsilon_i^{2} \\
  &=& \boldsymbol{\epsilon}^{T} \boldsymbol{\epsilon} \\
  &=& ( \boldsymbol{Y} - \boldsymbol{X} \boldsymbol{\beta} )^{T} ( \boldsymbol{Y} - \boldsymbol{X} \boldsymbol{\beta} )
  &=& \boldsymbol{Y}^{T} \boldsymbol{Y} -2 \boldsymbol{Y}^{T} \boldsymbol{X} \boldsymbol{\beta} + 
\boldsymbol{\beta}^{T} \boldsymbol{X}^{T} \boldsymbol{X} \boldsymbol{\beta}
\end{eqnarray}



これを最小とする  \hat{\boldsymbol{\beta}} = (\hat{\beta_1}, \cdots, \hat{\beta_K})^{T} が推定値となる.

では、ベクトル変数  \boldsymbol{\beta} S(\boldsymbol{\beta}) をベクトル微分する.

以下ベクトル微分のルール.

 
1. \displaystyle \frac{ \partial (\boldsymbol{c}^{T}) \boldsymbol{\beta} }{\partial \boldsymbol{\beta}} = \boldsymbol{c} \\
2. \displaystyle \frac{ \partial ( \boldsymbol{\beta}^{T} \boldsymbol{A} \boldsymbol{\beta} ) }{\partial \boldsymbol{\beta}} = (A + A^{T}) \boldsymbol{\beta}



以下、微分結果


\begin{eqnarray}
\displaystyle \frac{ \partial S( \boldsymbol{\beta} ) }{\partial \boldsymbol{\beta} } 
&=& 
\frac{ \partial }{\partial \boldsymbol{\beta}} 
( \boldsymbol{Y}^{T} \boldsymbol{Y} -2 \boldsymbol{Y}^{T} \boldsymbol{X} \boldsymbol{\beta} + 
\boldsymbol{\beta}^{T} \boldsymbol{X}^{T} \boldsymbol{X} \boldsymbol{\beta} ) \\
&=& -2 \boldsymbol{X}^{T} \boldsymbol{Y} + 2 \boldsymbol{X}^{T} \boldsymbol{X} \boldsymbol{\beta}
\end{eqnarray} \tag{2}



(2) の最後の式を 正規方程式と呼ぶ.

そして、(2) を 0 とおいて、解  \hat{\boldsymbol{\beta}} を求める.

 \hat{\boldsymbol{\beta}} = ( \boldsymbol{X}^{T} \boldsymbol{X} )^{-1} \boldsymbol{X}^{T} \boldsymbol{Y}



 \boldsymbol{X}^{T} \boldsymbol{X}逆行列を持つことを前提としている.



まとめ

  • 重回帰のような説明変数の線形和のような形式なら、行列形式を適用して最小二乗法を適用して係数パラメータを利用できる
  • 行列表記をすることで、表記や計算を簡略化できる

参考

関連動画