標籤:

pca

pca

來自專欄機器學習筆記

pca 原

pca對應的是建模問題,是策略。

svd是一種矩陣分解的方法,是一種求解pca的演算法.

首先來看pca的formulation:

對原始特徵矩陣$X$,尋找M個方向(長度等於p

的主成分,兩兩正交), $X$在這M個方向上投影M個線性無關的新特徵$Z$,使得它們在新坐標軸上投影的方差最大。

我們可以吧這個問題拆分成一批有序的子優化問題:

  • 求第一個主成分

如果想求第一個主成分,也就是$phi_1$和相應的$Z_1 = Xphi_1$,即求解如下優化問題:

maxlimits_{phi_1} frac{1}{n}sumlimits_i(sumlimits_j phi_{i1}x_{ij} )^2

s.t. sumlimits_jphi_{j1}^2 = 1

上面最大化的就是$Z_1$的樣本方差, 最優解即為第一個主成分$phi_1$,又稱為loading vector,表示特徵空間中數據分布最發散的一個方向。

  • 求第二個主成分

即求解問題

$maxlimits_{phi_2} frac{1}{n}sumlimits_i(sumlimits_j phi_{i2}x_{ij} )^2$

$s.t. sumlimits_jphi_{j2}^2 = 1$

$Z_2^T Z_1 = 0 $

這裡第二個約束條件$Z_2^T Z_1 = 0 $等價於$phi_2^Tphi_1 = 0$

以此類推,可以一直求到第M個主成分,pca的工作就結束了。

對於上面M個優化問題,我們可以使用梯度下降依次求最優解。但是,更經典的做法是使用基於矩陣分解的方法,批量的把這M的格化問題一起求解出來。

具體來說, 使用矩陣分解求解pca的兩個思路:

1. 對協方差矩陣做特徵根分解, 特徵根對應的是新空間的方差,特徵向量對應的是主成分。

2. 對原始的數據做svd分解,分解出來的有奇異矩陣就是主成分。

見下圖

![Alt text](./1538026578639.png)

下面具體介紹svd求解的過程。

## svd幾何意義

對於矩陣$A in R^{M*N}$,和向量$x in R^{M*1},yin R^{N*1}$,

可以通過對A進行SVD分解,來理清三者的關係:

假設$A = USigma V$,假設$xi = Vx,y = Ax$,則有

- $xi$在坐標系$V$上的投影是x,or,$x$經過矩陣V rotate變成了$xi$

- $xi$經過$Sigma$在坐標繫上放縮之後得到向量$zeta$,

- $zeta$在新的坐標系$U$的投影是y, or $zeta $經過U的rotate變成了y。

對於矩陣A的$Sigma$對角線上的元素,如果存在0,或者說很接近0的元素,就說明坐標系V的一些維度的投影沒有用到,那麼這些列可以捨棄,對應的U的坐標系的維度也可以扔掉,這樣A的維度就降為$A in R^{k*n}$。

svd的幾何意義說完了,具體有哪些應用呢?

使用svd求解pca的具體操作

幾個概念

第m個主成分上的樣本方差:

$Var(Z_m) = frac{1}{n}sumlimits_{i=1}^n z_{im}^2$

樣本的總方差:

$TV = sumlimits_{j=1}^p Var(X_j) = sumlimits_{j=1}^M Var(Z_j) $

PVE: 主成分對方差的貢獻度, 第m個主成分的pve是

$pve_{m} = frac{Var(Z_m) }{TV}$

數據預處理

計算主成分之前,要對x進行standardnize變換,中心化+除以標準差:

- 中心化是因為主成分代表的是variation的那些特徵,所以為了簡化計算,統一將x進行中心化,這樣計算樣本方差(中心矩)和二階矩就統一了。

- 除以標準差,是為了

- 理論上,是為了統一$Z_1,...$的scale。因為對$X_1,...$進行scale之後,由正交變換$Z _j= XV_j$得到的$Z_j$的標準差還是1,於是$lambda_j^2$的大小才能代表$Z _j$相對於其他$Z_i$的樣本variance 大下。

- 計算上:如果有原始特徵s的scale差別過大,可能會造成$phi$的值很接近0,並且還要計算$phi^2 $,可能會造成計算下溢。

svd 求解pca

對X進行SVD:

$X = USigma V$

令$A = XX$,由於A對稱半正定,

$A = VSigma^2 V^T = lambda_1^2 V_1V_1^T

+lambda_2^2 V_2V_2^T +dots

+lambda_p^2 V_pV_p^T $

svd的幾何性質:

對與矩陣X

$V_1,...$是X的right singular vectors,

對於矩陣A

$V_1,...$是A的(right&left)特徵向量,$lambda_1^2,...$是對應的特徵值,也就是特徵向量經過A這個線性變換之後scale的變化。

假設$lambda_1^2>=lambda_2^2>=dots>=lambda_p>=0$

再回到優化問題,為了求最大值

$frac{1}{n}sumlimits_i(sumlimits_j phi_{i1}x_{ij} )^2 = (Xphi_1)^TXphi_1 =phi_1^T(X^TX)phi_1 = phi_1^TAphi_1$

則有$phi_1 = V_1$,上式等於$ lambda_1^2/n$,

由$U$的正交性可知$Z_i,Z_j$是兩兩正交的,並且新的協方差矩陣為

$ZZ = V^TAV = Sigma^2$

extension

1.什麼時候使用pca

1. 特徵工程中-降維:當原始特徵中存在很強的線性相關性

2. 多維數據可視化:通過可視化的方式總覽數據點的分布情況。

2. 怎樣確定主成分個數?

有label時,使用pca+regression就可以用cross validation來挑選主成分個數。

一般情況下沒有label時,用作圖法:

橫軸:主元個數K

縱軸:pve

找拐點「elbow point」

參考資料

[1] 基於TensorFlow理解三大降維技術:PCA、t-SNE 和自編碼器

[2] the elements of statistical learning]

推薦閱讀:

TAG:矩陣 |