equal_l2’s blog

※記載されている内容の正確性は保証しませんが、間違いを指摘していただければ直します。

最小二乗法(4) 多項式フィッティング

前:最小二乗法(3) 線形最小二乗法と非線形最小二乗法 - equal_l2’s blog
次:最小二乗法(5) 線形近似 - equal_l2’s blog

\def \vb {\vec{\beta}} \def \fxb {f(x_i,\vb)}今回は、次のような形のモデル関数\fxbについて、\vbを求める。
{\displaystyle \fxb=\sum_{k=0}^{d} \beta_k {x_i}^k}
このモデル関数は、d次の多項式である。

さて、正規方程式は次のようなものであった。
{\displaystyle
\sum_{i=1}^{n}\frac{\partial \fxb}{\partial \beta_j} y_i =
\sum_{i=1}^{n}\frac{\partial \fxb}{\partial \beta_j} \fxb
}

これに上の\fxbを代入すると、
\displaystyle{\frac{\partial \fxb}{\partial \beta_j}={x_i}^j}
より、
\begin{eqnarray}
\sum_{i=1}^{n}{x_i}^j y_i
&=& \sum_{i=1}^{n}{x_i}^j \sum_{k=0}^{d} \beta_k {x_i}^k \\
&=& \sum_{i=1}^{n} \sum_{k=0}^{d} \beta_k {x_i}^{j+k} \\
&=& \sum_{k=0}^{d} \sum_{i=1}^{n} \beta_k {x_i}^{j+k} \\
&=& \sum_{k=0}^{d} \beta_k \sum_{i=1}^{n} {x_i}^{j+k} \\
\end{eqnarray}


ここで、
{\displaystyle X_m = \sum_{i=1}^{n}{x_i}^m,Y_m=\sum_{i=1}^{n}{x_i}^m y_i}
とおくと、上の式は、
\begin{eqnarray}
Y_j
&=& \sum_{k=0}^{d} \beta_k X_{j+k} \\
&=& \beta_0 X_j + \beta_1 X_{j+1} + \cdots + \beta_d  X_{j+d}
\end{eqnarray}

これより、

  \left\{
    \begin{array}{l}
     \begin{eqnarray}
      Y_0 &=& \beta_0 X_0 + \beta_1 X_{1} + \cdots + \beta_d  X_{d} \\
      Y_1 &=& \beta_0 X_1 + \beta_1 X_{2} + \cdots + \beta_d  X_{1+d} \\
      &\vdots& \\
      Y_d &=& \beta_0 X_d + \beta_1 X_{d+1} + \cdots + \beta_d  X_{d+d} \\
     \end{eqnarray}
    \end{array}
  \right.
という連立方程式が得られる。

行列形式で書けば、

    \left(\begin{array}{c}{Y_0 \\ Y_1 \\ \vdots \\ Y_d }\end{array}\right) =
    
    \left(
    \begin{array}{cccc}
      X_0& X_1& \cdots& X_d& \\
      X_1& X_2& \cdots& X_{1+d}& \\
      \vdots& \vdots& \ddots& \vdots& \\
      X_d& X_{d+1}& \cdots& X_{d+d}& \\
    \end{array}
    \right)

    \left(\begin{array}{c}{\beta_0 \\ \beta_1 \\ \vdots \\ \beta_d }\end{array}\right)

あとは、これを\vbの各要素について解けばよい。


次回は、実際にd=1(線形近似)を導いてみる。

最小二乗法(3) 線形最小二乗法と非線形最小二乗法

前:最小二乗法(2) 一般的な正規方程式 - equal_l2’s blog
次:最小二乗法(4) 多項式フィッティング - equal_l2’s blog
最小二乗法は、モデル関数によって次の2つに分かれる。
\def \fxb {f(x_i,\vec\beta)}

線形最小二乗法

モデル関数が、「既知の関数とパラメータの積」の線形結合で表される関数(線形モデル関数)であるもの。
一般的には、
\displaystyle \fxb=\sum_{k=0}^{d} \beta_k g(x_i)
ただし、g(x_i)は任意の(パラメータ\vec\betaを含まない)関数である。

たとえば、\fxb=\beta_0 x_i + \beta_1 x_i^2とか、\fxb=\beta_0 \cos{x_i} + \beta_1 \sin{x_i}などである。

非線形最小二乗法

モデル関数が線形モデル関数以外であるもの。

たとえば、\fxb= \sin{\beta_0 x_i} + \cos{\beta_1 x_i}など。

ただし、一見すると非線形なものでも工夫次第で線形最小二乗法に帰結できるものもある。

指数関数

\fxb = \beta_0 e^{\beta_1 x_i}

\fxb=y_iとして両辺の自然対数を取ると、
\log{y_i} = \log{\beta_0} + \beta_1 x_i
となる。

\log{y_i}を新たなy_i\log{\beta_0}を新たな\beta_0として取ってやれば、
y_i=\beta_0 + \beta_1 x_i
となるから、線形最小二乗法で解ける。

三角関数

\fxb = \beta_0 \cos(\beta_1 + x_i)

展開して、
\fxb = \beta_0 (\cos\beta_1 \cos x_i - \sin\beta_1 \sin x_i )

\beta_0\cos\beta_1 , -\beta_0\sin\beta_1をそれぞれ\beta_0,\beta_1と置き直せば、
\fxb=\beta_0 \cos{x_i} + \beta_1 \sin{x_i}
となり、線形最小二乗法で解ける。

線形モデル関数は、あるパラメータで偏微分したときに他のパラメータが入り込まないので、線形最小二乗法は代数的な連立方程式として解ける。
しかし、非線形最小二乗法ではそうはいかず、数値的な解法に頼るしかない。

非線形最小二乗法はしばらく置いておいて、次回からは線形最小二乗法の中でも簡単でしかもよく使われる、モデル関数が多項式である場合を扱う。

最小二乗法(2) 一般的な正規方程式

前:最小二乗法(1) 最小二乗法の理念 - equal_l2’s blog
次:最小二乗法(3) 線形最小二乗法と非線形最小二乗法 - equal_l2’s blog

\def \vb {\vec{\beta}} \def \fxb {f(x_i,\vb)}
実際に、次の式を満たすようなf(x_i)を推定しよう。
S={\displaystyle \sum_{i=1}^{n}\bigl(y_i- f(x_i)\bigr)^2}={\displaystyle \sum_{i=1}^{n}{\epsilon_i}^2}=0

推定すべきこの関数f(x_i)モデル関数と呼ぶ。

全く制限がないとモデル関数は求めがたいので、制限を加える。

f(x_i)は、何かしらの既知の関数のパラメータを操作することで決めることにする。パラメータの数を(d+1)とする。
パラメータからなる(d+1)次元ベクトルを\vbとして、その第j成分を\beta_{j-1}とする。
つまり、\vb=\left(\begin{array}{c}{\beta_0 \\ \beta_1 \\ \vdots \\ \beta_d }\end{array}\right)

これに伴い、f(x_i)\vbに依存することを明確にするため、\fxbと書くことにする。

このとき、モデル関数は\fxb=\beta_0 e^{\beta_1 x_i}とか\fxb=\beta_0+\beta_1 x_iのような形になる。

さて、この制限下で前述の目的を満たすには、S=0の両辺を\beta_j偏微分してやって、
{\displaystyle \frac{\partial S}{\partial \beta_j}=0 \rm \hspace{10pt} for \hspace{2pt} all \hspace{2pt} \it j}
この方程式を、正規方程式という。

ここで、x_i,y_iは(定数であるから当然なのだが)\vbの要素で偏微分すると0になる。

したがって、先のSについての偏微分の式は、
\begin{eqnarray}
\frac{\partial S}{\partial \beta_j}
&=& \frac{\partial}{\partial \beta_j}\sum_{i=1}^{n}\bigl(y_i- \fxb\bigr)^2\\
&=& -2 \sum_{i=1}^{n}\frac{\partial \fxb}{\partial \beta_j}\bigl(y_i- \fxb\bigr)= 0
\end{eqnarray}
と変形できる。

もう少し変形すれば、
{\displaystyle
\sum_{i=1}^{n}\frac{\partial \fxb}{\partial \beta_j} y_i =
\sum_{i=1}^{n}\frac{\partial \fxb}{\partial \beta_j} \fxb
}
となる。

各パラメータの推定誤差\sigma(\beta_j)を求める。
全てのy_iが持つ同一の誤差\sigma_yは次のようにあらわされる。
\sigma_y=\displaystyle{\sqrt{\frac{\sum_{i=1}^{n}\bigl(y_i- f(x_i)\bigr)^2}{n-d-1}}}

誤差の伝播式より、
\begin{eqnarray}
\sigma(\beta_j)&=&\sqrt{\sum_{i=1}^{n}\left\{ {\sigma_y}^2 \left( \frac{\partial \beta_j}{\partial y_i} \right)^2\right\}}\\
&=& \sigma_y \sqrt{\sum_{i=1}^{n}\left\{ \left( \frac{\partial \beta_j}{\partial y_i} \right)^2\right\}}
\end{eqnarray}

次回は、モデル関数の性質について考える。

最小二乗法(1) 最小二乗法の理念

前:なし
次:最小二乗法(2) 一般的な正規方程式 - equal_l2’s blog

ずいぶん前に、最小二乗法を勉強してWordでまとめたのだが、数式が多いので重くなってしまう。
軽い状態で見られるようにこっちで書き直してみる。

最小二乗法とは

測定値の組\,(x_i,y_i)\,\,\,(i=1,\cdots,n)\,\,\,について、次の式を満たすf(x_i)を推定する手法の一つ。
y_i=f(x_i)+\epsilon_i
ここで、\epsilon_iは、推定値と真の値との誤差。
ただし、x_iは正確(誤差を持たない量)で、y_iのみが測定誤差\sigma_iを持つものとする。

最小二乗法の目標

最小二乗法においては、次の式を満たすf(x_i)を推定するのが目標である。
{\chi}^2 = \displaystyle \sum_{i=1}^{n} \frac{\bigl(y_i- f(x_i)\bigr)^2}{\sigma_i^2}=0

ここで、\sigma_iが全てのiについて同じ値\sigma_yであるとすれば、
\begin{eqnarray}
{\chi}^2 &=& \sum_{i=1}^{n} \frac{\bigl(y_i- f(x_i)\bigr)^2}{{\sigma_y}^2} \\ 
&=& \frac{1}{{\sigma_y}^2} \sum_{i=1}^{n} \bigl(y_i- f(x_i)\bigr)^2 =0
\end{eqnarray}

この場合は、結局は次の条件を満たせばよいことになる。

S={\displaystyle \sum_{i=1}^{n}\bigl(y_i- f(x_i)\bigr)^2}=0

次回以降は、\sigma_iが全てのiについて同じ値であるものとして、S=0を目指していく。

TeXを試す

はてなブログ\rm \TeXが使えるというので飛びついてみた。

\rm \TeXは一度勉強してみたかったしね。

これからは、プログラミングや、プログラムに使う数学のことを書いていきたい。

今回学んだこと

\rm "\TeX"は、はてなブログでは

[tex:\rm \TeX]

で即座に書ける。
(これに気付くまで\rm\ E\ の文字を下げようと悪戦苦闘したので書いておく)