Sparse Principal Component Analysis via Rotation and Truncation

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

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

在这里插入图片描述

注:
r
是选取的主成分数目,
m
为迭代次数,
p
为样本维度,
n
为样本数目。本文算法,需要先进行SVD,并未在上表中给出。

Notation

在这里插入图片描述

论文概述

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

原始问题

在这里插入图片描述

如果能解出来,当然好,可是这是一个很难求解的问题,所以需要改进。

问题的变种

V_{1:r}直接用V表示了,为了符号的简洁。

在这里插入图片描述

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

算法

在这里插入图片描述

这是一个交替迭代算法,我们来分别讨论。

固定X,计算R

当固定X,之后,问题就退化为:

在这里插入图片描述

这个问题在Sparse Principal Component Analysis(Zou 06)这篇论文里面也有提到。

上述最小化问题,可以变换为
max \quad tr(V^{\mathrm{T}}XR), \quad s.t. \quad R^{\mathrm{T}}R=I
X^{\mathrm{T}}V=WDQ^{\mathrm{T}}
就是要最大化:
tr(QDW^{\mathrm{T}}R)=tr(DW^{\mathrm{T}}RQ)\leq tr(D)
R = WQ^{\mathrm{T}}(注意W^{\mathrm{T}}RQ是正交矩阵)。

固定R,求解XZ =VR^{\mathrm{T}}

1-范数

在这里插入图片描述

注意:
\|VR^{\mathrm{T}}-X\|_F^2=\|(V-XR)R^{\mathrm{T}}\|_F^2
,所以这个问题和原始问题是等价的。

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

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

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

在这里插入图片描述

R
的求解问题没有变化,考虑
R
固定的时候,求解
X

等价于:

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

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

在这里插入图片描述

\lambda \in \{0, 1, 2,\ldots,p-1\}

R
的求法如出一辙,依旧只需考虑在
R
固定的情况下,如何求解
X
的情况。

等价于:

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

T-en 考虑Energy的问题

X_i = E_\lambda(Z_i)/\|E_\lambda(Z_i)\|_2

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

代码

def Compute_R(X, V):
    
    W, D, Q_T = np.linalg.svd(X.T @ V)
    
    return W @ Q_T

def T_S(V, R, k): #k in [0,1)
    
    Z = V @ R.T
    sign = np.where(Z < 0, -1, 1)
    truncate = np.where(np.abs(Z) - k < 0, 0, np.abs(Z) - k)
    X = sign * truncate
    X = X / np.sqrt((np.sum(X ** 2, 0)))
    
    return X

def T_H(V, R, k): #k in [0,1)  没有测试过这个函数
    
    Z = V @ R.T
    X = np.where(np.abs(Z) > k, Z, 0)
    X = X / np.sqrt((np.sum(X ** 2, 0)))
    
    return X

def T_P(V, R, k): #k belongs to {0, 1, 2, ..., (p-1)}    没有测试过这个函数
    
    Z = V @ R.T
    Z[np.argsort(np.abs(Z), 0)[:k], np.arange(Z.shape[1])] = 0
    X = Z / np.sqrt((np.sum(Z ** 2, 0)))
    
    return X
    
    
def Main(C, r, Max_iter, k):  #用T_S截断  可以用F范数判断是否收敛,为了简单直接限定次数
    
    value, V_T = np.linalg.eig(C)
    V = V_T[:r].T
    R = np.eye(r)
    while Max_iter > 0:
        
        Max_iter -= 1
        X = T_S(V, R, k)
        R = Compute_R(X, V)
        
    return X.T
      

结果,稀疏的程度大点,反而效果还好点。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,204评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,091评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,548评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,657评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,689评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,554评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,302评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,216评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,661评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,851评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,977评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,697评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,306评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,898评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,019评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,138评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,927评论 2 355

推荐阅读更多精彩内容