プログラミング

線形代数入門【Chapter1~Chapter4】




Udemyの実践 Python データサイエンスを購入したので見ていたのですが、行列の知識を遠い過去に置き忘れたので、numpyの説明から???に。
これじゃいかんということで、先に線形代数の基礎を勉強することにしました。

codExa(コデクサ)の動画が結構いい

codExaというサイトで機械学習用に線形代数の入門動画を見つけたので、これで勉強していこうと思います。
python+numpyは補講学習という形で、動画下にソースが書いてあります。
(numpy使うのはChapter4から)

線形代数入門は無料、その他有料動画もリーズナブル…。
あれ、Udemyいらなかったんじゃ…?

線形代数入門

Chapter1~3は説明なので、不要な方はChapter4からどうぞ。

Chapter 1 コース概要と紹介

コースの概要と簡単な説明。

  • これから機械学習を学ぼうと考えている方
  • 既に機械学習を勉強しているが線形代数に不安のある方

が対象とのこと。

【Chapter 2】Numpyのインストールと環境構築(オプション)

Numpyの説明とインストール方法の説明。
Windowsとmacのインストール方法が載っています。
Linuxの方はこちらをどうぞ。

【Chapter 3】行列とベクトル

行列とはなんぞや?の説明。

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

今明かされる衝撃の事実…!!という感じでした。
高校で勉強してた時、まったく理解してなかった。。。
ベクトル=矢印のイメージしかなかった。。。

【Chapter 4】行列の足し算とスカラー倍

ここから、実際に行列の計算について学習していきます。
Numpyの実行結果ソースはこちら。

Numpyでの行列の表し方

Numpyでは行列を1行で書きますが、数式の形に変換するとこんな感じ。
4行1列は、見た目と実際の数式の書き方で行と列の書き方が逆になるので、ちょっとわかりにくいかもしれません。

1行4列
$$
\text a =
\begin{bmatrix}
2&0&7&3 \\
\end{bmatrix}
$$

4行1列
$$
\text b =
\begin{bmatrix}
4 \\
4 \\
9 \\
7 \\
\end{bmatrix}
$$

2行4列
$$
\text c =
\begin{bmatrix}
2&4 \\
0&4 \\
7&9 \\
3&7 \\
\end{bmatrix}
$$

4行3列
$$
\text d =
\begin{bmatrix}
2&4&6 \\
0&4&9 \\
7&9&1 \\
3&7&7 \\
\end{bmatrix}
$$

行列の足し算

足し算は、それぞれの要素を足していきます。

$$
\begin{bmatrix}
2&4 \\
0&4 \\
7&9 \\
3&7 \\
\end{bmatrix}
+
\begin{bmatrix}
7&2 \\
3&0 \\
8&3 \\
1&5 \\
\end{bmatrix}
=
\begin{bmatrix}
2+7&4+2 \\
0+3&4+0 \\
7+8&9+3 \\
3+1&7+5 \\
\end{bmatrix}
=
\begin{bmatrix}
9&6 \\
3&4 \\
15&12 \\
4&12 \\
\end{bmatrix}
$$

行と列の数が一致しない場合は足すことができません。
Numpyで実行した場合はエラーになります。

$$
\begin{bmatrix}
2 \\
0 \\
\end{bmatrix}
+
\begin{bmatrix}
7&2 \\
3&0 \\
8&3 \\
\end{bmatrix}
=
Error!
$$

行列の掛け算(スカラー倍)

実数と行列をかける場合は、足し算と同じく各要素に実数をかけていきます。

$$
6
\times
\begin{bmatrix}
7&2 \\
3&0 \\
8&3 \\
\end{bmatrix}
=
\begin{bmatrix}
7 \times 6 &2 \times 6 \\
3 \times 6 &0 \times 6 \\
8 \times 6&3 \times 6 \\
\end{bmatrix}
=
\begin{bmatrix}
42&12 \\
18&0 \\
48&18 \\
\end{bmatrix}
$$

行列の割り算(スカラー倍)

割り算も掛け算と同様です。
3で割る、というのは1/3をかける、と表すことができます。

$$
\begin{bmatrix}
6&12 \\
1&9 \\
0&3 \\
\end{bmatrix}
\div 3
=
\begin{bmatrix}
6 \div 3 &12 \div 3 \\
1 \div 3 &9 \div 3 \\
0 \div 3&3 \div 3 \\
\end{bmatrix}
=
\begin{bmatrix}
6 \times 1/3 &12 \times 1/3 \\
1 \times 1/3 &9 \times 1/3 \\
0 \times 1/3&3 \times 1/3 \\
\end{bmatrix}
=
\begin{bmatrix}
2&4 \\
0.333333&3 \\
0&1 \\
\end{bmatrix}
$$

行列の四則演算

ちょっと複雑にして、以下の計算をしてみます。

$$
a =
\begin{bmatrix}
2 \\
1 \\
0 \\
3 \\
\end{bmatrix}
\quad
b =
\begin{bmatrix}
4 \\
2 \\
3 \\
1 \\
\end{bmatrix}
\quad
c =
\begin{bmatrix}
6 \\
0 \\
3 \\
12 \\
\end{bmatrix}
\quad
$$

$$
(5 \times a )- b + (c \div 6) =
$$
普通の計算式と同じく、カッコの中から計算すればOKです。

$$
\begin{bmatrix}
10 \\
5 \\
0 \\
15 \\
\end{bmatrix}
-
\begin{bmatrix}
4 \\
2 \\
3 \\
1 \\
\end{bmatrix}
+
\begin{bmatrix}
1 \\
0 \\
0.5 \\
2 \\
\end{bmatrix}
=
\begin{bmatrix}
7 \\
3 \\
-2.5 \\
16 \\
\end{bmatrix}
$$

まとめ

学生時代は、何のためにそれを計算するのか全く分からず、数学というものが嫌いでした。
(理由を教えられず穴を掘り続ける拷問的な)

でも必要があって勉強してみると、頭にすんなり入ってきますね。
まだまだ入り口部分ですが、勉強してスゲーデータ分析エンジニアになれたらいいなぁ。

-プログラミング
-, ,

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