MATLAB,Python,Scilab,Julia比較 第2章 その51【正規方程式④】

MATLAB,Python,Scilab,Julia比較 第2章 その51【正規方程式④】 数値計算
MATLAB,Python,Scilab,Julia比較 第2章 その51【正規方程式④】

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

はじめに

正規方程式を導出するまでの説明。
今回こそ正規方程式を導出する。

登場人物

博識フクロウのフクさん

指差しフクロウ

イラスト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

ロードマップと前回の二乗和誤差の偏導関数【再掲】

太郎くん
太郎くん

まずはロードマップ。

正規方程式に至る道、二次形式、対称行列、二次形式の微分、グラム行列、二乗和誤差、正規方程式
フクさん
フクさん

そして、前回求めた二乗和誤差の偏導関数

\(
\nabla(Ax-b)^2=2A^TAx-2A^Tb
\)

最小化問題へ

フクさん
フクさん

最小二乗法の時と同じように、偏導関数を用いて最小化問題にする。
まぁ偏導関数の解が0になる部分が極小値だから、そこを探すってだけなんだけど。

太郎くん
太郎くん

ということは以下を元に\(x\)と解けばOK?

\(
2A^TAx-2A^Tb=0
\)

フクさん
フクさん

そうそう。

正規方程式

フクさん
フクさん

じゃ、上記の式を解いていこう。

\(
\begin{eqnarray}
2A^TAx-2A^Tb&=&0\\
A^TAx&=&A^Tb\\
x&=&(A^TA)^{-1}A^Tb
\end{eqnarray}
\)

太郎くん
太郎くん

式自体はわけわからんが、\(x\)について解けた!

フクさん
フクさん

最後に導出された式が、正規方程式になる。

正規方程式を使って何をする?

太郎くん
太郎くん

で、この正規方程式を使うと何ができるんだ???

フクさん
フクさん

さまざまな回帰分析が一撃で解けるようになる。
代表的なのは以下だな。

  • 単回帰分析(最小二乗法)
  • 重回帰分析
  • 多項式回帰分析
太郎くん
太郎くん

あ、そういえば、このシリーズの最初にそういうこと言ってたね。

太郎くん
太郎くん

ちなみにどんな感じで解くの?

フクさん
フクさん

単回帰分析を解く場合は以下のようにする。

単回帰分析(最小二乗法)は以下の最小化を満たすもの

\(
\displaystyle\sum_{i=1}^n\{(\alpha x_i+\beta)-y_i\}^2
\)

\((Ax-b)^2\)で最小化問題を解く場合はの各成分は以下となる。

\(
A=
\begin{bmatrix}
x_1 & 1\\
x_2 & 1\\
\vdots & \vdots\\
x_n & 1\\
\end{bmatrix},
\vec{x}=
\begin{bmatrix}
\alpha\\
\beta
\end{bmatrix},
\vec{b}=
\begin{bmatrix}
y_1\\
y_2\\
\vdots\\
y_n
\end{bmatrix}
\)

上記パラメータをを正規方程式に入れるだけで解が出る。

フクさん
フクさん

という感じだ。

太郎くん
太郎くん

これだけで出るんか!

フクさん
フクさん

ベクトル、行列演算が行えるツールや言語であれば一撃ってことだな。

太郎くん
太郎くん

ということは次回からは、実際にプログラミングしていくって感じか。

フクさん
フクさん

そうそう。

まとめ

フクさん
フクさん

まとめだよ。

  • 二乗和誤差の偏導関数を元に最小化問題へ。
  • 上記式を元に極小値を求める式へ。
    • これをxを求める式に変形したものが正規方程式。
  • 正規方程式がわかっていると、単回帰、重回帰、多項式回帰が一撃で解けるようになる。

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

コメント

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