多項式による正規方程式の導出を、こちらにサイトでお世話になった。
線形回帰の Normal Equation(正規方程式)について
しかし、別に多項式じゃなくても何でも良いと思ったので、導出してみた。
何かしらの入力に対する出力が個の組で得られているとする。
この結果から、の関係を基底関数の組み合わせ(線形結合)で表現したい。
言い換えれば、各基底関数に掛ける係数をどのように取れば最も誤差が小さくなるか、を求めたい。
ここで、関数はに依存するが、係数はに依存しないことに注意。全てので上手いこと行くようなが欲しいのである。
ある点における誤差は、差分の二乗を取って大小の比較が出来るように定義する。(要素数で割って分散で表しても良い)
ここで、行列とベクトルを以下の様に定義した。
はベクトルのなので、もベクトルであることに注意。
また、行列やベクトルのサイズがなのかなのかにも注意。
行列を使って表現することを意識して、全誤差を次の様に表す。
ここで、をで微分したものをと定義すると、
ただし、の要素数は係数と同じであることに注意。
今考えているのは、全誤差が最小になる様なを求めることなので、が極値を取る条件、すなわち全てのがゼロになる条件から、係数が満たすべき方程式が得られる。
これが、正規方程式と呼ばれる関係式であり、結果だけ見ると、
を満たすを求める問題にあたかもすり替わったかの様に見える。
実際には、極値問題をちゃんと解いているわけで、「えいやっ!と置いてしまえ!」ということではなく、安心して使える。
導出的には最小値ではなく極値を求めているため、式だけでは停留点や最大値が求まってしまう可能性を除けないが、実際には誤差は無限に大きくなれるため、少なくとも最大値は除かれている。
この導出では、基底関数の形を特に指定していないため、(個人的には)見通しが良くなっている(と思う)。
例えば、二つの基底関数, を使えば線形フィッティングだし、様々な周期の三角関数(もしくは平面波)を使えばフーリエ変換になる。
また、面白いのが、基底関数行列は上で示したように行列なので、一般に正方行列ではなく、正則でもない。
そのため、をについて解くためには、まずはを掛けての係数行列を正方にするという着眼点が、個人的には新鮮だった。