MATLAB,Python,Scilab,Julia比較 第2章 その2【最小二乗法①】

MATLAB,Python,Scilab,Julia比較 第2章 その2【最小二乗法①】 数値計算
MATLAB,Python,Scilab,Julia比較 第2章 その2【最小二乗法①】

バックナンバーはこちら。
https://www.simulationroom999.com/blog/compare-matlabpythonscilabjulia2-backnumber/

はじめに

まずは最もシンプルな回帰分析である、
1次関数の最小二乗法についての説明をする。

登場人物

博識フクロウのフクさん

指差しフクロウ

イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1

エンジニア歴8年の太郎くん

技術者太郎

イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1

1次関数の最小二乗法

フクさん
フクさん

まずは1次関数の最小二乗法から説明していこう。
これはもっともシンプルな回帰分析と言える。

太郎くん
太郎くん

最小二乗法は、名前は知ってるけど、
具体的に何してるとかはわからないんだよなー。

フクさん
フクさん

前回の、複数のプロットを元に最もそれらしい線を引く
ってのを実現しているものだな。

太郎くん
太郎くん

その「最もそれらしい線」っていうのをどう特定しているのか?
ってところがわからん。

最もそれらしい線の特定方法

フクさん
フクさん

「最もそれらしい線」の特定方法は、
各サンプリングとの誤差が最小となる線だな。
以下のイメージだ。

最小二乗法 誤差が最小、誤差が最小
太郎くん
太郎くん

まぁ、言いたいことはわかる。

フクさん
フクさん

そして、「誤差が最小」という部分だが、
単純に引き算で求めると、サンプリングと線の位置関係が上か下かで符号が逆転してしまう。
それを抑制するために「誤差の二乗の和が最小になる線」を特定することになる。

太郎くん
太郎くん

そっか。
二乗にすれば、符号の問題は無くなるもんね。
それに、こういうことをするから最小二乗法って名前なのか。

フクさん
フクさん

そうそう。

誤差関数

フクさん
フクさん

そして、「誤差の二乗の和が最小になる線」を求める際に最小を目指すための関数を誤差関数と呼ぶのだけど、
1次関数の最小二乗法にとっての誤差関数を特定する必要がある。

太郎くん
太郎くん

どう特定するの?

フクさん
フクさん

まず、以下が誤差が最小の関数であると仮定する。

\(ax+b=y\)

太郎くん
太郎くん

普通の一次関数だね。

フクさん
フクさん

サンプリングした\((x,y)\)を元に\((a,b)\)を求めたいので、
最小化したい誤差関数\(L\)を求める。

\(
\begin{eqnarray}
L(a,b)&=&\displaystyle\sum_{i=0}^n\{y_i -(ax_i +b)\}^2 \\
&=&\displaystyle a^2\sum x_i^2+nb^2+\sum y_i^2-2a\sum x_i y_i -2b\sum y_i +2ab\sum x_i
\end{eqnarray}
\)

太郎くん
太郎くん

なんかややこしいことになっているような・・・。

フクさん
フクさん

一見するとややこしいかもしれないが、
これが最終的にはシンプルになる。

太郎くん
太郎くん

そうなの?

太郎くん
太郎くん

あと、このシリーズってベクトルとか、行列をいい感じに使って
計算を楽にしよう
としてると思ったのだけど、
今のところ、ベクトルも行列も出てきてないね。

フクさん
フクさん

それもすぐ出てくる。
まぁ行列で表現するが故にシンプルになるんだけど。

太郎くん
太郎くん

まぁ、そこは期待して聞いておこう。

nb^2について

太郎くん
太郎くん

さっきの誤差関数の中に\(nb^2\)ってのがいたけど、
そんなのが出るような式だったっけ?

フクさん
フクさん

あー、あれは以下の変形をした結果だな。

\(
b^2\sum 1=nb^2
\)

太郎くん
太郎くん

なぜ、これがイコールで結ばれるのかがわからん・・・。

フクさん
フクさん

\(\sum 1\)って丁寧に書くと以下になる。

\(\displaystyle\sum_{i=1}^5=1+1+1+1+1=5\)

太郎くん
太郎くん

あ、そっか。
n個の1の和だから、nになるのか。

フクさん
フクさん

そうそう。

まとめ

フクさん
フクさん

まとめだよ。

  • 最もシンプルな回帰分析である1次関数の最小二乗法の解説開始。
  • 最小二乗法の理屈は「誤差の二乗の和が最小になる線」を求める。
  • 誤差が最小になる関数を誤差関数Lとして定義。
    • 1次関数に於いて最小になる誤差関数を求めた。
    • 後々、シンプルな式になる予定。

バックナンバーはこちら。

コメント

タイトルとURLをコピーしました