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

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

バックナンバーはこちら。
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次関数に於ける最小二乗法の誤差関数は以下。

\(
\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\)による偏微分

\(
\begin{eqnarray}
\displaystyle\frac{\partial L(a,b)}{\partial a}
&=&
\displaystyle\frac{\partial (a^2 \sum x_i^2 + b^2\sum 1 + \sum y^2 -2a\sum x_i y_i-2b\sum y_i+2ab\sum x_i)}{\partial a} \\
&=&
\displaystyle 2a\sum x_i^2 -2\sum x_i y_i + 2b\sum x_i=0\\
\displaystyle 2a\sum x_i^2 + 2b\sum x_i &=& 2\sum x_i y_i
\end{eqnarray}
\)

\(b\)による偏微分

\(
\begin{eqnarray}
\displaystyle\frac{\partial L(a,b)}{\partial b}
&=&
\displaystyle\frac{\partial (a^2 \sum x_i^2 + b^2\sum 1 + \sum y^2 -2a\sum x_i y_i-2b\sum y_i+2ab\sum x_i)}{\partial a} \\
&=&
\displaystyle 2b\sum 1 -2b\sum y_i + 2a\sum x_i=0\\
\displaystyle 2a\sum x_i + 2b\sum 1 &=& 2\sum y_i
\end{eqnarray}
\)

太郎くん
太郎くん

これでどうだ!

フクさん
フクさん

OK!正解だ!

太郎くん
太郎くん

項数が多いからややこしい部分有るけど、一個一個はそれほど難しい感じではないね。

フクさん
フクさん

そこは偏微分様様ってところだろう。

この後は?

太郎くん
太郎くん

で、偏導関数を求めたあとはどうするの?
いろいろ計算していく感じ?

フクさん
フクさん

まぁ計算するという意味では正解だが、
このままだとMATLAB等のツールの恩恵が得られにくい。
というわけでベクトル、行列の形式に変換してから計算にチャンレジだな。

太郎くん
太郎くん

どうするかわからんけど、ツールの力を借りるにも前提条件があるのね。

フクさん
フクさん

そういうことだね。
まぁ、これもそれほど難しくはない。

まとめ

フクさん
フクさん

まとめだよ。

  • 1次関数に於ける最小二乗法の誤差関数の偏導関数を求めた。
    • 項数が多く、ややこしい部分はあるが、一個一個はシンプル。
  • これをMATLAB等で簡単に演算させるためにベクトル、行列の形式に変形する必要がある。

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

コメント

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