機械学習

正規方程式を用いた線形回帰

2024年1月23日

線形回帰を行う手法の1つとして正規方程式を用いる方法があります。
正規方程式を解くことで、最も当てはまりのよい回帰直線を求めることができるため、線形回帰のアプローチとして用いられています。
このページでは、正規方程式を用いた線形回帰について解説します。

正規方程式とは

正規方程式(normal equation)とは、線形回帰において損失関数(実測値と推定値の誤差の平均二乗誤差(MSE, Mean Squared Error))が最小になる回帰直線を求めるための方程式です。
正規方程式を解くことでデータに対して最も当てはまりの良い回帰直線を引くことができます。

以下では、正規方程式を使って線形回帰を行う方法を解説します。

線形モデル

1変数の直線は次のように表せます。

$$ f(x) = θ_0 + θ_1 x $$

ここで、$ θ_0 $ は切片、$ θ_1 $ は傾きです。
簡略化のために1変数( $ x $ )のみを扱います。

線形回帰における損失関数

最小二乗法による線形回帰。実データ(赤丸)との誤差(緑線)が最小になるようにフィッティングすることで回帰直線(青線)を引く。誤差の評価にはMSE(平均二乗誤差)などを損失関数として定義し、損失関数が最小になるような直線を求める。出典:Wikimedia Commons, ©Krishnavedala, CC BY-SA 3.0, 2024/1/14閲覧

線形回帰では、実測値(観測データ)と推計値(線形回帰による予測値)の差分(誤差)が最小になるような回帰直線を求めます。

誤差の評価には平均二乗誤差(MSE, Mean Squared Error)を使用します。
実測値(実データ)を $ y_i $ 、線形回帰による推定値 $  \widehat{ y_i } =  θ_0 + θ_1 x_i $ とすると、MSEは次のように表されます。

$$ MSE = \frac{ 1 } { n } \displaystyle \sum_{ i=1 }^n \{ y_i - \widehat{ y_i } \}^2 = \frac{ 1 } { n } \displaystyle \sum_{ i=1 }^n \{ y_i - (θ_0 + θ_1 x_i) \}^2 $$

ここで $ n $ は実測値の個数です。

このMSEは全データの誤差を積算しており、MSEが最小(=全体の誤差が最小)になるような回帰直線を求めればよいということです。
そこで、今回はMSEを損失関数 $ L (θ_0, θ_1) $ として利用して回帰直線を求めます。

$$ L (θ_0, θ_1) = MSE  $$

$ L $ のパラメータが $ θ_0 $ と $ θ_1 $ なのは、これらが求めたい回帰直線の切片と傾きであるからです。

線形回帰による推定値

線形回帰による推定値 $ \widehat{ y_i }  $ は $ θ_0, θ_1, x_i $ を使って次のように表せます。

$$  \widehat{ y_i } =  θ_0 + θ_1 x_i $$

この関係は全ての実測データに対する推定値について成り立つので、連立方程式として書くと次のように表せます。

$$ \widehat{ y_1 } =  θ_{ 10 } + θ_{ 11 } x_{ 11 } $$

$$ \widehat{ y_2 } =  θ_{ 20 } + θ_{ 21 } x_{ 21 } $$

$$ \cdots  $$

$$ \widehat{ y_n } =  θ_{ n0 } + θ_{ n1 } x_{ n1 } $$

さらに、これらの連立方程式を行列と見立て、右辺を $ x $ と $ θ $ の行列の積に分解します。

$$ \begin{equation}
\begin{bmatrix}
\widehat{ y_1 } \\
\widehat{ y_2 } \\
\cdots  \\
\widehat{ y_n }
\end{bmatrix}
=
\begin{bmatrix}
1 & x_{ 11 }  \\
1 & x_{ 21 }  \\
\cdots & \cdots \\
1 & x_{ n1 }  \\
\end{bmatrix}
\begin{bmatrix}
θ_0 \\
θ_1 \\
\cdots  \\
θ_n \\
\end{bmatrix}
\end{equation} $$

個々の行列やベクトルを記号で表記しては次のように表します。

$$ \widehat{ y } = \mathbf{ X } θ $$

回帰直線の導出

次に損失関数の最小値を求めます。
実測値と推定値の誤差をMSEで評価する場合、損失関数 $ L $ は以下のように表せます。

$$ L = MSE = \frac{ 1 } { n } \displaystyle \sum_{ i=1 }^n \{ y_i -\widehat{ y_i } \}^2 $$

この方程式の右辺を変形して正規方程式を導出します。
はじめに、上式の右辺に $ \widehat{ y } = \mathbf{ X } θ $ を代入します。

$$ L (θ) = \frac{ 1 } { n } \displaystyle \sum_{ i=1 }^n \{ y_i - \mathbf{ X } θ \}^2 $$

ここで二乗和は転置行列と元の行列の積として表せることから、以下のように変形できます。

$$ L (θ) = \frac{ 1 } { n } ( y - \mathbf{ X } θ )^T ( y - \mathbf{ X } θ ) $$

転置行列と元の行列の積を展開して整理します。
展開した結果出てくる2つの項 $ - y^T \mathbf{ X } θ $ と $ - θ^T \mathbf{ X }^T y $ は、いずれも行列の積を取るとスカラーになります(各行列のサイズ( $ m \times n $ )からわかる)。
スカラーであれば転置しても同じ値であり、いずれも $ -θ^T \mathbf{ X }^T y $ と表記できることから次のようにまとめます。

$$ L (θ) = \frac{ 1 } { n } ( y^T y - 2 θ^T \mathbf{ X }^T y + θ^T \mathbf{ X }^T \mathbf{ X } θ ) $$

損失関数が最小値にはなるのは、$ L $ の $ θ $ での偏微分がゼロになるときです。
これに対応するのは、上式の右辺を $ θ $ で偏微分した値がゼロに等しいときです。

$$ -2 \mathbf{ X }^T y = 2 \mathbf{ X }^T \mathbf{ X } θ = 0 $$

さらに $ θ $ の式に変形します。

$$ θ = ( \mathbf{ X }^T \mathbf{ X } )^{ -1 } \mathbf{ X }^T y $$

この方程式を正規方程式とよびます。
この式を解くことで、最も当てはまりのよい回帰直線(の切片と傾き)を求めることができます。

参考文献

Ordinary least squares, Wikipedia 2024/1/15閲覧
正規方程式を完全解説(導出あり)【機械学習入門4】 米国データサイエンティストのブログ 2024/1/21閲覧
正規方程式(normal equation)の導出と直感的理解 あつまれ統計の森 2024/1/21閲覧

-機械学習
-