バックナンバーはこちら。
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
ロードマップ【再掲】
恒例のロードマップ再掲。
正規方程式のところになる。
一般化した二乗和誤差の数式の変形
まずは、二乗和誤差の数式の変形をやってみよう。
二乗和誤差の行列形式の数式は以下になる。
\(
L(x_1,\dots,x_n)=(A\vec{x}-\vec{b})^2
\)
これを変形していくってことだけど、何をどうすれば・・・。
普通に展開していくだけだな。
まぁ、ベクトル、行列である故のクセみたいなのはあるけど。
そのクセってのがわからないからどうすれば良いかわからないんだよ!
転置がところどころに出てくる程度だな。
ベクトルと方程式の関係性を意識するとそれほど違和感はないはずだ。
\(
\begin{eqnarray}
(Ax-b)^2&=&(Ax-b)^T(Ax-b)\\
&=&(\color{blue}{x^TA^T}-b^T)(Ax-b)\\
&=&x^T\color{red}{A^TA}x-2x^TA^Tb+b^Tb
\end{eqnarray}
\)
(Ax)^T=x^TA^T の証明
んー?
\(\color{blue}{x^TA^T}\)の部分って、なんでこうなるんだっけ??
たぶん、そこで引っかかるとは思ってた。
単純に\((Ax)^T=x^TA^T\)ってだけなのだが、
その部分だけを丁寧に書いてみよう。
\(
\begin{eqnarray}
(Ax)^T&=&\Bigg(
\begin{bmatrix}
a_{11} & \dots & a_{1n} \\
\vdots & \ddots & \vdots \\
a_{n1} & \dots & a_{nn} \\
\end{bmatrix}
\begin{bmatrix}
x_1 \\
\vdots \\
x_n \\
\end{bmatrix}\Bigg)^T\\&=&
\begin{bmatrix}
x_1a_{11} & \dots & x_na_{1n} \\
\vdots & \ddots & \vdots \\
x_1a_{n1} & \dots & x_na_{nn} \\
\end{bmatrix}^T\\&=&
\begin{bmatrix}
x_1 &\dots & x_n \\
\end{bmatrix}
\begin{bmatrix}
a_{11} & \dots & a_{n1} \\
\vdots & \ddots & \vdots \\
a_{1n} & \dots & a_{nn} \\
\end{bmatrix}\\&=&
x^TA^T
\end{eqnarray}
\)
ほう。なるほど!
確かに等しくなる!
あとは赤字の部分の説明もあるが、それは次回にしよう。
まとめ
まとめだよ。
- 一般化した二乗和誤差の数式の変形を実施。
- 上記の途中で行列の積に対する転置で一見すると特殊な変形がある。
- (Ax)^T=x^T A^T。
- 計算すると分かるが普通に等しい結果になる。
- (Ax)^T=x^T A^T。
バックナンバーはこちら。
コメント