バックナンバーはこちら。
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
ロードマップ【再掲】
恒例のロードマップの再掲。
二乗和誤差のところだね。
今回はやべぇ回な気がする。
そこまで警戒しなくても・・・。
複雑さはほとんどないと思うよ。
信用できん・・・。
多変量って?
で、そもそも多変量って何?
言い換えると多変数だな。
何も情報が増えてないのだけど・・・。
まぁ簡単に言うと、入力が複数になったってだけだな。
複数になったことで多変量。
多変量だからベクトルで表現できる。
って寸法だ。
ここでベクトルがでてくるのか・・・。
まぁベクトルがあるからこそ楽に扱えるんだけどね。
二乗和誤差を多変量で表現
二乗和誤差を多変量で表現すると以下になる。
関数\(f\)が求めたい線で、\(y_i\)が実際に観測できた値。
\(
L(x_1,\dots,x_m)=\displaystyle\sum_{i=1}^n\{f(x_{1i},\dots,x_{mi})-y_i\}^2
\)
あれ?
これだけ?
思ったよりもシンプルだな。
これだけ。
次に、左辺をベクトル、行列で表現する。
これが一般化だな。
少しややこしいが、
\(A\)が入力変数(または説明変数)をまとめた行列
\(\vec{x}\)が各係数をまとめたベクトル
\(b\)が出力変数(または目的変数)をまとめたベクトル
注意点としては、ベクトルの二乗をしている部分は厳密には内積と同じになる。
\(
L(x_1,\dots,x_n)=(A\vec{x}-\vec{b})^2
\)
ベクトル、行列を具体的にすると?
ベクトル、行列の表現がよくわからん。
その場合、逆に具体化する。
以前までやったた一次関数を扱う場合、\(A,\vec{x},\vec{b}\)は以下になる。
\(
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}
\)
うーん、じっくり読んでみると・・・。
確かに、表現が変わっただけで、普通の最小二乗法の誤差関数と同じ形なのかー。
そうそう。
扱う方程式の項数が増えれば、
それに合わせて行列\(A\)の列と
ベクトル\(\vec{x}\)の要素が増える感じだ。
なるほど。
項数が増えることは変数が増えるってことだから、
これで多変量ってのに対応できたことになるのか。
ここまで来たら、今までの知識を統合してあとは正規方程式を求めるのみだな。
まとめ
まとめだよ。
- 多変量について説明。
- いっぱい変数あるってこと。
- 二乗和誤差を多変量で表現。
- ベクトル、行列で表現するってこと。
- 一般化した後に具体化して確認。
バックナンバーはこちら。
コメント