これから機械学習をやる人のための大学初等レベルの線形代数

## 目次
- ベクトルから部分空間へ
- 固有値分解と特異値分解(SVD)
- データ行列の4つの基本的な部分空間
  - 列空間
  - 行空間
  - 零空間
  - 左零空間

## ベクトルから部分空間へ
### 部分空間
ある２つの条件を満たすベクトルの集合。2つの条件とは以下。

1. 部分空間にあるベクトルが含まれている場合は、原点とそのベクトルの点を通る直線に対応するすべてのベクトルもまた部分空間に含まれること
2. 部分空間に２つのベクトルが含まれるならば、それらの２つのベクトルの線形結合でできる全てのベクトルも部分空間に含まれること

部分空間は、**基底ベクトル**の集合が張るベクトル空間(Span)として定義することができます。
Spanとは「あるベクトルの集合のの元の全ての線形結合から成るベクトル空間」の意味の専門用語です。

### 階数(rank)
ランクは部分空間の１つな重要な特性です。
ランクは部分空間における自由度の大きさを表します。線形独立な基底の数です。
例えば、直線はランク１、平面はランク２に相当します。

## 固有値分解と特異値分解(SVD)
正方行列→固有値、固有ベクトルをもっている
矩形行列→特異値、左特異ベクトル、右特異ベクトルをもっている

### 固有ベクトル
$A$を$n \times n$行列とする。
$A{\bf v} = \lambda{\bf v}$となるベクトル${\bf v}$およびスカラ$\lambda$が存在する場合、${\bf v}$を固有ベクトルといい、$\lambda$を行列$A$の固有値といいます。

### 特異ベクトル
$A$を矩形行列とする。
もしベクトル${\bf u}$と${\bf v}$、そしてスカラ$\sigma$があり、$A{\bf v} = \sigma{\bf u}$と$A^T{\bf u} = \sigma{\bf v}$を満たすとき、${\bf u}$は行列$A$の*左特異ベクトル*、${\bf v}$は行列$A$の*右特異ベクトル*であり、$\sigma$は行列$A$の*特異値*となります。

### 行列のSVD(特異値分解）
行列のSVDは次のようになります。
$$
A = U\Sigma V
$$
ここで、行列$U$の列は入力空間の正規直交基底に、行列$V$の列は出力空間の正規直交基底になります。
$\Sigma$はその対角成分に特異値を含んでいる対角行列です。$U$, $V$は直交行列です。

詳しく書くと以下のようになります。

```math
A = (\boldsymbol{u}_1, \boldsymbol{u}_2, \cdots, \boldsymbol{u}_n)
\begin{pmatrix}
\sigma_1 &          &        &          \\
         & \sigma_2 &        &          \\
         &          & \ddots &          \\
         &          &        & \sigma_n
\end{pmatrix}
\begin{pmatrix}
\boldsymbol{v}_1^{\mathrm{T}} \\
\boldsymbol{v}_2^{\mathrm{T}} \\
\vdots \\
\boldsymbol{v}_n^{\mathrm{T}}
\end{pmatrix}
```

$A$が実行列の場合、すべての特異値および特異ベクトルが実数値にまします。特異値は正、負、ゼロのいずれかの値を取ります。

ある行列から計算された特異値を、その大きさの順に並べた集合は**スペクトル**と呼ばれ、行列の性質についてたくさんのことを明らかにします。

例えば、特異値同士のさは、線形方程式の解がどのくらい安定しているかに影響し、また絶対値をとった最大/最小特異値の比(条件数, condition number)は、反復ソルバーが解をどれくらい迅速に見つけることができるかに影響します。

## データ行列の4つの基本的な部分空間
行列を詳しく調べるためのもう１つの有用な方法は、４つの基本的な部分空間、すなわち列空間、行空間、零空間、および左零空間を使用することです。

これら４つの部分空間は、$A$や$A^T$を含む線形システムに対する解を完全に特徴付けます。
データ行列(行がデータ点で、列が特徴量となる矩形行列)の場合、4つの基本部分空間は、データおよび特徴量に関連させて理解することができます！

### ■ 列空間
##### 数学的な定義
重みベクトル${\bf w}$を変えながら構成される、${\bf s} = A{\bf w}$を満たす出力ベクトル${\bf s}$の集合。
##### 数学的な解釈
列のすべての可能な線形結合。
##### データの解釈
観測された特徴量を使用し、線形的に予測することができる結果のすべて。ベクトル{\bf w}には各特徴量の重みが含まれている。
##### 基底
非ゼロ特異値に対応する左特異ベクトル（行列$U$の列の部分集合）。

### ■ 行空間
##### 数学的な定義
重みベクトル${\bf u}$を変えながら構成される、${\bf r} = {\bf u}^T A$を満たす出力ベクトル${\bf r}$の集合。
##### 数学的な解釈
行のすべての可能な線形結合。
##### データの解釈
行空間内に存在するベクトルは、すでに手元にある既存のデータ点の線形結合として表現される。
したがって、これは既存のデータ点の線形結合から成るという意味で「非新規」データが作る空間とも解釈できる。
ベクトル${\bf u}$には、線形結合の際に乗算される各データ点の重みが含まれている。
##### 基底
非ゼロ特異値に対応する右特異ベクトル（行列$V$の列の部分集合）。

### ■ 零空間
##### 数学的な定義
$A{\bf w} = 0$を満たす入力ベクトル${\bf w}$の集合。
##### 数学的な解釈
$A$のすべての行に直交するベクトルの集合。
零空間は行列$A$によって${\bf 0}$へと潰される。
$A{\bf w} = {\bf y}$の解空間にいつでも足し込める「飾り」のようなもの。
##### データの解釈
既存のデータ点の線形結合として表現できない「新しいデータ点」。
##### 基底
ゼロ特異値に対応する右特異ベクトル（$V$の残りの列）。

### ■ 左零空間
##### 数学的な定義
${\bf u}^T A= 0$を満たす入力ベクトル${\bf u}$の集合。
##### 数学的な解釈
$A$のすべての列に直交するベクトルの集合。
左零空間は列空間と直交する。
##### データの解釈
既存の特徴量ベクトルの線形結合によって表現できない「新規の特徴量ベクトル」。
##### 基底
ゼロ特異値に対応する左特異ベクトル（$U$の残りの列）。

## まとめ

良いモデリングと予測モデルの構築のためには、データや特徴量が新規でないことは良いことです。

**完全な列空間**とは、特徴量の集合が任意のターゲットベクトルをモデル化するのに十分な情報を含むことを意味します。**完全な行空間**とは、異なるデータ点が、特徴空間のすべての端点をカバーするほど十分散らばっていることを意味します。

気をつけなければならないのは、**零空間**と**左零空間**にそれぞれ含まれている新規のデータ点と特徴量です。

あるデータの線形モデルを構築する場合には、**零空間**は「新規」データ点の部分空間とみなすことができます。データの新規性は、この文脈では良いことではありません。

新規データ点は、学習用データセットによって線形に表現できないデータです。

同様に、**左零空間**には、既存の特徴量の線形結合として表現できない新規特徴量が含まれています。

## 参考文献
[機械学習のための特徴量エンジニアリング](https://www.amazon.co.jp/%E6%A9%9F%E6%A2%B0%E5%AD%A6%E7%BF%92%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AE%E7%89%B9%E5%BE%B4%E9%87%8F%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E3%83%AA%E3%83%B3%E3%82%B0-%E2%80%95%E3%81%9D%E3%81%AE%E5%8E%9F%E7%90%86%E3%81%A8Python%E3%81%AB%E3%82%88%E3%82%8B%E5%AE%9F%E8%B7%B5-%E3%82%AA%E3%83%A9%E3%82%A4%E3%83%AA%E3%83%BC%E3%83%BB%E3%82%B8%E3%83%A3%E3%83%91%E3%83%B3-Alice-Zheng/dp/4873118689)