1. 主成分基本思想
主成分基本思想:在主成分分析中,首先對給定數據進行規范化,使得數據每一個變量的平均值維0,方差為1,之后對數據進行正交變換,原來由線性相關變量表示的數據,通過正交變換變成由若干個線性無關的新變量表示的數據。新變量是可能的正交變換中變量的方差的和最大的,方差表示了新變量上信息的大小,將新變量依次稱為第一主成分,第二主成分等
通過主成分分析,可以利用主成分近似地表示原始數據,這可理解為發現數據的'基本結構',也可以把數據由少數主成分表示,這可理解為數據降維
2. 總體主成分定義
\(假設X = {(x_1,x_2,x_3,...,x_m)}^T是m維隨機變量,其均值向量為\mu\),$$\mu = E(X) = {(\mu_1,\mu_2,...,\mu_m)}^T$$
\(協方差矩陣是\xi\),$$\xi = cov(x_i,x_j) = E[(x_i-\mu){(x_j-\mu)}^T]$$
\(考慮由m維隨機變量x到m維隨機變量y = {(y_1,y_2,...,y_m)}^T的線性變換\)
其中\(a_i^T = (a_{1i},a_{2i},...,a_{mi})\)
由隨機變量的性質可以知道:
下面給出總體主成分的定義
定義(總體主成分):給定一個上面\(y_i = a_i^TX = a_{1i}x_1+a_{2i}x_2+...+a_{mi}x_m\)的線性變換,如果滿足下列條件:
- (1)系數向量\(a_i^T是單位向量,即a_i^T a_i = 1\)
- (2)\(變量y_i與y_j互不相關,即它們的協方差為0\)
- (3)\(變量y_1是X的所有線性變換中方差最大的;y_2是與y_1不相關的X的所有線性變換中方差最大的;\) \(一般地y_i是與y_1,y_2,...,y_{i-1}都不相關的X的所有線性變換中方差最大的;\) \(這時分別稱y_1,y_2,...,y_m為X的第一主成分、第二主成分、...、第m主成分\)
3. 樣本均值和方差
假設對m維隨機變量\(X={(x_1,x_2,...,x_m)}^T\)進行n次獨立觀測,\(x_1,x_2,...,x_n\)表示觀測樣本,其中\(x_j={(x_{1j},x_{2j},...,x_{mj})}^T\)表示第j個觀測樣本,\(x_{ij}表示第j個觀測樣本的第i個變量\)
給定樣本矩陣X,可以估計樣本均值,以及樣本協方差,樣本均值向量$$\tilde x = \frac{1}{n}\sum_{j=1}^nx_j$$
樣本方差$$S = \frac{1}{n-1}\sum_{j=1}^n(x_{ik} - \tilde x_i)(x_{jk}-\tilde j)$$
3.1 樣本方差推導
樣本方差公式$$S = \frac{1}{n-1}\sum_{i=1}^n(x_i-\mu_i)^2$$
擴展開來得到$$S = \frac{1}{n-1}[(X-\frac{1}{n}X^TI_nI_n^T)^T(X-\frac{1}{n}X^TI_nI_n^T)]$$
令\(H = I_n - \frac{1}{n}I_nI_n^T\)得$$S = \frac{1}{n-1}X^THX$$
其中H為等冪矩陣HH=H和中心矩陣\(H_n*I_n = 0\)
4. PCA求解流程
- (1)數據歸一化,均值為0,方差為1
- (2)計算協方差矩陣
- (3)計算協方差矩陣的特征值和特征向量
- (4)將特征值從大到小排序
- (5)保留最上面的N個特征向量
- (6)將數據轉換到上述N個特征向量構建的新空間中
4.1 python實現PCA
def pca(dataMat, topNfeat=9999999):
meanVals = mean(dataMat, axis=0)
meanRemoved = dataMat - meanVals #remove mean
covMat = cov(meanRemoved, rowvar=0)
eigVals,eigVects = linalg.eig(mat(covMat))
eigValInd = argsort(eigVals) #sort, sort goes smallest to largest
eigValInd = eigValInd[:-(topNfeat+1):-1] #cut off unwanted dimensions
redEigVects = eigVects[:,eigValInd] #reorganize eig vects largest to smallest
lowDDataMat = meanRemoved * redEigVects#transform data into new dimensions
reconMat = (lowDDataMat * redEigVects.T) + meanVals
return lowDDataMat, reconMat
5. PCA最小平方誤差理論推導
PCA求解其實是尋找最佳投影方向,即多個方向的標准正交基構成一個超平面。
理論思想:在高維空間中,我們實際上是要找到一個d維超平面,使得數據點到這個超平面的距離平方和最小
假設\(x_k\)表示p維空間的k個點,\(z_k\)表示\(x_k\)在超平面D上的投影向量,\(W = {w_1,w_2,...,w_d}\)為D維空間的標准正交基,即PCA最小平方誤差理論轉換為如下優化問題$$z_k = \sum_{i=1}^d (w_i^T x_k)w_i---(1)$$
注:\(w_i^Tx_k\)為x_k在w_i基向量的投影長度,\(w_i^Tx_kw_i\)為w_i基向量的坐標值
求解:
\(L = (x_k - z_k)^T(x_k-z_k)\)
\(L= x_k^Tx_k - x_k^Tz_k - z_k^Tx_k + z_k^Tz_k\)
由於向量內積性質\(x_k^Tz_k = z_k^Tx_k\)
\(L = x_k^Tx_k - 2x_k^Tz_k + z_k^Tz_k\)
將(1)帶入得$$x_k^Tz_k = \sum_{i=1}^dw_i^Tx_kx_k^Tw_i$$
根據約束條件s.t.得$$z_k^Tz_k = \sum_{i=1}^dw_i^Tx_k^Tx_kw_i$$
根據奇異值分解$$\sum_{i=1}^dw_i^Tx_kx_k^Tw_i = tr(W^Tx_k^Tx_kW)$$
等價於帶約束得優化問題:$$argmaxtr(W^TXX^TW)$$
最佳超平面W與最大方差法求解的最佳投影方向一致,即協方差矩陣的最大特征值所對應的特征向量,差別僅是協方差矩陣\(\xi\)的一個倍數
5.1 定理
注:X為(n,p),Z為(n,q),q < p,w為(p,q)
該定理表達的意思也就是平方差理論,將降維后的矩陣通過W^T投影回去,再與X計算最小平方差,值越小說明信息損失越少
\(\phi\)目標函數最小時,W為X的前q個特征向量矩陣且\(Z=W^TX\)
以上優化可以通過拉格朗日對偶問題求得,最終也會得到$$argmaxtr(W^TXX^TW)$$
6. 核PCA推導
核函數:設X是輸入空間(\(R^n\)的子集或離散子集),又F為特征空間(希爾伯特空間),如果存在一個從X到F的隱射$$\phi (X):X -> F$$使得對所有x,z\in X,函數K(x,z)滿足條件$$K(x,z) = \phi (x)\bullet \phi (z)$$
下面推導F投影到的主成分定義的平面,根據F樣本方差的特征值分解得(為推導方便去掉前面的(\(\frac{1}{n-1}\))$$F^THFV_i = \lambda _i V_i$$由於H為等逆矩陣,則$$F^THHFV_i = \lambda _i V_i$$
由於想得到F很難,我們換一種思路將求F轉移求K上,根據AA^T與A^TA的關系:非零特質值相同,得到$$HFF^THU_i = \lambda _iU_i $$
兩邊同時乘以\(F^TH\)得到$$F^THHFF^THU_i = \lambda _iF^THU_i$$
從上式可以得到\(F^THU_i\)為\(F^THHF\)的特征向量
將\(F^THU_i\)進行歸一化$$U_{normal} = \frac{F^THU_i}{{||U_i^THFF^THU_i||}_2}$$
由於\(HFF^TH = HKH = \lambda _i\),則$$U_{normal} = \lambda ^{-\frac{1}{2}}F^THU_i$$
F投影到\(U_normal\)定義的平面$$P = F_{center} U_{normal}$$
附:奇異值分解
奇異值分解是一個能適用於任意矩陣的一種分解方法:$$A = U\xi{V}^T$$
假設A是一個MN的矩陣,那么U就是MM的方陣(里面的向量是正交的,U里面向量為左奇異向量),\(\xi\)為MN的實數對角矩陣(對角線以外的元素都是0,對角線上的元素為奇異值),
\(V^T\)是一個NN的矩陣(里面的向量是正交的,V里面的向量稱為右奇異向量)
再結合特征值分解:$$(A^T\bullet{A})\bullet{V_i} = \lambda{_i}\bullet{V_i}$$
上面得到的\(V_i\)就是奇異值分解種的右奇異向量,\(\lambda{_i}\)為特征值
此外我們還可以得到:$$\sigma{_i} = \sqrt{\lambda{_i}}\u_i=\frac{1}{\sigma{_i}}AV_i$$
上面的\(\sigma{_i}為奇異值\),\(u_i\)為左奇異向量
常見的做法是將奇異值由大到小排列,在大多數情況下,前10%甚至1%的奇異值的和就占了全部奇異值和的99%以上,也就是說我們可以用前r大的奇異值來近似描述矩陣
r是一個遠小於m,n的數
參考資料:
- (1)李航老師的<統計學習方法>
- (2)<機器學習實戰基於Scikit-Learn和TensorFlow>
- (3)<百面機器學習>