ここではデータ点を 一次関数 を用いて最小二乗法でフィッティングする。二次関数・三次関数でのフィッティング式は こちら 。
下の5つのデータを直線でフィッティングする。
1. 最小二乗法とは?
フィッティングの意味
フィッティングする一次関数は、
の形である。データ点をフッティングする直線を求めたいということは、知りたいのは傾き と切片 である!
上の5点のデータに対して、下のようにいろいろ直線を引いてみよう。それぞれの直線に対して 傾きと切片 が違うことが確認できる。
こうやって、自分で傾きと切片を変化させていき、最も「うまく」フィッティングできる直線を探すのである。
「うまい」フィッティング
「うまく」フィッティングするというのは曖昧すぎる。だから、「うまい」フィッティングの基準を決める。
試しに引いた赤い直線と元のデータとの「差」を調べる。たとえば 番目のデータ に対して、直線上の点 とデータ点 との差を見る。
しかしこれは、データ点が直線より下側にあればマイナスになる。単にどれだけズレているかを調べるためには、二乗してやれば良い。
これでズレを表す量がプラスの値になった。他の点にも同じようなズレがあるため、それらを全部足し合わせてやればよい。どれだけズレているかを総和したものを とおいておく。
この関数は を2変数とする。これは、傾きと切片を変えることは、直線を変えるということに対応し、直線が変わればデータ点からのズレも変わってくることを意味している。
最小二乗法
あとはデータ点からのズレの最も小さい「うまい」フィッティングを探す。これは、2乗のズレの総和 を最小にしてやればよい。これが最小二乗法だ!
は2変数関数であった。したがって、下図のように が最小となる点を探して、(傾き、切片)を求めれば良い。
2変数関数の最小値を求めるのは偏微分の問題である。以下では具体的に数式で計算する。
2. 最小値を探す
最小値をとるときの条件
の2変数関数の最小値になる は以下の条件を満たす。
2変数に慣れていない場合は、 を思い出してほしい。下に凸の放物線の場合は、 のときの で最小値になるだろう(接線の傾きゼロ)。
計算
を で偏微分する。中身の微分とかに注意する。
で偏微分
上の2つの式は に関する連立方程式である。行列で表示すると、
逆行列を作って、
ここで、
である。したがって、最小二乗法で得られる傾き と切片 がわかる。データ数を として一般化してまとめておく。
ただし、 は とする はデータ数。
式が煩雑に見えるが、用意されたデータをかけたり、足したり、2乗したりして足し合わせるだけなので難しくないでしょう。
式変形して平均値・分散で表現
はデータ数 を表す。
はそれぞれ、 の総和と の総和なので、平均値とデータ数で表すことができる。
は同じく の総和であり、2乗の平均とデータ数で表すことができる。
の分母の項は の分散の2乗によって表すことができる。
は共分散として表すことができる。
最後に の分子は、
赤色の項は分散と共分散で表すために挟み込んだ。
以上より一次関数 は、
よく見かける式と同じになる。
3. まとめ
最小二乗法が何をやっているかわかれば、二次関数など高次の関数でのフィッティングにも応用できる。
:下に凸になるのは の形を見ればわかる。