最小二乗法というのは,データをある関数で最良近似する方法である.例えば,
![$\displaystyle (1.2,\,2.2)\quad(2.1,\,3.8)\quad(3.3,\,5.6)\quad(4.1,\,7.1)\quad(5,8.8)$](img4.png) |
(1) |
の
![$ (x,y)$](img5.png)
の実験データがあるとする.これを直線で近似
![$ y=ax+b$](img6.png)
したい.どうすればよ
いか?--という問題である.誤差の2乗が最小になる直線が最良近似とすることができる.
これを最小二乗法(least squares method)と言う.式で表すと,誤差の二乗の和
![$ E(a,b)$](img7.png)
は,
となる.
![$ (x_i,\,y_i)$](img9.png)
は,
![$ i$](img10.png)
番目のデータで,
![$ n$](img11.png)
はデータの個数である.この誤差が
最小になる
![$ a$](img12.png)
と
![$ b$](img13.png)
を捜す.式(
2)は
![$ a$](img14.png)
にも
![$ b$](img15.png)
にも2次式でその係
数は正の値なので最小値がある.誤差
![$ E$](img16.png)
の最小値は,それぞれ偏微分した値がゼロとな
るときに得ることができる.
|
![$\displaystyle \if 11 \frac{\partial E}{\partial a} \else \frac{\partial^{1} E}{\partial a^{1}}\fi =-\sum_{i=1}^n 2(y_i-ax_i-b)x_i=0$](img17.png) |
|
![$\displaystyle \if 11 \frac{\partial E}{\partial b} \else \frac{\partial^{1} E}{\partial b^{1}}\fi =-\sum_{i=1}^n 2(y_i-ax_i-b)=0$](img18.png) |
|
(3) |
これは,
![$ a$](img19.png)
と
![$ b$](img20.png)
の連立方程式である.すなわち,
である.これを解くと
|
![$\displaystyle a=\cfrac {n\sum_{i=1}^n x_iy_i-\sum_{i=1}^nx_i\sum_{i=1}^ny_i} {n\sum_{i=1}^nx_i^2-(\sum_{i=1}^nx_i)^2}$](img22.png) |
|
![$\displaystyle b=\cfrac {\sum_{i=1}^nx_i\sum_{i=1}^ny_i-\sum_{i=1}^nx_iy_i\sum_{i=1}^nx_i} {n\sum_{i=1}^nx_i^2-(\sum_{i=1}^nx_i)^2}$](img23.png) |
|
(5) |
となる.
最初に示したのデータについて計算してみると,
となる.ゆ
えに,最小二乗法による1次関数は
![$\displaystyle y=1.452119 x + 0.708006$](img25.png) |
(6) |
となる.データをこの間数をプロットすると,図
1のようになる.
グラフ作成ソフトウェアーは,最小二乗法によるデータのフィッティングをサポートして
いるものが多い.EXCELでも可能なはずである.実験データの整理に使うと良い.
ここでは,偏微分により最小二乗法の式を導いたが,線形代数の部分空間への射影を考え
る方が簡単である.これについては,参考文献 [2]に詳しく書い
てある.これは良い教科書なので,一読を勧める.
ここでは,フーリエ級数で関数をフィッティングした場合の誤差を考える.
区間
で定義された関数
は,
のようにフーリエ級数で表すことができる.例えば,
![$ [\pi,\,\pi]$](img32.png)
で定義された関数
![$ f(x)=x$](img33.png)
は,
と表すことができる.ここで,区間
![$ [-\pi,\,\pi]$](img35.png)
での元の関数
![$ x$](img36.png)
と,式
(
8)の右辺の誤差の2乗
![$ E$](img37.png)
を考える.一次関数でデータをフィッ
ティングしたときは,誤差の2乗の和であったが,ここでは関数をフィッティングするの
で誤差の二乗の積分になる.
![$\displaystyle E=\frac{1}{2\pi}\int_{-\pi}^\pi\left\{x-2\left[\sin x-\frac{\sin ...
... 3x}{3}- \dots+(-1)^{n+1}\frac{\sin nx}{n}+\cdots\right]\right\}^2\,\mathrm{d}x$](img38.png) |
(9) |
積分の前に
![$ 1/2\pi$](img39.png)
は気にする必要は無い.教科書に合わせているだけで,トータルの誤
差ではなく平均誤差を表している.証明はしていないが,フーリエ級数の展開の係数を無
限大まで計算すると,
![$ E\rightarrow 0$](img40.png)
となる.誤差の2乗の積分がゼロとなる
2.
フーリエ級数とは全く話を別にして,区間
![$ [-\pi,\,\pi]$](img41.png)
で定義された関数
![$ f(x)$](img42.png)
を三角
関数で最小二乗法で近似する.すなわち,
で近似する.なんか,フーリエ級数そっくりではないか?--とツッコミをいれたくなるが,
それとはまったく別なもの,フーリエ級数など知らないとして,話を進める.ある関数
![$ f(x)$](img44.png)
を
![$ S_n(x)$](img45.png)
で近似することを考える.ここで,式(
10)の係数
![$ a_k$](img46.png)
と
![$ b_k$](img47.png)
を上手に選んで,
![$ f(x)$](img48.png)
との誤差が最も小さくなるようにする.ちょうど,最初に示したデー
タとの誤差を最小にする1次関数の係数を求めたようにする.二乗平均誤差
3を,
と定義する.この二乗平均誤差は,係数
![$ a_k$](img54.png)
や
![$ b_k$](img55.png)
の関数となっている.この係数が変
わると誤差の量も変化する.この式は,1次関数でデータをフィットするときの誤差を表
す式(
2)に対応する.
誤差を表す式(11)を最小にするには,
と
をどのように選ぶか?--
ということが問題となる.これを最小にするということは,関数
を三角関数で近似
する最適な係数を決めることに他ならない.式(11)には最小値があり,関
数を近似する最適な
と
がある.なぜならば,全ての
と
は係数が正の
2次式であるため,最小値があるからである.この最小値はそれぞれの偏微分がゼロに
なるときに得られる.すなわち,
が条件となる.この具体的な計算は,式(11)に式(10)を代入
して偏微分がゼロとなる
や
を求める.
や
を求める具体的な計算の前に,ここで使う三角関数の重要な式を示しておく.
これらの式は,第4回の講義で話した内容である.
二乗平均後差が最小になる
は,次のように計算して求める.
である.ゆえに,
![$\displaystyle a_0=\frac{1}{\pi}\int_{-\pi}^{\pi}f(x)\,\mathrm{d}x$](img80.png) |
(17) |
となる.これは,フーリエ級数の
の計算と同じ.
二乗平均後差が最小になる
番めの係数
を計算する
したがって,
![$\displaystyle a_k=\frac{1}{\pi}\int_{-\pi}^{\pi}f(x)\cos kx\,\mathrm{d}x$](img89.png) |
(19) |
である.これもフーリエ係数の計算と同じ
同様にし,二乗平均後差が最小になる
番めの係数
を計算する
したがって,
![$\displaystyle b_k=\frac{1}{\pi}\int_{-\pi}^{\pi}f(x)\sin kx\,\mathrm{d}x$](img97.png) |
(21) |
である.これもフーリエ係数の計算と同じ.
フーリエ級数は,関数
を最小二乗法で近似している.これは,展開する三角関数が
有限個の場合,その展開の項数に関わらずいつも最良近似となっている.展開の項数に関
わらず,同じ係数でいつでも最良近似となるのは,展開する三角関数の列が直交関数系と
なっているからである.テイラー展開ではこのようにならない.
ホームページ: Yamamoto's laboratory
著者: 山本昌志
Yamamoto Masashi
平成18年12月1日