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

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

バックナンバーはこちら。
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

誤差関数の最小値を求めるには?(2回目)

太郎くん
太郎くん

前回は、誤差関数の最小値を総当たりで求める話のあとに、
偏微分がどうのこうのってなったけど?

フクさん
フクさん

うん。
まずは誤差関数を再掲しておこう。

\(
\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}
\)

フクさん
フクさん

そして、\(a\)に於いての偏微分が0、\(b\)に於いての偏微分が0の部分が最小二乗法で欲しい\(a,b\)の条件となる。
式にするとこんな感じ。

\(
\displaystyle \frac{\partial L(a,b)}{\partial a}=0,\frac{\partial L(a,b)}{\partial b}=0
\)

太郎くん
太郎くん

出来てきたー偏微分ーーー!!

フクさん
フクさん

まぁ偏微分ではあるけど、ここでは普通の微分と捉えてOKだ。

太郎くん
太郎くん

普通の微分でもアウトなんだが・・・。

この偏微分は何を示している?

太郎くん
太郎くん

で、この偏微分は一体何を示しているの?

フクさん
フクさん

前回の\(a\)と\(b\)を総当たりで値を振ったときを思い出してほしいのだけど、
両方とも、2次関数的な軌跡を描いていたよね?

太郎くん
太郎くん

確かに2次関数的だった。

フクさん
フクさん

というわけで、その双方が最小値になった時がもっとも誤差が小さいときと言える。
図で説明するとこんな感じだな。

最小二乗法 aとbの値を振る、∂L(a,b)/∂a=0、∂L(a,b)/∂b=0
太郎くん
太郎くん

そっか。
微分の性質として、0になる点は極大値か、極小値になって、
最小二乗法に於いては必ず極小値になるってことなのか。
だから、偏微分して0が誤差が最も少ない点。
ってことになるんだな。

フクさん
フクさん

そうそう。

偏微分をどう解くのか

太郎くん
太郎くん

いや、ちょっと待って。
偏微分で誤差関数の最小値が求められるというのは理解できたけど、
そもそも具体的な値として求められるものなの?
なんか全然イメージ沸かない。

フクさん
フクさん

誤差関数自体はすでに求まっているので、
それに対して偏導関数を導出するだけだな。

太郎くん
太郎くん

で、その偏導関数の導出って・・・。

フクさん
フクさん

そこも含めて次回解説だな。

太郎くん
太郎くん

よろしく頼むーー!

まとめ

フクさん
フクさん

まとめだよ。

  • 誤差関数の最小値は偏微分を使用すると求まるはず。
  • a,bを振ったい場合の誤差関数の値は2次関数的になるので、極値は必ず極小値になる。
    • この極小値になるa,bを求めたい。

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

コメント

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