最小二乗法は、観測値と直線による予測値の差を二乗し、その合計が最小になる直線を選ぶ方法です。この記事では、\(y=ax+b\)の傾き\(a\)と切片\(b\)を偏微分から導出します。
最小二乗法の式を偏微分で導出する
\(x_1,\ldots,x_n\)がすべて同じ値ではないとき、最小二乗直線\(y=ax+b\)は
\begin{align*} a &=\frac{\sum_{i=1}^{n}(x_i-\bar{x})(y_i-\bar{y})} {\sum_{i=1}^{n}(x_i-\bar{x})^2},\\ b&=\bar{y}-a\bar{x} \end{align*}
で与えられます。ここで\(\bar{x}=\frac1n\sum x_i\)、\(\bar{y}=\frac1n\sum y_i\)です。
残差平方和を最小にする
\(n\)個のデータ\((x_i,y_i)\)に対して、直線の予測値を\(ax_i+b\)、残差を\(y_i-(ax_i+b)\)とします。最小化する関数は
\begin{align*} E(a,b)=\sum_{i=1}^{n}\left(y_i-ax_i-b\right)^2 \end{align*}
です。二乗を展開すると、例えば\(a\)については
\begin{align*} \left(-x_i a+(y_i-b)\right)^2 =x_i^2a^2-2ax_i(y_i-b)+(y_i-b)^2 \end{align*}
となります。また、\(b\)については
\begin{align*} \left(-b+(y_i-ax_i)\right)^2 =b^2-2b(y_i-ax_i)+(y_i-ax_i)^2 \end{align*}
です。残差平方和は\(a,b\)について凸な二次関数です。特に\(x_i\)がすべて同じでなければ、傾きと切片を一意に求められます。
偏微分して正規方程式を作る
\(E(a,b)\)を\(a,b\)で偏微分し、それぞれ0とおきます。
\begin{align*} \frac{\partial E}{\partial a} &=-2\sum_{i=1}^{n}x_i(y_i-ax_i-b)=0,\\ \frac{\partial E}{\partial b} &=-2\sum_{i=1}^{n}(y_i-ax_i-b)=0 \end{align*}
整理すると、次の正規方程式を得ます。
\begin{align*} a\sum_{i=1}^{n}x_i^2+b\sum_{i=1}^{n}x_i &=\sum_{i=1}^{n}x_i y_i,\\ a\sum_{i=1}^{n}x_i+nb &=\sum_{i=1}^{n}y_i \end{align*}
行列で書けば、
\begin{align*} \begin{pmatrix} \sum x_i^2 & \sum x_i\\ \sum x_i & n \end{pmatrix} \begin{pmatrix}a\\b\end{pmatrix} = \begin{pmatrix}\sum x_i y_i\\\sum y_i\end{pmatrix} \end{align*}
です。
傾きと切片を求める
二本目の正規方程式を\(n\)で割ると、
\begin{align*}a\bar{x}+b=\bar{y}\end{align*}
なので、
\begin{align*}b=\bar{y}-a\bar{x}\end{align*}
です。これを一本目へ代入して整理すると、
\begin{align*} a &=\frac{\sum_{i=1}^{n}(x_i-\bar{x})(y_i-\bar{y})} {\sum_{i=1}^{n}(x_i-\bar{x})^2}\\ &=\frac{n\sum x_i y_i-(\sum x_i)(\sum y_i)} {n\sum x_i^2-(\sum x_i)^2} \end{align*}
を得ます。分母は\(n\sum(x_i-\bar{x})^2\)に等しいため、\(x_i\)がすべて同じ場合は0になります。その場合、異なる傾きの直線をデータから区別できず、傾きは一意に決まりません。
最小値であることの確認
\(x_i\)がすべて同じでなければ、\(E(a,b)\)のヘッセ行列は
\begin{align*} 2\begin{pmatrix} \sum x_i^2 & \sum x_i\\ \sum x_i & n \end{pmatrix} \end{align*}
で正定値です。したがって、正規方程式で求めた点は単なる停留点ではなく、残差平方和を一意に最小化する点です。

