物理のノート

最小二乗法

多項式近似による関数関係の推測

観測点$x$に対して得られた観測値を$t$とする.
$N$組の$x,t$の組み合わせを$\lbrace(x_n,t_n)\rbrace^{N}_{n=1}$と表すことにする.
この時, $N+1$番目の観測点$x_{n+1}$において観測される$t_{n+1}$はどのような値になると予測されるだろうか.

この予測を行うには,$x$と$t$の間にある関数関係を推測する.

ここでは,推測する関数$f(x)$を次のような,$M$を最大次数とする多項式で近似されるものと仮定する. \begin{equation} f(x)=\omega_0 x^0 + \omega_1 x^1 +\omega_2 x^2 + \dots + \omega_M x^M \\ =\sum^M_{m=0} \omega_m x^m \end{equation} 推測される関数$f(x)$は,(1)式より未知の係数$\lbrace \omega_0,\dots,\omega_M\rbrace$(これをまとめて$\lbrace \omega_m\rbrace_{m=0}^M $と表記する),すなわちパラメーターを決定すると明らかになる.

ここで, 推定される関数から計算で得られる$f(x)$と,実際の観測値$t_n$を比較するために,次の値をここでの誤差$E$と定義し,二乗誤差と呼ぶ. \begin{equation} E=\frac{\lbrace f(x_1)-t_1\rbrace^2 +\lbrace f(x_2)-t_2\rbrace^2+ \dots + \lbrace f(x_N)-t_N\rbrace^2}{2}\\ =\frac{1}{2}\sum_{n=1}^N \lbrace f(x_n)-t_n\rbrace^2\\ =\frac{1}{2}\sum_{n=1}^N \left(\sum^M_{m=0} \omega_m x^m-t_n\right)^2 \end{equation} 二乗誤差を定義した(2)式(これを誤差関数と称することもある)の$3$行目には(1)式が代入されている.

さて(2)式を,未知の係数$\lbrace\omega_m\rbrace_{m=0}^M $の関数を見なすと,二乗誤差$E$を最小にする係数および次数$M$を求めることが,観測点を予測する最も近似された関数を求めることになる.この手法を最小二乗法という.

例えば,$M=0$の場合,多項式(1)は \[ f(x)=\omega_0 \] という定数項で表される$x$軸に平行な直線となる. $M=1$の場合は, \[ f(x)=\omega_0 + \omega_1 x \] で表される傾きと切片を有する直線になる.

二乗誤差$E$を最小にする係数を求めるには,次の偏微分係数が$0$になる(微小変化に対して導関数が変化しない)ことが条件となる. \begin{equation} \frac{\partial E}{\partial \omega_m}=0 \end{equation} ここで,$m=0,\dots,M$.
なお,係数の組をベクトル$\pmb \omega=(\omega_0,\dots,\omega_M)^T$とすれば,勾配ベクトル$\nabla E(\pmb\omega)=\pmb 0$であるといえる.

(2)式を(3)式に代入して偏微分する.
途中まで, \begin{equation} g(x)=\sum^M_{m=0} \omega_m x^m-t_n \end{equation} と置き換えて計算すると,次のような過程および結果になる. \begin{equation} \frac{\partial E}{\partial \omega_m}=\frac{\partial}{\partial \omega_m}\left[\frac{1}{2}\lbrace g(x_1)\rbrace^2 +,\dots,+ \frac{1}{2}\lbrace g(x_N)\rbrace^2\right]\\ =\sum_{n=1}^N g(x_n) g^{'}(x_n)\\ =\sum_{n=1}^N \left(\sum^M_{m^{'}=0} \omega_{m^{'}} x^{m^{'}}-t_n\right)x_n^m\\ =\sum^M_{m^{'}=0} \omega_{m^{'}} \sum_{n=1}^N x_n^{m^{'}} x_n^m -\sum_{n=1}^N t_n x_n^m\\ =0 \end{equation} さて,ここに$x_n^m$を$(n,m)$成分とする,$N\times(M+1)$行列$\pmb\Phi$を用意する.
\begin{equation} \pmb\Phi= \begin{pmatrix} x^0_1 & x^1_1 & \dots & x^M_1 \\ x^0_2 & x^1_2 & \dots & x^M_2 \\ \dots & \dots & \dots & \dots \\ x^0_N & x^1_N & \dots & x^M_N \end{pmatrix} = \begin{pmatrix} 1 & x_1 & \dots & x^M_1 \\ 1 & x_2 & \dots & x^M_2 \\ \dots & \dots & \dots & \dots \\ 1 & x_N & \dots & x^M_N \end{pmatrix} \end{equation} さらに,先ほど勾配ベクトルのところで触れた,未知の係数の組を表したベクトル$\pmb \omega$と,観測値の組であるベクトル$\pmb t =(t_1,\dots,t_N)^T$を用意する.
すると,(5)式は次のように書き換えられる. \begin{equation} \pmb\omega^T \Phi^T \Phi - \pmb t^T \Phi = \pmb 0,\\ \pmb\omega = (\Phi^T\Phi)^{-1} \Phi^T \pmb t. \end{equation}

$M=1$での最小二乗法による(7)式の確認

$M=1$の場合は, \[ f(x)=\omega_0 + \omega_1 x \] で表される傾きと切片を有する直線になることは先述した.(2)式より \begin{equation} E=\frac{1}{2}\sum_{n=1}^N \lbrace f(x_n)-t_n\rbrace^2\\ =\frac{1}{2}\sum_{n=1}^N \left[ (\omega_0 + \omega_1 x_n) - t_n\right]^2 \end{equation} (8)式を$\omega_0,\omega_1$で偏微分すると(5)式より, \begin{equation} \frac{\partial E}{\partial \omega_0}=\sum_{n=1}^N \left[(\omega_0 + \omega_1 x_n) - t_n\right]=0 \end{equation} および \begin{equation} \frac{\partial E}{\partial \omega_1}=\sum_{n=1}^N \left[(\omega_0 + \omega_1 x_n) - t_n\right]x_n=0 \end{equation} が得られる.(9)(10)式をそれぞれ整理すると \begin{equation} N \omega_0 + \omega_1 \sum_{n=1}^N x_n = \sum_{n=1}^N t_n \end{equation} および \begin{equation} \omega_0 \sum_{n=1}^N + \omega_1 \sum_{n=1}^N x_n^2 = \sum_{n=1}^N x_n t_n \end{equation} となる.(11)(12)式を行列形式で表すと, \begin{equation} \begin{pmatrix} N & \sum_{n=1}^N x_n \\ \sum_{n=1}^N x_n & \sum_{n=1}^N x_n^2 \end{pmatrix} \begin{pmatrix} \omega_0 \\ \omega_1 \end{pmatrix} = \begin{pmatrix} \sum_{n=1}^N t_n \\ \sum_{n=1}^N x_n t_n \end{pmatrix} \end{equation} ゆえに, \begin{equation} \begin{pmatrix} \omega_0 \\ \omega_1 \end{pmatrix} = \begin{pmatrix} N & \sum_{n=1}^N x_n \\ \sum_{n=1}^N x_n & \sum_{n=1}^N x_n^2 \end{pmatrix} ^{-1} \begin{pmatrix} \sum_{n=1}^N t_n \\ \sum_{n=1}^N x_n t_n \end{pmatrix} \end{equation} (6)式より, \begin{equation} \pmb\Phi= \begin{pmatrix} x^0_1 & x^1_1 \\ x^0_2 & x^1_2 \\ \dots & \dots \\ x^0_N & x^1_N \end{pmatrix} = \begin{pmatrix} 1 & x_1 \\ 1 & x_2 \\ \dots & \dots \\ 1 & x_N \end{pmatrix} \end{equation} と置き換えて,(14)式を変形する. \begin{equation} \begin{pmatrix} \omega_0 \\ \omega_1 \end{pmatrix} = \begin{pmatrix} \begin{pmatrix} 1 & 1 & \dots &1 \\ x_1 & x_2 & \dots & x_N \end{pmatrix} \begin{pmatrix} 1 & x_1 \\ 1 & x_2 \\ \dots & \dots \\ 1 & x_N \end{pmatrix} \end{pmatrix}^{-1} \begin{pmatrix} 1 & 1 & \dots &1 \\ x_1 & x_2 & \dots & x_N \end{pmatrix} \begin{pmatrix} t_1 \\ t_2 \\ \dots \\ t_N \end{pmatrix} \end{equation} なお, \begin{equation} \begin{pmatrix} 1 & x_1 \\ 1 & x_2 \\ \dots & \dots \\ 1 & x_N \end{pmatrix}^{T} = \begin{pmatrix} 1 & 1 & \dots &1 \\ x_1 & x_2 & \dots & x_N \end{pmatrix} \end{equation} である($T$は転置行列を表している).
したがって, \begin{equation} \pmb\omega = (\Phi^T\Phi)^{-1} \Phi^T \pmb t \end{equation} となり,(7)式と一致する.

index.htmlに戻る