SPCArt算法,利用旋转(正交变换更为恰当,因为没有体现出旋转这个过程),交替迭代求解sparse PCA。
对以往一些SPCA算法复杂度的总结
注:r是选取的主成分数目,m为迭代次数,p为样本维度,n为样本数目。本文算法,需要先进行SVD,并未在上表中给出。
Notation
论文概述
A=UΣVT
V1:r=[V1,V2,…,Vr]∈Rp×r就是普通PCA的前r个载荷向量(loadings,按照特征值降序排列)
∀旋转矩阵(正交矩阵)R∈Rr×r
V1:rR也是彼此正交的,张成同一子空间的向量组。
原始问题
如果能解出来,当然好,可是这是一个很难求解的问题,所以需要改进。
问题的变种
V1:r直接用V表示了,为了符号的简洁。
变成这个问题之后,我们所追求的便是X了,Xi,就是我们要的载荷向量,显然,这个问题所传达出来的含义是:
1.我们希望XR与V相差不大,意味着Xi近似正交且张成同一个子空间。
2.∥Xi∥1作为惩罚项,可以起到稀疏化的作用(这是1-范数的特点)。
算法
这是一个交替迭代算法,我们来分别讨论。
固定X,计算R
当固定X,之后,问题就退化为:
这个问题在Sparse Principal Component Analysis(Zou 06)这篇论文里面也有提到。
上述最小化问题,可以变换为
maxtr(VTXR),s.t.RTR=I
若XTV=WDQT
就是要最大化:
tr(QDWTR)=tr(DWTRQ)≤tr(D)
当R=WQT(注意WTRQ是正交矩阵)。
固定R,求解X (Z=VR)
1-范数
注意:∥VRT−X∥F2=∥(V−XR)RT∥F2,所以这个问题和原始问题是等价的。
经过转换,上述问题还等价于:
maxXiZiTXi−λ∥Xi∥1i=1,2,…,r
通过分析(蛮简单的,但是不好表述),可以得到:
Xi∗=Sλ(Zi)/∥Sλ(Zi)∥2
T−ℓ0(新的初始问题)
R的求解问题没有变化,考虑R固定的时候,求解X。
等价于:
Xij,Zijmin(Zij−Xij)2+λ2∥Xij∥0
显然,若Xij∗̸=0,Xij∗=Zij,此时函数值为λ2
若Xij∗=0,值为Zij2,所以,为了最小化值,取:
min{Zij2,λ2},也就是说,
Xij=0ifZij2>λ2 否则, Xij=Zij
Xi∗=Hλ(Zi)/∥Hλ(Zi)∥2
T-sp 考虑稀疏度的初始问题
λ∈{0,1,2,…,p−1}
R的求法如出一辙,依旧只需考虑在R固定的情况下,如何求解X的情况。
等价于:
maxZiTXi 在条件不变的情况下。
证明挺简单的,但不好表述,就此别过吧。
最优解是:Xi∗=Pλ(Zi)/∥Pλ(Zi)∥2
T-en 考虑Energy的问题
Xi=Eλ(Zi)/∥Eλ(Zi)∥2
文章到此并没有结束,还提及了一些衡量算法优劣的指标,但是这里就不提了。大体的思想就在上面,我认为这篇论文好在,能够把各种截断方法和实际优化问题结合在一起,很不错。