固有値・固有ベクトルからPCAまでの流れ
1. 固有値・固有ベクトルとは
行列 Aに対して、
Av=λv
を満たすとき、
- λ を 固有値(Eigenvalue)
- v を 固有ベクトル(Eigenvector)
という。
意味としては、
行列 Aによる変換を受けても向きが変わらず、λ倍に伸び縮みする特別な方向
を表す。
2. 固有値を求める
定義式
Av=λv
を変形する。
Av−λv=0
(A−λI)v=0
ここで
I=[1001]
は単位行列である。
非ゼロベクトル
v=0
が存在するためには、
det(A−λI)=0
が成り立つ必要がある。
これを 特性方程式(Characteristic Equation)という。
特性方程式を解いて
λ1,λ2,…,λn
を得る。
これらが固有値である。
3. 固有ベクトルを求める
求めた固有値 λiを
(A−λiI)v=0
へ代入する。
すると
(A−λiI)x1x2⋮xn=00⋮0
という連立方程式が得られる。
これを解くことで
vi=x1x2⋮xn
を得る。
これが固有値 λiに対応する固有ベクトルである。
4. 検算する
求めた固有値・固有ベクトルが
Avi=λivi
を満たすことを確認する。
PCAへの接続
PCAでは、固有値・固有ベクトルをそのまま使うのではなく、さらに処理を行う。
5. 固有ベクトルを正規化する
固有ベクトル
v=x1x2⋮xn
の長さ(ノルム)を求める。
∥v∥=(x12+x22+⋯+xn2)1/2
長さが 1 になるように、固有ベクトルをノルムで割る。
u=∥v∥v
つまり
u=(x12+x22+⋯+xn2)1/21x1x2⋮xn
となる。
すると
∥u∥=1
となる。
正規化の意味
固有ベクトルは長さが異なっていても同じ方向を表す。
例えば
[11],[22],[100100]
はすべて同じ方向を向いている。
PCAでは固有ベクトルの「方向」だけを利用したいため、
u=∥v∥v
によって長さを 1 に揃える。
この正規化後のベクトル
u
を 単位固有ベクトル(Unit Eigenvector)または 主成分ベクトル(Principal Component Vector)と呼ぶ。
6. データを準備する
データ行列を
X=−x1T−x2T−⋮−xmT−
とする。
PCAでは通常、平均を引いて中心化する。
Xc=X−μ
7. 主成分得点を求める
中心化されたデータを主成分方向へ射影する。
1サンプルの場合
z=xTu
となる。
データ全体では
Z=Xcu
となる。
8. 主成分得点の意味
z=xTu
は、
データ xを主成分方向 uに射影した長さ
を表す。
つまり
z
は
主成分軸上での座標
である。
9. 次元削減
元々
x=x1x2⋮xn
という n次元データだったものを、
z
という少数の値で表現できる。
複数の主成分を使う場合は
W=[u1u2⋯uk]
を作り、
Z=XcW
を計算する。
PCA全体の流れ
データ X
↓
中心化
↓
共分散行列 Σ
↓
固有値分解
↓
固有値 λ
固有ベクトル v
↓
正規化
↓
単位固有ベクトル u
↓
Z = XcW
↓
主成分得点
↓
次元削減後のデータ
各記号の意味
| 記号 | 意味 |
|---|
| A | 行列 |
| v | 固有ベクトル |
| λ | 固有値 |
| I | 単位行列(Identity Matrix) |
| det | 行列式(Determinant) |
| u | 正規化後の固有ベクトル |
| X | 元データ |
| Xc | 中心化後のデータ |
| Z | 主成分得点 |
| W | 主成分ベクトルを並べた行列 |
本質
PCAは、
- 共分散行列を作る
- 固有値分解を行う
- 固有値が大きい固有ベクトルを選ぶ
- その方向へデータを射影する
ことで、
「データのばらつきが最も大きい方向を見つけ、その方向上の座標でデータを表現する」
手法である。