pca
來自專欄機器學習筆記
pca 原
pca對應的是建模問題,是策略。
svd是一種矩陣分解的方法,是一種求解pca的演算法.
首先來看pca的formulation:
對原始特徵矩陣$X$,尋找M個方向(長度等於p
的主成分,兩兩正交), $X$在這M個方向上投影M個線性無關的新特徵$Z$,使得它們在新坐標軸上投影的方差最大。
我們可以吧這個問題拆分成一批有序的子優化問題:
- 求第一個主成分
如果想求第一個主成分,也就是$phi_1$和相應的$Z_1 = Xphi_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:矩陣 |