Sparse Principal Component Analysis via Rotation and Truncation

SPCArt算法,利用旋转(正交变换更为恰当,因为没有体现出旋转这个过程),交替迭代求解sparse PCA。

对以往一些SPCA算法复杂度的总结

Sparse Principal Component Analysis via Rotation and Truncation
注:rr是选取的主成分数目,mm为迭代次数,pp为样本维度,nn为样本数目。本文算法,需要先进行SVD,并未在上表中给出。

Notation

Sparse Principal Component Analysis via Rotation and Truncation

论文概述

A=UΣVTA = U\Sigma V^{\mathrm{T}}
V1:r=[V1,V2,,Vr]Rp×rV_{1:r}=[V_1,V_2,\ldots, V_r] \in \mathbb{R}^{p\times r}就是普通PCA的前rr个载荷向量(loadings,按照特征值降序排列)
RRr×r\forall 旋转矩阵(正交矩阵)R \in \mathbb{R}^{r \times r}
V1:rRV_{1:r}R也是彼此正交的,张成同一子空间的向量组。

原始问题

Sparse Principal Component Analysis via Rotation and Truncation
如果能解出来,当然好,可是这是一个很难求解的问题,所以需要改进。

问题的变种

V1:rV_{1:r}直接用VV表示了,为了符号的简洁。

Sparse Principal Component Analysis via Rotation and Truncation
变成这个问题之后,我们所追求的便是XX了,XiX_i,就是我们要的载荷向量,显然,这个问题所传达出来的含义是:
1.我们希望XRXRVV相差不大,意味着XiX_i近似正交且张成同一个子空间。
2.Xi1\|X_i\|_1作为惩罚项,可以起到稀疏化的作用(这是1-范数的特点)。

算法

Sparse Principal Component Analysis via Rotation and Truncation
这是一个交替迭代算法,我们来分别讨论。

固定XX,计算RR

当固定XX,之后,问题就退化为:
Sparse Principal Component Analysis via Rotation and Truncation
这个问题在Sparse Principal Component Analysis(Zou 06)这篇论文里面也有提到。

上述最小化问题,可以变换为
maxtr(VTXR),s.t.RTR=Imax \quad tr(V^{\mathrm{T}}XR), \quad s.t. \quad R^{\mathrm{T}}R=I
XTV=WDQTX^{\mathrm{T}}V=WDQ^{\mathrm{T}}
就是要最大化:
tr(QDWTR)=tr(DWTRQ)tr(D)tr(QDW^{\mathrm{T}}R)=tr(DW^{\mathrm{T}}RQ)\leq tr(D)
R=WQTR = WQ^{\mathrm{T}}(注意WTRQW^{\mathrm{T}}RQ是正交矩阵)。

固定RR,求解XXZ=VRZ =VR

1-范数

Sparse Principal Component Analysis via Rotation and Truncation
注意:VRTXF2=(VXR)RTF2\|VR^{\mathrm{T}}-X\|_F^2=\|(V-XR)R^{\mathrm{T}}\|_F^2,所以这个问题和原始问题是等价的。

经过转换,上述问题还等价于:
maxXiZiTXiλXi1i=1,2,,rmax_{X_i} \quad Z_i^{\mathrm{T}}X_i-\lambda\|X_i\|_1 \quad i=1,2,\ldots,r

通过分析(蛮简单的,但是不好表述),可以得到:
Xi=Sλ(Zi)/Sλ(Zi)2X_i^*=S_\lambda(Z_i)/\|S_\lambda(Z_i)\|_2

T0T-\ell_0(新的初始问题)

Sparse Principal Component Analysis via Rotation and Truncation
RR的求解问题没有变化,考虑RR固定的时候,求解XX

等价于:

minXij,Zij(ZijXij)2+λ2Xij0\mathop{min}\limits_{X_{ij},Z_{ij}} \quad (Z_{ij}-X_{ij})^2+\lambda^2\|X_{ij}\|_0
显然,若Xij0X_{ij}^* \neq 0,Xij=ZijX_{ij}^*=Z_{ij},此时函数值为λ2\lambda^2
Xij=0X_{ij}^* = 0,值为Zij2Z_{ij}^2,所以,为了最小化值,取:
min{Zij2,λ2}min \{Z_{ij}^2,\lambda^2\},也就是说,
Xij=0if Zij2>λ2X_{ij}=0 \quad if\:Z_{ij}^2>\lambda^2 否则, Xij=ZijX_{ij}=Z_{ij}
Xi=Hλ(Zi)/Hλ(Zi)2X_i^*=H_\lambda(Z_i)/\|H_\lambda(Z_i)\|_2

T-sp 考虑稀疏度的初始问题

Sparse Principal Component Analysis via Rotation and Truncation
λ{0,1,2,,p1}\lambda \in \{0, 1, 2,\ldots,p-1\}
RR的求法如出一辙,依旧只需考虑在RR固定的情况下,如何求解XX的情况。

等价于:

maxZiTXimax \quad Z_i^{\mathrm{T}}X_i 在条件不变的情况下。
证明挺简单的,但不好表述,就此别过吧。
最优解是:Xi=Pλ(Zi)/Pλ(Zi)2X_i^*=P_\lambda(Z_i)/\|P_\lambda(Z_i)\|_2

T-en 考虑Energy的问题

Xi=Eλ(Zi)/Eλ(Zi)2X_i = E_\lambda(Z_i)/\|E_\lambda(Z_i)\|_2

文章到此并没有结束,还提及了一些衡量算法优劣的指标,但是这里就不提了。大体的思想就在上面,我认为这篇论文好在,能够把各种截断方法和实际优化问题结合在一起,很不错。