プログラミング

線形代数入門【Chapter5】行列とベクトルの掛け算

2018-07-09




codExaというサイトの線形代数の入門動画を見ながら、機械学習やデータ分析に必要な基礎知識の勉強をしています。
【Chapter1~Chapter4】まではこちら

線形代数入門

NumPyの実行結果ソースが必要な方はこちらからどうぞ。

【Chapter5】行列とベクトルの掛け算

Chapter4では行列と実数の掛け算でしたが、今回は行列とベクトルの掛け算です。

$$
\begin{bmatrix}
4&3 \\
0&1 \\
6&9 \\
\end{bmatrix}
\times
\begin{bmatrix}
5 \\
2 \\
\end{bmatrix}
=
\begin{bmatrix}
4 \times 5 + 3 \times 2 \\
0 \times 5 + 1 \times 2 \\
6 \times 5 + 9 \times 2 \\
\end{bmatrix}
=
\begin{bmatrix}
26 \\
2 \\
48 \\
\end{bmatrix}
$$

行列と行列の掛け算じゃないの?
と思ってしまいますが、Chapter3で

ベクトル=「n × 1」または「1 × n」の行列

と習ったんでしたね。

計算の公式

シンプルな、2行×2列の行列と2行×1列のベクトルの計算はこうなります。

$$
\begin{bmatrix}
a_{11} & a_{12} \\
a_{21} & a_{22} \\
\end{bmatrix}
\times
\begin{bmatrix}
b_1 \\
b_2 \\
\end{bmatrix}
=
\begin{bmatrix}
a_{11} b_1 + a_{12}b_2 \\
a_{21} b_1 + a_{22}b_2 \\
\end{bmatrix}
$$

もし2行×3行の行列と3行×1列の行列だったら…

$$
\begin{bmatrix}
a_{11} & a_{12} & a_{13} \\
a_{21} & a_{22} & a_{23} \\
\end{bmatrix}
\times
\begin{bmatrix}
b_1 \\
b_2 \\
b_3 \\
\end{bmatrix}
=
\begin{bmatrix}
a_{11} b_1 + a_{12}b_2 + a_{13}b_3 \\
a_{21} b_1 + a_{22}b_2 + a_{23}b_3 \\
\end{bmatrix}
$$

では、2行×3行の行列と2行×1列の行列だったらどうなるかというと…
これは計算できません。
行列とベクトルを計算する場合は、行列の列とベクトルの行の数が一致する必要があるのです。

$$
\begin{bmatrix}
a_{11} & a_{12} & a_{13} \\
a_{21} & a_{22} & a_{23} \\
\end{bmatrix}
\times
\begin{bmatrix}
b_1 \\
b_2 \\
\end{bmatrix}
=
Error!!
$$

例題

動画の身長から体重を予測する例題を考えてみます。

$$
予測計算式 h_Θ(x)=15+0.32x
$$
名前 身長 計算式 体重
A君 180cm 15 + 0.32 × 180 72.6kg
B君 176cm 15 + 0.32 × 176 71.32kg
C君 156cm 15 + 0.32 × 156 64.92kg
D君 160cm 15 + 0.32 × 160 66.2kg

これを行列とベクトルにして計算すると

$$
\begin{bmatrix}
1 & 180\\
1 & 176 \\
1 & 156 \\
1 & 160 \\
\end{bmatrix}
\times
\begin{bmatrix}
15 \\
0.32 \\
\end{bmatrix}
=
\begin{bmatrix}
72.6 \\
71.32 \\
64.92 \\
66.2 \\
\end{bmatrix}
$$

同じ結果になりました。
ところで、この計算って何やってるんでしょうか?

基準点からベクトル分移動したのが体重、となると思うのですが、2日ほど悩んだものの、うまく図にすることができませんでした。。。
図解できるよ!という方は教えてください。

もう1つ、別の例題を考えようとしたものの思いつかず・・・。
行列とベクトルを使った実用的な例があれば同じく教えてください。

-プログラミング
-, , ,

© 2024 そんなこと猫でもできる Powered by AFFINGER5