最小二乗法の式を偏微分を用いて導出する方法をわかりやすく解説

最小二乗法は、実際のデータの値と予測値の誤差を最小化することによりモデルのパラメータを選ぶ方法のうちの一つです。この記事では最小二乗法の式を偏微分を用いて導出する方法をわかりやすく解説します。

目次

最小二乗法の式を偏微分を用いて導出する方法をわかりやすく解説

次のような問題を考えます。

問題

\(n\)個のデータ\(\{(x_i, y_i) \in \mathbb R^2 \}_{i = 1}^n\)が手元にあるときに、
\(x, y\)の間にある関係を適当なパラメータ\(a, b \in \mathbb R\)を用いて
\begin{align*} y = ax + b \end{align*}
によりモデリングすることにする。
このとき、パラメータ\(a, b\)をどう選べば良いかを考えることにします。

パラメータの選び方として、
実際のデータの値と、そのパラメータに基づく予測値の誤差が小さいように選ぶ
という方針を採用することにします。
誤差として差の二乗の和を採用してパラメータを定める方法を最小二乗法といいます。

つまり、解きたい問題は下記の最小化問題です。

問題

\(n\)個のデータ\(\{(x_i, y_i) \in \mathbb R^2 \}_{i = 1}^n\)が手元にあるときに、最小二乗法に基づいてパラメータを定めるには、
\begin{align*} \textrm{minimize}_{a, b \in \mathbb R} \sum_{i = 1}^n \left( y_i – (ax_i + b) \right)^2 \end{align*}
という最小化問題を解けば良い。この最小化問題のminimizerである\(a, b\)が求めるパラメータである。

\begin{align*} E(a, b) = \sum_{i = 1}^n \left( y_i – (ax_i + b) \right)^2 \end{align*}
と表記することにしましょう。つまり、\(E\)は\(a, b\)を引数とする2変数の関数です。
ここで、\(E\)はErrorの頭文字に由来します。

\begin{align*} E(a, b) &=\sum_{i = 1}^n \left( y_i – (ax_i + b) \right)^2
\\&= \sum_{i = 1}^n \left( -x_i a + (y_i – b) \right)^2
\\&= \sum_{i = 1}^n \left(x_i^2 a – 2x_i(y_i – b) + (y_i – b)^2 \right) \end{align*}
なので、\(E(a,b)\)は\(a\)に関する二次関数です。

\begin{align*} E(a, b) &=\sum_{i = 1}^n \left( y_i – (ax_i + b) \right)^2
\\&= \sum_{i = 1}^n \left( -b + (y_i – a x_i) \right)^2
\\&= \sum_{i = 1}^n \left( b^2 – 2 (y_i – a x_i) + (y_i – a x_i)^2 \right) \end{align*}
なので、\(E(a,b)\)は\(b\)に関する二次関数です。

\(E(a, b)\)は\(a, b\)に関してともに正の実数を係数とする二次関数であるので、
\(E\)のグラフは\(a, b\)それぞれに関して下に凸の放物線を描く形状になっていることがわかります。
つまり、単に\(a, b\)それぞれに関して偏微分をして、\(0\)となる点(=臨界点)を求めれば、それが\(E\)の最小値を与える点であることがわかります。

では実践してみましょう。
\begin{align*} &\partial_a E(a,b) = 0 \quad \Leftrightarrow \quad – \sum_{i = 1}^n 2 x_i \left( y_i – (ax_i + b) \right) = 0
\\& \partial_b E(a,b) = 0 \quad \Leftrightarrow\quad – \sum_{i = 1}^n 2 \left( y_i – (ax_i + b) \right) = 0 \end{align*}
となります。これを最小二乗法における正規方程式といいます。
さらに変形を進めると、
\begin{align*} &\partial_a E(a,b) = 0 \quad \Leftrightarrow \quad \sum_{i = 1}^n x_i \left( y_i – (ax_i + b) \right) = 0
\\& \partial_b E(a,b) = 0 \quad \Leftrightarrow \quad \sum_{i = 1}^n \left( y_i – (ax_i + b) \right) = 0 \end{align*}
が得られます。さらにもう1段階変形をすすめると、
\begin{align*} &\partial_a E(a,b) = 0 \quad \Leftrightarrow \quad a \sum_{i = 1}^n x_i^2 + b \sum_{i = 1}^n x_i = \sum_{i = 1}^n x_i y_i
\\& \partial_b E(a,b) = 0 \quad \Leftrightarrow \quad a \sum_{i = 1}^n x_i + nb = \sum_{i = 1}^n y_i \end{align*}

この連立方程式を行列のかたちで書き表すと、
\begin{align*} \begin{pmatrix} \sum_{i=1}^n x_i^2 & \sum_{i=1}^n x_i \\ \sum_{i=1}^n x_i & n \\ \end{pmatrix}\begin{pmatrix} a \\ b \\ \end{pmatrix} = \begin{pmatrix} \sum_{i=1}^n x_i y_i \\ \sum_{i=1}^n y_i \\ \end{pmatrix} \end{align*}
となります。
逆行列を計算することで、\(a, b\)を求めても良いのですが、クラメールの公式を用いることにします。
\begin{align*}a = \frac{\det \begin{pmatrix} \sum_{i=1}^n x_i y_i & \sum_{i=1}^n x_i \\ \sum_{i=1}^n y_i & n \\ \end{pmatrix} }{ \det \begin{pmatrix} \sum_{i=1}^n x_i^2 & \sum_{i=1}^n x_i \\ \sum_{i=1}^n x_i & n \\ \end{pmatrix} } , \quad b = \frac{\det \begin{pmatrix} \sum_{i=1}^n x_i^2 & \sum_{i=1}^n x_i y_i \\ \sum_{i=1}^n x_i & \sum_{i=1}^n y_i \\ \end{pmatrix} }{ \det \begin{pmatrix} \sum_{i=1}^n x_i^2 & \sum_{i=1}^n x_i \\ \sum_{i=1}^n x_i & n \\ \end{pmatrix} } \end{align*}
必要であればこれをさらに変形することで、
\begin{align*} a = \frac{ n \sum_{i=1}^n x_i y_i – \left( \sum_{i=1}^n x_i \right) \left( \sum_{i=1}^n y_i\right)}{ n \sum_{i=1}^n x_i^2 – \left( \sum_{i=1}^n x_i \right) ^2} , \quad b = \frac{ \left( \sum_{i=1}^n x_i ^2 \right) \left( \sum_{i=1}^n y_i \right) – \left( \sum_{i=1}^n x_i \right)\left( \sum_{i=1}^n x_i y_i \right)}{n \sum_{i=1}^n x_i^2 – \left( \sum_{i=1}^n x_i \right) ^2} \end{align*}
と求めることができます。

おまけ:推定量の別表現

\begin{align*}a = \frac{ n \sum_{i=1}^n x_i y_i – \left( \sum_{i=1}^n x_i \right) \left( \sum_{i=1}^n y_i\right)}{ n \sum_{i=1}^n x_i^2 – \left( \sum_{i=1}^n x_i \right) ^2} \end{align*}
という式が得られましたが、
この式はさらに変形していくことができます。

\begin{align*} \overline x = \frac{1}{n} \sum_{i=1}^n x_i, \quad \overline y = \frac{1}{n} \sum_{i=1}^n y_i \end{align*}
とすると,
\begin{align*} \sum_{i=1}^n \left( \overline x (y_i – \overline y ) \right) = 0 \end{align*}
なので
\begin{align*} \sum_{i=1}^n \left( (x_i – \overline x )(y_i – \overline y ) \right) = \sum_{i=1}^n \left( x_i (y_i – \overline y ) \right) = \sum_{i=1}^n x_i y_i – \frac{1}{n}\sum_{i=1}^n x_i \sum_{i=1}^n y_i \end{align*}
が成り立ちます。また、
\begin{align*} \sum_{i=1}^n \left( \overline x (x_i – \overline x ) \right) = 0 \end{align*}
なので、
\begin{align*} \sum_{i=1}^n \left( \overline x (x_i – \overline x ) \right) = \sum_{i=1}^n \left( (x_i – \overline x) (x_i – \overline x ) \right) = \sum_{i=1}^n \left( (x_i – \overline x) (x_i – \overline x ) \right) = \sum_{i=1}^n x_i^2 – \frac{1}{n}\left( \sum_{i=1}^n x_i \right) ^2 \end{align*}
が成り立ちます。
\begin{align*} a &= \frac{ n \sum_{i=1}^n x_i y_i – \left( \sum_{i=1}^n x_i \right) \left( \sum_{i=1}^n y_i\right)}{ n \sum_{i=1}^n x_i^2 – \left( \sum_{i=1}^n x_i \right) ^2} = \frac{ \sum_{i=1}^n x_i y_i – \frac{1}{n} \left( \sum_{i=1}^n x_i \right) \left( \sum_{i=1}^n y_i\right)}{ \sum_{i=1}^n x_i^2 – \frac{1}{n} \left( \sum_{i=1}^n x_i \right) ^2} \end{align*}
であるので、
\begin{align*} a = \frac{ \sum_{i=1}^n \left( (x_i – \overline x )(y_i – \overline y ) \right) }{\sum_{i=1}^n \left( (x_i- \overline x )(x_i – \overline x ) \right)} \end{align*}

\begin{align*} a = \frac{ \sum_{i=1}^n \left( x_i (y_i – \overline y ) \right) }{\sum_{i=1}^n \left( x_i (x_i – \overline x ) \right)}\end{align*}
などの表現も得ることができます。

あわせて読みたい記事

記事をシェアして話のネタにする

コメント

コメントする

目次