Sparse PCA 稀疏主成分分析


Sparse PCA 稀疏主成分分析

版權聲明:本文為博主原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
本文鏈接: https://blog.csdn.net/zhoudi2010/article/details/53489319

SPCA原始文獻:H. Zou (2006) Sparse principal component analysis 
PCA 可以參考: The Elements of Statistical Learning 第十四章 
主成分分析的基本思想以及R的應用可以參考:稀疏主成分分析與R應用 
關於統計學習中的稀疏算法可以參考:Statistical learning with sparsity: the lasso and generalizations 
一份很好的文檔:http://www.cs.utexas.edu/~rashish/sparse_pca.pdf

首先直接來看算法:

SPCA algo

  1. 令A初始化為V[,1:k],即為前k個principal components的loading vectors.
  2. 對於給定的A=[α1,,αk]A=[α1,…,αk] , 優化elastic net: 
    βj=argmaxβ(αiβ)TXTX(αiβ)+λβ2+λ1,jβ1βj=argmaxβ(αi−β)TXTX(αi−β)+λ‖β‖2+λ1,j‖β‖1
  3. 對於給定的B=[β1,,βk]B=[β1,…,βk], 計算XTXBXTXB的SVD,更新A=UVTA=UVT.
  4. 重復2-3步,直到收斂.
  5. Normalization之后得到ViVi

接下來對該算法進行必要的解釋: 
想要得到稀疏的結果,核心思想是在優化參數時加入 L1L1 penalty. 另外,如果我們將PCA問題轉化為regression問題,那么就達到了求解稀疏主成分的目的了。

H. Zou (2006)的Theorem 1就提出了PCA和Regression的聯系。即:如果我們已經知道由SVD得到的principal components, 那么ridge estimates就是ViVi. 
βridge=argmaxβZiXβ2+λβ2βridge=argmaxβ‖Zi−Xβ‖2+λ‖β‖2 
如果在上式中加入L1L1 penalty: λ1β1λ1‖β‖1,那么就可以得到了sparse PCs. 但是這是一個仍然依賴PCA的結果,我們想要得到一個self-contained的方法。

所以新的優化問題是這樣的形式:

這里寫圖片描述

第二項和第三項是elastic net,或者理解為ridge+lasso. 第一項則和之前的形式有些不同。如果我們令A=BA=B,那么第一項就變成了xiAATxi2‖xi−AATxi‖2, 這個形式就是PCA的形式(注釋1).

這一步我們遇到的問題是: 
1. AA 和 BB 我們都不知道,如果同時優化,能量方程並不是凸優化問題,但固定其中一個變量,則為凸優化問題。 
2. xiABTxi2‖xi−ABTxi‖2 形式不方便elastic net優化

解決思路是: 
1. 將問題轉化為:如果AA已知,求BB;然后根據求得的BB,求AA,如此迭代。 
2. 將xiABTxi2‖xi−ABTxi‖2 形式轉化為YXTβ2‖Y−XTβ‖2 形式。

先說問題2的解決方法(注釋2): 
這里寫圖片描述

Y=XαjY∗=Xαj

就得到了最終需要的形式:

這里寫圖片描述

再說問題1的算法,也就是文章最開始提到的算法中的2,3步(注釋3):

這里寫圖片描述

如此這般,SPCA就ok了!



不過,還有幾個小問題:

注釋1處 為什么A=BA=B就退化成了PCA?

具體可以參考The Elements of Statistical Learning 14.5

我們為了最小化reconstruction error: 
xiμVqλi2‖xi−μ−Vqλi‖2 
得到 λ^i=Vq(xix¯)λ^i=Vq⊤(xi−x¯) 
將其帶入error,可以得到orthogonal matrix VqVq使其最小化: 
(xix¯)VqVq(xix¯)2‖(xi−x¯)−VqVq⊤(xi−x¯)‖2

VqVqVqVq⊤就是projection matrix.

所以A=BA=B,AA就相當於VV.

注釋2處 這個轉化怎么得到的?

XXBA2‖X−XBA⊤‖2 = XA2‖XA⊥‖2 + XAXB2‖XA−XB‖2

注意到AA為orthonomal,AA⊥也是orthonomal matrix並且使得[A;A][A;A⊥]是p×pp×p orthonomal matrix.

所以將 XXBA2‖X−XBA⊤‖2 投影到AA 和AA⊥可以得到 :

XXBA2‖X−XBA⊤‖2 
(XXBA)A2‖(X−XBA⊤)A⊥‖2 + (XXBA)A2‖(X−XBA⊤)A‖2 
XA2‖XA⊥‖2 +XAXB2‖XA−XB‖2

注釋3處 A given B 怎么證明?

需要用到Procrustes Rotation的結論:

這里寫圖片描述

這里寫圖片描述

(A.7)是squared Frobenius matrix norm, 所以 X2=trace(XX)‖X‖2=trace(X⊤X).

Procrustes (普洛克路斯忒斯)是希臘神話中的一名強盜。他是海神波塞冬的兒子,在從雅典到埃萊夫西納的路上開設黑店,攔截行人。店內設有一張鐵床,旅客投宿時,將身高者截斷,身矮者則強行拉長,使與床的長短相等。而由於普洛克路斯忒斯秘密地擁有兩張長度不同的床,所以無人能因身高恰好與床相等而幸免。后來英雄忒修斯前往雅典時,路過此地,將其殺死。(From Wiki)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM