データサイエンスのための線形代数 第7回 ドット積

:::note info
本記事は数学講座[2.7 ドット積(内積)](https://www.matongxue.com/lessons/515/parts/553)を勉強して投稿したメモです。詳細は元の素晴らしい講座のページをチェックしてください。
:::

# :sunny:[まとめ]

ドット積計算の基本則

```math  
\begin{array}{c|c}
    \hline
    \\
    \quad 交換法則\quad&\quad \boldsymbol{a}\cdot\boldsymbol{b}=\boldsymbol{b}\cdot\boldsymbol{a}\quad\\
    \quad 定数倍結合法則\quad&\quad (k\boldsymbol{a})\cdot\boldsymbol{b}=k(\boldsymbol{b}\cdot\boldsymbol{a})\quad\\
    \quad 分配法則\quad&\quad (\boldsymbol{a}+\boldsymbol{b})\cdot\boldsymbol{c}=\boldsymbol{a}\cdot\boldsymbol{c}+\boldsymbol{b}\cdot\boldsymbol{c}\quad\\
    \\
    \hline
\end{array}
```

[ドット積計算の基本則](https://www.matongxue.com/lessons/515/parts/557)で素晴らしい幾何的解説があります。

# ユークリッド空間とベクトル空間

ユークリッド空間と比較して、ベクトル空間には**長さ**と**角度**という2つの重要な概念が欠けています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3327130/bbcc7225-2d4f-1eaf-32b6-621bb57e5a61.png)

:::note info
ユークリッド空間 $\mathcal{=}$ ベクトル空間$\mathcal{+}$**長さと角度**
:::

## 長さ

自然基底の場合は、ベクトルの長さは以下のように計算できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3327130/13509fff-6e83-c37e-8961-9e8965ac8043.png)

## 角度
自然基底の場合は、ベクトル間の角度は以下のように計算できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3327130/d5389ff4-a552-f72f-8873-24d5e6e4d407.png)

```math  
cos\theta=\displaystyle\frac{a_1b_1+a_2b_2}{||\boldsymbol{a_{}}||||\boldsymbol{b_{}}||},\quad \boldsymbol{a},\boldsymbol{b}\ne\boldsymbol{0}
```

# ドット積

上記の例によれば、長さと角度の計算をまとめと：

- 長さ($\boldsymbol{b}$も同じ)：$||\boldsymbol{a}||=\sqrt{a_1^2+a_2^2}=\sqrt{a_1a_1+a_2a_2}=\sqrt{\boldsymbol{a}\cdot\boldsymbol{a}}$
- 角度($\boldsymbol{a}$と$\boldsymbol{b}$角度)：$cos\theta=\displaystyle\frac{a_1b_1+a_2b_2}{||\boldsymbol{a_{}}||||\boldsymbol{b_{}}||}=\displaystyle\frac{\boldsymbol{a}\cdot\boldsymbol{b}}{||\boldsymbol{a_{}}||||\boldsymbol{b_{}}||}$

以下の演算方法は **ドット積(内積)** と呼びます：

```math  
\boldsymbol{a}\cdot\boldsymbol{b}=(\color{Magenta}{a_1},\color{Orange}{a_2})\cdot(\color{Magenta}{b_1},\color{Orange}{b_2})=\color{Magenta}{a_1b_1}+\color{Orange}{a_2b_2}
```

## 定義
更に$\mathcal{n}$次元に拡張すると、ドット積の定義は以下のようになります。
```math  
\boldsymbol{x}=\begin{pmatrix}x_1\\\vdots\\x_n\end{pmatrix}　\boldsymbol{y}=\begin{pmatrix}y_1\\\vdots\\y_n\end{pmatrix}
```
ベクトル$\boldsymbol{x}$と$\boldsymbol{y}$の**ドット積**`dot product`(内積`inner product`)の定義は：
```math  
\boldsymbol{x}\cdot\boldsymbol{y}=x_1y_1+\cdots+x_ny_n=\displaystyle\sum_{i=1}^{n}x_iy_i
```
:::note info
補足：ベクトル$\boldsymbol{x}$と$\boldsymbol{y}$は同じベクトル空間内ですので、次元数が同じです。
:::

- 長さ：$||\boldsymbol{a}||=\sqrt{\boldsymbol{a}\cdot\boldsymbol{a}}$
- 角度：$cos\theta=\displaystyle\frac{\boldsymbol{a}\cdot\boldsymbol{b}}{||\boldsymbol{a}||||\boldsymbol{b}||},\quad \boldsymbol{a},\boldsymbol{b}\ne\boldsymbol{0}$

これで、長さと角度は両方ともドット積で表せるので：

:::note info
ユークリッド空間 $\mathcal{=}$ ベクトル空間$\mathcal{+}$**ドット積**
:::

ドット積で長さと角度を計算するとに、一つの前提条件があります：**ベクトル座標が自然基底における座標です。**
もし非自然基底でしたら、どうなるかというと、以下のようになります：
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3327130/65b1e6b9-1f3c-bc11-089c-05f970d6d753.png)

## ドット積計算の基本則

```math  
\begin{array}{c|c}
    \hline
    \\
    \quad 交換法則\quad&\quad \boldsymbol{a}\cdot\boldsymbol{b}=\boldsymbol{b}\cdot\boldsymbol{a}\quad\\
    \quad 定数倍結合法則\quad&\quad (k\boldsymbol{a})\cdot\boldsymbol{b}=k(\boldsymbol{b}\cdot\boldsymbol{a})\quad\\
    \quad 分配法則\quad&\quad (\boldsymbol{a}+\boldsymbol{b})\cdot\boldsymbol{c}=\boldsymbol{a}\cdot\boldsymbol{c}+\boldsymbol{b}\cdot\boldsymbol{c}\quad\\
    \\
    \hline
\end{array}
```

[ドット積計算の基本則](https://www.matongxue.com/lessons/515/parts/557)で素晴らしい幾何的解説があります。

# ユークリッド距離とコサイン距離

- 長さ(ユークリッド距離、直線距離)：$||\boldsymbol{a}||=\sqrt{\boldsymbol{a}\cdot\boldsymbol{a}}$
- 角度(コサイン距離)：$cos\theta=\displaystyle\frac{\boldsymbol{a}\cdot\boldsymbol{b}}{||\boldsymbol{a}||||\boldsymbol{b}||},\quad \boldsymbol{a},\boldsymbol{b}\ne\boldsymbol{0}$

## ユークリッド距離

以下はベクトル$\mathcal{a}$と$\mathcal{b}$のユークリッド距離です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3327130/fffcaeab-2eb6-67c0-2113-c110d0129724.png)

実際の応用事例は：
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3327130/9a8f4107-6e89-572a-3a8c-a0fbc8eff826.png)

## コサイン距離

二つベクトルの角度が$\mathcal{0}$の時に、関係性が一番近いです。お互いに垂直になっている時に、関係性が一番遠いです。

![2.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3327130/fbc7752b-4e67-c02e-a377-22a9f480073e.gif)

:::note info
- 2本のベクトルの角度が小さいほど、関係性が密接である
- 2本のベクトルが直交している場合、お互いに関係がなく、独立している
:::

**コサイン距離が物事の関連性**を説明するため、非常に多くの応用があります。例えば、データマイニングにおいて、しばしばユーザーデータのコサイン距離を比較して、**ユーザーの類似性を判断すること**があります。

# 直交

**ドット積(内積)が 0 だったら、2 ベクトルは互いに直交する**といいます。

```math  
\boldsymbol{x}=\begin{pmatrix}x_1\\\vdots\\x_n\end{pmatrix}   
 \boldsymbol{y}=\begin{pmatrix}y_1\\\vdots\\y_n\end{pmatrix}
```
には、$\boldsymbol{x}\cdot\boldsymbol{y}=0 (ドット積)$であれば、互いに直交するといいます。

## 垂直

自然基底には、二つお互いに垂直になっているベクトルは以下の通りで：

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3327130/db4d7479-14c4-fada-0e2b-60d52481a040.png)

二つベクトルのドット積が$\mathcal{0}$です。
```math  
\begin{pmatrix}3\\0\end{pmatrix}\cdot\begin{pmatrix}0\\2\end{pmatrix}=0
```
## 零ベクトル

ここで、注意して欲しいのは、2 ベクトルが直交するとき、必ずしもベクトル同士が直角に交わっているとは限らないということです。
その例が、**零ベクトルを含む 2 ベクトルです**。両者は、なす角こそ定義されませんが、内積が必ずゼロになるので互いに直交します。
零ベクトルは同じ次元の任意のベクトルと$\color{Salmon}{直交}$しています。それはドット積が必ず0になるためです。例えば：
```math  
\begin{pmatrix}0\\0\end{pmatrix}\cdot\begin{pmatrix}1\\2\end{pmatrix}=0
```

:::note info
どちらのベクトルも**零ベクトルでない**場合、直交はこれら2つのベクトルが$\color{Salmon}{線形独立}$であることを示すこともできます。
:::

# 参考情報

https://cognicull.com/ja/bbzqhji8

https://cognicull.com/ja/46yb92ab