system: [SYSTEM]

user: 2. 稀疏主成分分析的两阶段法 本节简单说明与两阶段法密切相关的SPCA模型及算法与LASSO模型。 2.1. LASSO问题与SPCA算法 回顾LASSO问题 [ 4 ] β * = arg min β ∈ ℝ p 1 2 ‖ X β − y ‖ 2 2 + λ ‖ β ‖ 1 ， 其中 X ∈ ℝ n × p 表示数据矩阵， 而 y 是相应的观测值， λ 是控制 β 稀疏性的非负参数， 通过选取合适的参数 λ 可以得到满足稀疏性要求的向量解 β 。 Zou等 [ 7 ] 2012年提出SPCA模型，SPCA模型先将PCA表述为回归优化问题，然后添加关于回归系 数的 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 )都具有较低的计算复杂度 [ 7 ] 。 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) 2.2. 两阶段法的第一阶段与第二阶段 稀疏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 [ 4 ] 问题可以使得回归系数自动缩减为0的特点，用稀疏主成分 X v i 拟合主成分 X v ¯ i ，得到 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 [ 4 ] 问题，从而使用经典的求解(3)的算法来求解。文献 [ 7 ] 中利用内点法进行求解，但针对基因数据等大规模数据，内点法计算时间过大，效率低下。由于坐标下降法 [ 6 ] 能够充分利用高维数据的稀疏特性，已经成为处理大规模稀疏数据的首选算法。因此，本文选择坐标下降法求解问题(4)。 2.3. 基于LASSO的坐标下降法 坐标下降法 [ 5 ] 在当前点处沿一个坐标方向进行一维搜索，同时固定其他坐标方向，求解目标函数的局部极小值。在给出坐标下降法求解问题(4)之前，先给出命题1。 命题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)。文献 [ 5 ] 中称这种更新方法为平凡更新(naïve updating)，并给出了该方法的计算复杂度为 O ( n p ) 。 对于 n ≫ p 的数据集，显然平凡更新计算量很大，因此 [ 5 ] 中还给出了另一种协方差更新(covariance up dating)方法，即令 v i = S λ ( 〈 x i ， y 〉 − ∑ m : | v m | > 0 〈 x i ， x m 〉 v m + v i ) x i T x i ， (6) 文献 [ 5 ] 中给出该方法的计算度仅为 O ( p m ) ， m ≤ p ≪ n ， 显然对于 n ≫ p 的数据集，后一种迭代方法计算复杂度更小。算法终止条件选取迭代次数小于最大迭代次数，或者目标函数值的更新率低于给定阈值，将求解(4)的算法称为TSPCA。 2.4. 参数选择算法 LASSO问题中的非负惩罚参数通常使用交叉验证 [ 3 ] 进行确定，但是这种方法高度依赖于数据矩阵，在已知样本协方差矩阵的数据集中，交叉验证的方法并不适用，因此本文提出一种有效的参数选择方法。稀疏度用 s 表示，下面给出参数选择算法1。 为了说明算法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得到了最佳参数。