Top > 近似法 > 02.LSA
Last-modified: Thu, 10 Apr 2008 08:30:06 JST

最小二乗近似 Least Square Approximation

測定した実験データなどは、必ず、誤差を含む。また、あるサンプル点において測定を行うことが一般的だ。 最小二乗近似と呼ばれる。以下、英名Least Square Approximationを略してLSAと表記する。和名として、他にも、最小二乗法や、最小自乗法、最小自乗近似などと書かれる。「最少」と書かれることはほとんどない。

J=\sum^{N}_{i=1}\left{ u(x_i) - \bar{u}_i \right}^2

u(x)は解。しかし、これは未知だ。例えば、ばねと荷重の関係は、フックの法則があるので、一次式u(x)=a_0 + a_1 xとして仮定する。a_0,\,a_1は未知の定数である。 後々楽になるので、もう少し一般的に、行列の形式で、

\mathbb{p}(x)=\begin{Bmatrix}1 & x \end{Bmatrix}^T
\mathbb{a}=\begin{Bmatrix} a_0 & a_1 \end{Bmatrix}^T

のふたつのベクトルを使って、u(x)=\mathbb{p}^T(x) \mathbb{a}と表す。すると、二乗誤差和は

J(\mathbb{a}) = \sum^{N}_{i=1}\left{ \mathbb{p}^T(x_i) \mathbb{a} -\bar{u}_i \right}^2

さらに、

\mathbb{Q}=\begin{bmatrix} \mathbb{p}(x_1) & \mathbb{p}(x_2) & \cdots & \mathbb{p}(x_n) \end{bmatrix}^T
\bar{\mathbb{u}}=\begin{Bmatrix} \bar{u}_1 & \bar{u}_2 & \cdots & \bar{u}_n \end{Bmatrix}^T

を導入すると、

J(\mathbb{a})=(\mathbb{Q}^T \mathbb{a}-\mathbb{\bar{u}})^T (\mathbb{Q}^T \mathbb{a}-\mathbb{\bar{u}})

行列\mathbb{Q}は定数であることに注意してほしい。 Jを最小とする条件は、Ja_jで偏微分してゼロとなるという条件が得られる。すなわち、

\frac{\partial J(\mathbb{a})}{\partial \mathbb{a}}=2\left(\mathbb{Q}^T \mathbb{Q} \mathbb{a}-\mathbb{Q}^T \mathbb{\bar{u}}\right)= \mathbb{0}

ここで、丁寧に書いておくと、

\frac{\partial}{\partial \mathbb{a}}=\begin{Bmatrix}\displaystyle \frac{\partial}{\partial a_1} & \displaystyle \frac{\partial}{\partial a_2} & \cdots & \displaystyle \frac{\partial}{\partial a_m} \end{Bmatrix}^T

であり

\frac{\partial J(\mathbb{a})}{\partial \mathbb{a}}=\begin{Bmatrix}\displaystyle \frac{\partial J(\mathbb{a})}{\partial a_1} &\displaystyle \frac{\partial J(\mathbb{a})}{\partial a_2} &\cdots &\displaystyle \frac{\partial J(\mathbb{a})}{\partial a_m}\end{Bmatrix}^T

である。条件式を\mathbb{a}について解くと、

\mathbb{a}=(\mathbb{Q}^T \mathbb{Q})^{-1} \mathbb{Q}^T\mathbb{\bar{u}}

もとの仮定u(x)=\mathbb{p}^T(x) \mathbb{a}に代入して

u(x)=\mathbb{p}^T(x) (\mathbb{Q}^T \mathbb{Q})^{-1} \mathbb{Q}^T\mathbb{\bar{u}}

が得られる。上式には逆行列が含まれる。逆行列が求まる条件は、m個以上の節点が存在することと等価である。一次式を定めるためには、2つの点が必要なことと同じと思っていい。数値計算を行うとすれば、\mathbb{P}^T \mathbb{P}m \times mの行列なので、逆行列の計算そのものに必要な時間はわずかである。数式で求めることも可能であるが、nmが大きな場合は難しくなるだろう。

ここで、

\mathbb{\phi}(x)=\begin{Bmatrix} \phi_1(x) & \phi_2(x) & \cdots & \phi_n(x) \end{Bmatrix}^T

を導入し、

\mathbb{\phi}^T(x)=\mathbb{p}^T(x) (\mathbb{Q}^T \mathbb{Q})^{-1} \mathbb{Q}^T

とおくと、

u(x)=\mathbb{\phi}^T(x) \mathbb{\bar{u}}

のようにu(x)\mathbb{\phi}\mathbb{\bar{u}}の内積で表される。展開すれば、

u(x)=\phi_1(x) \bar{u}_1 + \phi_2(x) \bar{u}_2 + \cdots + \phi_n(x) \bar{u}_n

このように節点値\bar{u}_i\phi_i(x)の積和で解が表されるとき、\phi_i(x)を形状関数と呼ぶ (世間一般で、最小二乗近似の話をしているときに形状関数と呼ぶかは知らない。笑)。 ここで注意してもらいたいのは、\bar{u}_iそのものが未知であったとしても、 節点の位置x_iu(x)=\mathbb{p}^T(x) \mathbb{a}の仮定が定まっていれば、形状関数は求まるということだ。 つまり、節点位置が同じなら、実験を繰り返して\mathbb{\bar{u}}が変わったとしても、式()に含まれる(\mathbb{Q}^T \mathbb{Q})^{-1} \mathbb{Q}^Tは再計算する必要はない。 憶えておいて欲しい。

u(x)を2次式としたければ、u(x)=a_0+a_1 x + a_2 x^2と仮定する。すなわち、上記した\mathbb{p}(x)\mathbb{a}

\mathbb{p}(x)=\begin{Bmatrix}1 & x & x^2 \end{Bmatrix}^T
\mathbb{a}=\begin{Bmatrix} a_0 & a_1 &a_2 \end{Bmatrix}^T

と置きなおし、\mathbb{a}を求めればよい。




コメント

適当に書いて頂いて構いません。スパム対策があるので、書き込めない場合があります。また、ボタンを押した後にしばらく時間がかかります。

新規コメント(ラジオボタンで親コメント選択可)
お名前

現在、コメントはありません