本文提出稀疏主成分分析的两阶段法,即先求解主成分,然后添加 l1正则化项得到稀疏载荷,并利用坐标下降法求解模型。方法简单易操作。另外,本文还提出了一种可以确定两阶段模型中惩罚参数的算法,通过选取合适的惩罚参数,可以使稀疏主成分方差和主成分相关性等性能指标取得折衷。 In this paper, we propose a sparse principal component based on two-stage method, that is, we first get principal component, and then add the l1regular term of the loadings. Coordinate descent method is used to solve the model. The model is easy to understand. In addition, this paper proposes a heuristic algorithm which can determine the penalty parameters in the model. By se-lecting the appropriate penalty parameters, the sparse principal component explained variance and sparsity can be optimized at the same time.
杨欣
北京航空航天大学数学与系统科学学院,北京
收稿日期:2017年12月1日;录用日期:2017年12月19日;发布日期:2017年12月26日
本文提出稀疏主成分分析的两阶段法,即先求解主成分,然后添加 l 1 正则化项得到稀疏载荷,并利用坐标下降法求解模型。方法简单易操作。另外,本文还提出了一种可以确定两阶段模型中惩罚参数的算法,通过选取合适的惩罚参数,可以使稀疏主成分方差和主成分相关性等性能指标取得折衷。
关键词 :降维,稀疏主成分分析,最小迭代收缩阈值和选择算子,坐标下降法
Copyright © 2017 by author and beplay安卓登录
This work is licensed under the Creative Commons Attribution International License (CC BY).
http://creativecommons.org/licenses/by/4.0/
多数情况下多指标问题中不同的指标之间有一定的相关性。指标较多加上指标之间的相关性,势必增加了问题分析的复杂性。主成分分析(Principal Component Analysis, PCA)就是一种通过降维技术把多个变量简化为少数几个互不相关的主成分的统计分析方法,主成分是原始变量的线性组合,同时能最大程度上保留原始数据的信息(信息含量用方差表示)。
由于主成分是原始变量的线性组合,并且主成分载荷元素通常非零 [
为了得到稀疏主成分,研究者们做了很多尝试。Cadima等 [
本文提出稀疏主成分分析的两阶段法,第一阶段得到主成分,第二阶段为了得到稀疏主成分,利用LASSO [
下面列出本文中常用的符号术语。
符号 ℝ n × p 表示 n × p 维实数空间, S n × p 表示 n × p 阶实对称矩阵。 sign ( ⋅ ) 表示符号算子。加粗小写字母表示一个向量,下标表示其分量,向量 v 的第 j 个分量用 v j 表示,同样地,加粗大写字母表示一个矩阵,矩阵 V 的第 j 个列向量用 v j 表示。符号 ‖ v ‖ 1 = ∑ j | v j | 表示向量 v 的 l 1 范数。符号 v + = max ( v , 0 ) 。符号 S λ ( v ) = sign ( v ) ( | v | − λ ) + 表示 v 的软阈值算子。符号 ‖ X ‖ F = tr ( X T X ) ,其中 tr ( · ) 表示矩阵的迹。 I k 表示 k 阶单位矩阵。数据矩阵用 X ∈ ℝ n × p 表示,已中心化(列均值为0),样本协方差矩阵 Σ = X T X n − 1 ∈ S p × p ,其中 p 表示变量个数, n 表示样本数量。
本节简单说明与两阶段法密切相关的SPCA模型及算法与LASSO模型。
回顾LASSO问题 [
β * = arg min β ∈ ℝ p 1 2 ‖ X β − y ‖ 2 2 + λ ‖ β ‖ 1 ,
其中 X ∈ ℝ n × p 表示数据矩阵, 而 y 是相应的观测值, λ 是控制 β 稀疏性的非负参数, 通过选取合适的参数 λ 可以得到满足稀疏性要求的向量解 β 。
Zou等 [
数的 l 1 正则项,即
minimize A , B ‖ X − X B A T ‖ F 2 + λ ∑ j = 1 k ‖ β j ‖ 2 + ∑ j = 1 k λ 1 , j ‖ β j ‖ 1 subject to A T A = I k . (1)
其中正参数 λ 1 , j 控制载荷 β j 的稀疏性。对于 n > p 的数据集,要求 ‖ β j ‖ 2 前的参数 λ > 0 ;对于 n ≤ p 的数据集,取 λ = 0 。
SPCA利用块坐标下降法将(1)的变量分成 B 和 A 两个坐标块,固定其中一个坐标块,求解关于另一个坐标块的子问题,交替求解关于两个变量的子问题直至满足终止条件。SPCA模型将PCA与回归分析建立联系,并且对于不同的数据类型( n > p 或 n ≤ p )都具有较低的计算复杂度 [
SPCA算法初值 A 0 = B 0 均取前 k 个主成分载荷 v ¯ 1 , ⋯ , v ¯ k ,固定 A 求解问题(1)等价于求解
minimize B ‖ X A − X B ‖ F 2 + λ ∑ j = 1 k ‖ β j ‖ 2 + ∑ j = 1 k λ 1 , j ‖ β j ‖ 1 , (2)
令 y j = X v ¯ j , j = 1 , ⋯ , k ,求解(2)等价于求解 k 个独立的弹性网问题
β j * = arg min β j ‖ y j − X β j ‖ 2 + λ ‖ β j ‖ 2 + λ 1 , j ‖ β j ‖ 1 , j = 1 , ⋯ , k . (3)
稀疏PCA的两阶段法第一阶段需要求得主成分,通常有两种方法可以得到主成分。
(1) 样本协方差阵特征值分解
由于实际数据中总体协方差阵未必已知,因此用样本协方差阵代替总体协方差阵。对样本协方差阵 ∑ 做特征值分解,并将特征值降序排列,那么前 k 大特征值对应的特征向量即为前 k 个主成分载荷 v ¯ 1 , ⋯ , v ¯ k ,对应的主成分表示为 y i = X v ¯ i , i = 1 , ⋯ , k 。
(2) 数据矩阵奇异值分解
假设数据矩阵 X 有SVD分解为 X = U ¯ D ¯ V ¯ T ,其中 U ¯ = ( u ¯ 1 , ⋯ , u ¯ r ) ∈ ℝ n × r , V ¯ = ( v ¯ 1 , ⋯ , v ¯ r ) ∈ ℝ p × r , D ¯ 是对角线元素为 σ 1 , ⋯ , σ r 的对角矩阵, r = Rank ( X ) , U ¯ , V ¯ 的列均标准正交。令 D ¯ 的对角线元素降序排列,在等式 X = U ¯ D ¯ V ¯ T 两边同时乘以矩阵 V ¯ ,得到 X V ¯ = U ¯ D ¯ ,即矩阵 U ¯ D ¯ 的列向量为主成分, V ¯ 的列向量为对应的主成分载荷。不难看出,由于 X T X = V ¯ D ¯ 2 V ¯ T ,则经过数据矩阵 X 的奇异值分解得到的 V ¯ 的列向量也是样本协方差矩阵 ∑ 的特征向量。
将第一阶段得到的前 k 个主成分表示为 y i = X v ¯ i , i = 1 , … , k 。为了得到稀疏主成分,利用LASSO [
minimize v ∈ ℝ p 1 2 ‖ X v − y i ‖ 2 2 + λ ‖ v ‖ 1 , i = 1 , ⋯ , k ,
可以看出这 k 个LASSO问题相互独立,因此只需要给出第一个LASSO问题的算法,其余 k − 1 问题以此类推。不失一般性,省略 y i 的下标,用 y 表示。
minimize v ∈ ℝ p 1 2 ‖ X v - y ‖ 2 2 + λ ‖ v ‖ 1 . (4)
分别求解 k 次问题(4),可以得到前 k 个稀疏载荷 V = ( v 1 , ⋯ , v k ) 。
可以看到,问题(4)和(3)相差 λ ‖ v j ‖ 2 这一项,但是在求解 n ≥ p 稀疏PCA问题时,通常令 λ = 0 。因此(4)是SPCA准则(1)第一次迭代时所求解的 k 个子问题。由于SPCA算法同时需要以主成分载荷作为初值,因此这部分计算量与两阶段法第一阶段计算量相同,其次两阶段法的第二阶段是分别求解 k 个子问题,而SPCA需要交替求解关于变量 A 和 B 的子问题,因此计算量要大于两阶段法,第3节的数值结果也证实了这一点。
问题(4)是一个标准LASSO [
坐标下降法 [
命题1:对于任意的 α ∈ ℝ , λ > 0 , S λ ( α ) b 表示函数 1 2 b x 2 − α x + λ | x | 的最小值点,其中 S λ ( α ) 表示软阈值算子,即
S λ ( α ) = { α − λ , α > λ 0 , | α | ≤ λ α + λ , α < − λ
将坐标下降法运用到两阶段法模型(4)。针对 v 的第 i 个分量 v i 求解问题(4),同时固定 v j ( j ≠ i ) 的值不变,即相当于求解
v i * = arg min v { ∑ j = 1 n x j i 2 v i 2 − ( ∑ j = 1 n x j i r j ( i ) ) v i + λ | v i | } ,
其中 r j ( i ) = y j − ∑ k ≠ i x j k v k 。根据命题1,得出该子问题的解为
v i = S λ ( ∑ j = 1 n x j i r j ( i ) ) ∑ j = 1 n x j i 2 , (5)
因此坐标下降法的第 i 步迭代即为(6)。文献 [
对于 n ≫ p 的数据集,显然平凡更新计算量很大,因此 [
v i = S λ ( 〈 x i , y 〉 − ∑ m : | v m | > 0 〈 x i , x m 〉 v m + v i ) x i T x i , (6)
文献 [
LASSO问题中的非负惩罚参数通常使用交叉验证 [
为了说明算法1的执行过程,以Pitprop数据为例。Pitprop数据包含180个样本,13个变量, n = 180 , p = 13 ,实验提取Pitprop数据前6个稀疏主成分,即令 k = 6 。图1是利用算法1得到Pitprop数据前6个主成分稀疏度(sparsity)与可解释方差百分比(PEV)函数图(见图1)。
从图1分析可知,Pitprop数据前6个稀疏主成分最佳稀疏度分别是8,11,9,9,12,11,相应的参数分别0.20,0.21,0.4,0.3,0.29,0.56,利用算法1得到了最佳参数。
本节将通过三组实验数据验证两阶段法的有效性和可行性,为了观察两阶段法(Two-stage method for Sparse PCA, TSPCA)得到的主成分不相关性和载荷非正交性,将TSPCA数值结果与SPCA [
实验性能指标选择稀疏度,载荷非正交性 [
本节利用Jeffers [
图1. Pitprop数据:前6个稀疏主成分稀疏度随可解释方差百分比变化图
有零元素,因此本实验只提取前6个稀疏主成分。基于该数据,运行各稀疏PCA算法。根据算法1,TSPCA惩罚参数 λ 如2.4节所述。表1是Pitprop数据下PCA与各稀疏PCA算法的性能指标。
从表1比较发现,当载荷稀疏度相同,TSPCA算法的PEV均高于除GPower以外的其他算法;在主成分相关性和载荷正交性方面,除了ALSPCA算法和SPCA算法之外,TSPCA算法得到的稀疏主成分相关性最小;从计算时间的角度,TSPCA所用时间均比其他算法更短,综合来看,TSPCA算法有一定的竞争力。
以下两组实验是观察TSPCA解决大规模稀疏PCA问题的表现。
结肠癌基因表达数据集 [
从表2可以看出,TSPCA算法所得的载荷在保持高稀疏度的情况下,虽然主成分PEV低于其他算法,但是TSPCA算法需要更少的计算时间,并且在非正交性和相关性方面表现也优于除ALSPCA以外的其他算法,验证了本文两种算法在解决高维稀疏PCA问题的简单有效。
本节所用的20新闻组数据,记录了100个单词出现在16,242篇新闻报导的频次,即 n = 16242 , p = 100 。所有的新闻报导均从全球最大的电子布告栏系统Usenet上取得。该数据下载自 http://blog.csdn.net/imstudying/article/details/77876159#OLE_LINK2。
基于该数据,运行各稀疏PCA算法,并抽取前两个稀疏主成分载荷的数据结果进行对比。对于
算法 | 稀疏度 | PEV(%) | 非正交性 | 相关性 |
---|---|---|---|---|
PCA | 0 | 86.90 | 0 | 0 |
TSPCA | 60 | 79 | 1.00 | 0.39 |
ALSPCA | 60 | 79.42 | 0 | 0.30 |
GPower | 60 | 79.74 | 17.88 | 0.91 |
SPCA | 60 | 75.82 | 0.86 | 0.40 |
表1. Pitprop数据前6个稀疏主成分:各稀疏PCA算法的性能指标
算法 | 稀疏度 | PEV(%) | 非正交性 | 相关性 | 计算时间(s) |
---|---|---|---|---|---|
PCA | 0 | 58.35 | 0 | 0.09 | - |
TSPCA | 5377 | 49.35 | 5.36 | 0.40 | 0.3415 |
ALSPCA | 5252 | 48.94 | 0.03 | 0 | 1.0000 |
GPower | 5218 | 49.35 | 23.19 | 0.69 | 6.8507 |
SPCA | 5370 | 48.88 | 22.88 | 0.49 | 5.4494 |
表2. 结肠癌基因数据前3个稀疏主成分:各稀疏PCA算法的性能指标
算法 | 稀疏度 | PEV(%) | 非正交性 | 相关性 | 计算时间(s) |
---|---|---|---|---|---|
PCA | 0 | 10.69 | 0 | 0 | -- |
TSPCA | 160 | 8.11 | 1.15 | 0.20 | 0.6704 |
ALSPCA | 160 | 8.48 | 0 | 0.10 | 35.6041 |
GPower | 160 | 8.26 | 20.76 | 0.49 | 27.4600 |
SPCA | 160 | 8.39 | 0.17 | 0.15 | 2.9733 |
表3. 结肠癌基因数据前3个稀疏主成分:各稀疏PCA算法的性能指标
TSPCA算法,利用算法2取惩罚参数 λ = 0.104 , 0.187 。表3为20新闻组数据下PCA和各稀疏PCA算法的性能指标。
从表3可以看出,TSPCA算法所得的载荷PEV虽然略低于其他算法,但是在非正交性和正交性的表现要优于GPower算法;就计算时间而言,TSPCA算法用时最短,进一步验证了本文算法在解决大规模稀疏PCA问题方面的有效性。
本文首次提出稀疏PCA的两阶段法,并利用坐标下降法求解该模型,其次还提出一种可以选取最佳惩罚参数的方法。模型简单易懂,算法易于实现,同时两阶段法每次迭代的计算复杂度关于样本个数 n 和变量维数 p 都是线性的,因此可以有效求解大规模稀疏PCA问题,同时惩罚参数选取算法可以有效选取惩罚参数,使得载荷稀疏度和稀疏主成分可解释方差等指标取得折衷。
衷心感谢指导老师和各位评阅人的建议!
杨 欣. 稀疏主成分分析的两阶段法 Two-Stage Method of Sparse Principal Component Analysis[J]. 应用数学进展, 2017, 06(09): 1174-1181. http://dx.doi.org/10.12677/AAM.2017.69142