主成分分析PCA(Principal Component Analysis),作用是:
聚類 Clustering:把複雜的多維數據點,簡化成少量數據點,易於分簇
降維:降低高維數據,簡化計算,達到數據降維,壓縮,降噪的目的
PCA 的目的就是找到一個低維映射空間,使得數據映射後方差最大。
理論實現:
首先對樣本空間爲 d d d 維全部的數據中心化,使得均值爲 0,即將所有的樣本與樣本均值相減獲得新的樣本:
x i = x i − μ
\mathbf { x } _ { i } = \mathbf { x } _ { i } - \mu
x i = x i − μ
也就是說轉換後:
1 N ∑ i = 1 N x i = 0 d
\frac { 1 } { N } \sum _ { i = 1 } ^ { N } \mathbf { x } _ { i } = 0_d
N 1 i = 1 ∑ N x i = 0 d
知識補充:
求向量 u 在向量 v 上的投影:
那麼根據上圖可以列出以下公式
u ′ = d ∣ v ∣ v d = ∣ u ∣ cos θ cos θ = u T ⋅ v ∣ u ∣ ∣ v ∣
\begin{aligned} u ^ { \prime } & = \frac { d } { | v | } v \\ d & = | u | \cos \theta \\ \cos \theta & = \frac { u^T \cdot v } { | u | | v | } \end{aligned}
u ′ d cos θ = ∣ v ∣ d v = ∣ u ∣ cos θ = ∣ u ∣ ∣ v ∣ u T ⋅ v
所以可以解出向量 u u u 在向量 v v v 上的投影 u ′ u^\prime u ′ 爲:
u ′ = u T ⋅ v ∣ v ∣ 2 v
u^\prime = \frac { u ^ T \cdot v } { | v | ^ { 2 } } v
u ′ = ∣ v ∣ 2 u T ⋅ v v
那麼將向量 v v v 所在直線視爲一維空間,那麼向量 u u u 映射在該維度的表示爲
u v = u T ⋅ v ∣ v ∣ = v T ⋅ u ∣ v ∣
u^v = \frac { u ^ T \cdot v } { | v | } = \frac { v ^ T \cdot u } { | v | }
u v = ∣ v ∣ u T ⋅ v = ∣ v ∣ v T ⋅ u
也就是說映射後的長度(有方向)成爲向量 u u u 映射在該維度的表示。
那麼現在求取映射後空間,先考慮映射到一維空間,也就是說向一個向量做投影,假如現在向向量 u 1 u _ { 1 } u 1 做投影。
那麼由於一開始的中心化操作,使得映射後均值仍然爲零:
1 n ∑ i = 1 n u 1 T ∣ u 1 ∣ x i = u 1 T ∣ u 1 ∣ ∑ i = 1 n 1 n x i = 0
\frac { 1 } { n } \sum _ { i = 1 } ^ { n } \frac { u _ { 1 } ^ { T } } { | u _ { 1 } | } \mathbf x _ { i } = \frac { u _ { 1 } ^ { T } } { | u _ { 1 } | } \sum _ { i = 1 } ^ { n } \frac { 1 } { n } \mathbf x _ { i } = 0
n 1 i = 1 ∑ n ∣ u 1 ∣ u 1 T x i = ∣ u 1 ∣ u 1 T i = 1 ∑ n n 1 x i = 0
那麼映射後的方差有:
1 n ∑ i = 1 n ( u 1 T ∣ u 1 ∣ x i − 0 ) 2 = 1 n ∑ i = 1 n u 1 T ∣ u 1 ∣ x i x i T u 1 ∣ u 1 ∣ = u 1 T ∣ u 1 ∣ 1 n ∑ i = 1 n x i x i T u 1 ∣ u 1 ∣ = u 1 T ∣ u 1 ∣ S u 1 ∣ u 1 ∣
\frac { 1 } { n } \sum _ { i = 1 } ^ { n } \left( \frac { u _ { 1 } ^ { T } } { | u _ { 1 } | } \mathbf x _ { i } - 0\right) ^ { 2 } = \frac { 1 } { n } \sum _ { i = 1 } ^ { n } \frac { u _ { 1 } ^ { T } } { | u _ { 1 } | } \mathbf x _ { i } \mathbf x _ { i } ^ { T } \frac { u _ { 1 } } { | u _ { 1 } | } = \frac { u _ { 1 } ^ { T } } { | u _ { 1 } | } \frac { 1 } { n } \sum _ { i = 1 } ^ { n } \mathbf x _ { i } \mathbf x _ { i } ^ { T } \frac { u _ { 1 } } { | u _ { 1 } | } =\frac { u _ { 1 } ^ { T } } { | u _ { 1 } | }S \frac { u _ { 1 } } { | u _ { 1 } | }
n 1 i = 1 ∑ n ( ∣ u 1 ∣ u 1 T x i − 0 ) 2 = n 1 i = 1 ∑ n ∣ u 1 ∣ u 1 T x i x i T ∣ u 1 ∣ u 1 = ∣ u 1 ∣ u 1 T n 1 i = 1 ∑ n x i x i T ∣ u 1 ∣ u 1 = ∣ u 1 ∣ u 1 T S ∣ u 1 ∣ u 1
其中 S S S 爲數據集的協方差矩陣:
S = 1 n ∑ i , j = 1 n x i T ⋅ x j
S = \frac { 1 } { n } \sum _ { i , j = 1 } ^ { n } \mathbf x _ { i } ^ { T } \cdot \mathbf x _ { j }
S = n 1 i , j = 1 ∑ n x i T ⋅ x j
現在想要映射在該一維空間後數據的方差最大,那麼該優化問題爲:
max u 1 u 1 T ⋅ S ⋅ u 1 s.t. ∥ u 1 ∥ 2 2 = 1
\begin{aligned} \max _ { u _ { 1 } } \quad & u _ { 1 } ^ { T } \cdot S \cdot u _ { 1 } \\ \text { s.t.} \quad & \left\| u _ { 1 } \right\| _ { 2 } ^ { 2 } = 1 \end{aligned}
u 1 max s.t. u 1 T ⋅ S ⋅ u 1 ∥ u 1 ∥ 2 2 = 1
其中爲了方便,將映射向量的長度定爲一作爲約束條件。爲了去掉這一約束條件,使用拉格朗日乘數法轉換該最優化問題:
max u 1 { u 1 T ⋅ S ⋅ u 1 + λ ( 1 − ∥ u 1 ∥ 2 2 ) }
\max _ { u _ { 1 } } \left\{ u _ { 1 } ^ { T } \cdot S \cdot u _ { 1 } + \lambda \left( 1 - \left\| u _ { 1 } \right\| _ { 2 } ^ { 2 } \right) \right\}
u 1 max { u 1 T ⋅ S ⋅ u 1 + λ ( 1 − ∥ u 1 ∥ 2 2 ) }
對於凸優化問題,在最優點出導數爲零,所以最優解的必要條件爲:
2 u 1 ⋅ S + λ ( − 2 u 1 ) = 0
2 u _ { 1 } \cdot S + \lambda \left( - 2 u _ { 1 } \right) = 0
2 u 1 ⋅ S + λ ( − 2 u 1 ) = 0
也就是說:
S u 1 = λ u 1
S u _ { 1 } = \lambda u _ { 1 }
S u 1 = λ u 1
可以看出 u 1 u _ { 1 } u 1 是協方差矩陣 S S S 的一個特徵向量,那麼現在代入到原最優化問題:
max u 1 u 1 T ⋅ λ ⋅ u 1 s.t. ∥ u 1 ∥ 2 2 = 1
\begin{aligned} \max _ { u _ { 1 } } \quad & u _ { 1 } ^ { T } \cdot \lambda \cdot u _ { 1 } \\ \text { s.t.} \quad & \left\| u _ { 1 } \right\| _ { 2 } ^ { 2 } = 1 \end{aligned}
u 1 max s.t. u 1 T ⋅ λ ⋅ u 1 ∥ u 1 ∥ 2 2 = 1
可以進一步轉換爲:
max u 1 λ s.t. ∥ u 1 ∥ 2 2 = 1
\begin{aligned} \max _ { u _ { 1 } } \quad & \lambda \\ \text { s.t.} \quad & \left\| u _ { 1 } \right\| _ { 2 } ^ { 2 } = 1 \end{aligned}
u 1 max s.t. λ ∥ u 1 ∥ 2 2 = 1
也就是說在約束條件下希望該特徵值最大。那麼推廣到多維空間映射,仍然適用。那麼最佳的多維空間則由 Top d ′ d^{\prime} d ′ 特徵值(最大的d ′ d^{\prime} d ′ 個特徵值)所對應的特徵向量構成。
那麼PCA的具體實現流程 :
1. let x ‾ = 1 N ∑ n = 1 N x n , and let x n ← x n − x ‾ , X T = [ x 1 , ⋯ , x N ] 2. calculate d ~ top eigenvectors w 1 , w 2 , … , w d ~ of X T X 3. return feature transform Φ ( x ) = W ( x − x ‾ )
\begin{aligned} & \text { 1. let }\overline { \mathbf { x } } = \frac { 1 } { N } \sum _ { n = 1 } ^ { N } \mathbf { x } _ { n } , \text { and let } \mathbf { x } _ { n } \leftarrow \mathbf { x } _ { n } - \overline { \mathbf { x } } , X^T = [\mathbf x_1,\cdots,\mathbf x_N] \\
& \text { 2. calculate } \tilde { d } \text { top eigenvectors } \mathbf { w } _ { 1 } , \mathbf { w } _ { 2 } , \ldots , \mathbf { w } _ { \tilde { d } } \text { of } \mathbf { X } ^ { T } \mathbf { X } \\
& \text { 3. return feature transform } \mathbf { \Phi } ( \mathbf { x } ) = \mathbf { W } ( \mathbf { x } - \overline { \mathbf { x } } ) \end{aligned}
1. let x = N 1 n = 1 ∑ N x n , and let x n ← x n − x , X T = [ x 1 , ⋯ , x N ] 2. calculate d ~ top eigenvectors w 1 , w 2 , … , w d ~ of X T X 3. return feature transform Φ ( x ) = W ( x − x )