バックナンバーはこちら。
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を求める式に変形したものが正規方程式。
- 正規方程式がわかっていると、単回帰、重回帰、多項式回帰が一撃で解けるようになる。
バックナンバーはこちら。
コメント