Sparse PCA 稀疏主成分分析

2016-12-06 16:58:38 qilin2016 阅读数 15677 文章标签: 统计学习算法 更多

分类专栏: Machine Learning
 
版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。

SPCA原始文献:H. Zou (2006) Sparse principal component analysis 
PCA 可以参考: The Elements of Statistical Learning 第十四章 
主成分分析的基本思想以及R的应用可以参考:稀疏主成分分析与R应用 
关于统计学习中的稀疏算法可以参考:Statistical learning with sparsity: the lasso and generalizations 
一份很好的文档:http://www.cs.utexas.edu/~rashish/sparse_pca.pdf

首先直接来看算法:

  1. 令A初始化为V[,1:k],即为前k个principal components的loading vectors.
  2. 对于给定的A=[α1,…,αk]A=[α1,…,αk] , 优化elastic net: 
    βj=argmaxβ(αi−β)TXTX(αi−β)+λ∥β∥2+λ1,j∥β∥1βj=argmaxβ(αi−β)TXTX(αi−β)+λ‖β‖2+λ1,j‖β‖1
  3. 对于给定的B=[β1,…,βk]B=[β1,…,βk], 计算XTXBXTXB的SVD,更新A=UVTA=UVT.
  4. 重复2-3步,直到收敛.
  5. Normalization之后得到ViVi

接下来对该算法进行必要的解释: 
想要得到稀疏的结果,核心思想是在优化参数时加入 L1L1 penalty. 另外,如果我们将PCA问题转化为regression问题,那么就达到了求解稀疏主成分的目的了。

H. Zou (2006)的Theorem 1就提出了PCA和Regression的联系。即:如果我们已经知道由SVD得到的principal components, 那么ridge estimates就是ViVi. 
βridge=argmaxβ∥Zi−Xβ∥2+λ∥β∥2βridge=argmaxβ‖Zi−Xβ‖2+λ‖β‖2 
如果在上式中加入L1L1 penalty: λ1∥β∥1λ1‖β‖1,那么就可以得到了sparse PCs. 但是这是一个仍然依赖PCA的结果,我们想要得到一个self-contained的方法。

所以新的优化问题是这样的形式:

第二项和第三项是elastic net,或者理解为ridge+lasso. 第一项则和之前的形式有些不同。如果我们令A=BA=B,那么第一项就变成了∥xi−AATxi∥2‖xi−AATxi‖2, 这个形式就是PCA的形式(注释1).

这一步我们遇到的问题是: 
1. AA 和 BB 我们都不知道,如果同时优化,能量方程并不是凸优化问题,但固定其中一个变量,则为凸优化问题。 
2. ∥xi−ABTxi∥2‖xi−ABTxi‖2 形式不方便elastic net优化

解决思路是: 
1. 将问题转化为:如果AA已知,求BB;然后根据求得的BB,求AA,如此迭代。 
2. 将∥xi−ABTxi∥2‖xi−ABTxi‖2 形式转化为∥Y−XTβ∥2‖Y−XTβ‖2 形式。

先说问题2的解决方法(注释2): 

令Y∗=XαjY∗=Xαj

就得到了最终需要的形式:

再说问题1的算法,也就是文章最开始提到的算法中的2,3步(注释3):

如此这般,SPCA就ok了!



不过,还有几个小问题:

注释1处 为什么A=BA=B就退化成了PCA?

具体可以参考The Elements of Statistical Learning 14.5

我们为了最小化reconstruction error: 
∥xi−μ−Vqλi∥2‖xi−μ−Vqλi‖2 
得到 λ^i=V⊤q(xi−x¯)λ^i=Vq⊤(xi−x¯) 
将其带入error,可以得到orthogonal matrix VqVq使其最小化: 
∥(xi−x¯)−VqV⊤q(xi−x¯)∥2‖(xi−x¯)−VqVq⊤(xi−x¯)‖2

VqV⊤qVqVq⊤就是projection matrix.

所以A=BA=B,AA就相当于VV.

注释2处 这个转化怎么得到的?

∥X−XBA⊤∥2‖X−XBA⊤‖2 = ∥XA⊥∥2‖XA⊥‖2 + ∥XA−XB∥2‖XA−XB‖2

注意到AA为orthonomal,A⊥A⊥也是orthonomal matrix并且使得[A;A⊥][A;A⊥]是p×pp×p orthonomal matrix.

所以将 ∥X−XBA⊤∥2‖X−XBA⊤‖2 投影到AA 和A⊥A⊥可以得到 :

∥X−XBA⊤∥2‖X−XBA⊤‖2 
= ∥(X−XBA⊤)A⊥∥2‖(X−XBA⊤)A⊥‖2 + ∥(X−XBA⊤)A∥2‖(X−XBA⊤)A‖2 
= ∥XA⊥∥2‖XA⊥‖2 +∥XA−XB∥2‖XA−XB‖2

注释3处 A given B 怎么证明?

需要用到Procrustes Rotation的结论:

(A.7)是squared Frobenius matrix norm, 所以 ∥X∥2=trace(X⊤X)‖X‖2=trace(X⊤X).

Procrustes (普洛克路斯忒斯)是希腊神话中的一名强盗。他是海神波塞冬的儿子,在从雅典到埃莱夫西纳的路上开设黑店,拦截行人。店内设有一张铁床,旅客投宿时,将身高者截断,身矮者则强行拉长,使与床的长短相等。而由于普洛克路斯忒斯秘密地拥有两张长度不同的床,所以无人能因身高恰好与床相等而幸免。后来英雄忒修斯前往雅典时,路过此地,将其杀死。(From Wiki)

Sparse PCA 稀疏主成分分析的更多相关文章

  1. sparse-PCA(稀疏主成分分析)是什么?

    不多说,直接上干货! 复杂降维技术有spare-PCA和sparse coding. 最近在科研需要,感谢下面的博主. Sparse PCA 稀疏主成分分析

  2. Deflation Methods for Sparse PCA

    目录 背景 总括 Hotelling's deflation 公式 特点 Projection deflation 公式 特点 Schur complement deflation Orthogona ...

  3. Spectral Bounds for Sparse PCA: Exact and Greedy Algorithms[贪婪算法选特征]

    目录 概括 Sparse PCA Formulation 非常普遍的问题 Optimality Conditions Eigenvalue Bounds 算法 代码 概括 这篇论文,不像以往的那些论文 ...

  4. SQL Server ->> Sparse File(稀疏文件)

    Sparse File(稀疏文件)不是SQL Server的特性.它属于Windows的NTFS文件系统的一个特性.如果某个大文件中的数据包含着大量“0数据”(这个应该从二进制上看),这样的文件就可以 ...

  5. Sparse PCA: reproduction of the synthetic example

    The paper: Hui Zou, Trevor Hastie, and Robert Tibshirani, Sparse Principal Component Analysis, Journ ...

  6. [综] Sparse Representation 稀疏表示 压缩感知

    稀疏表示 分为 2个过程:1. 获得字典(训练优化字典:直接给出字典),其中字典学习又分为2个步骤:Sparse Coding和Dictionary Update:2. 用得到超完备字典后,对测试数据 ...

  7. sparse coding稀疏表达入门

    最近在看sparse and redundant representations这本书,进度比较慢,不过力争看过的都懂,不把时间浪费掉.才看完了不到3页吧,书上基本给出了稀疏表达的概念以及传统的求法. ...

  8. A direct formulation for sparse PCA using semidefinite programming

    目录 背景 Sparse eigenvectors(单个向量的稀疏化) 初始问题(low-rank的思想?) 等价问题 最小化\(\lambda\) 得到下列问题(易推) 再来一个等价问题 条件放松( ...

  9. PCA (主成分分析)详解 (写给初学者) 结合matlab(转载)

    一.简介 PCA(Principal Components Analysis)即主成分分析,是图像处理中经常用到的降维方法,大家知道,我们在处理有关数字图像处理方面的问题时,比如经常用的图像的查询问题 ...

随机推荐

  1. Fiddler自动响应AutoResponder正则匹配

    AutoResponder-Add-Rule Editor 两个文本框,先说第一个: Mathes: 前缀为“EXACT:”表示完全匹配(大小写敏感) 无前缀表示基本搜索,表示搜索到字符串就匹配 前缀 ...

  2. 【SpringBoot/MVC】从Oracle下载百万条记录的CSV

    工程下载地址:https://files.cnblogs.com/files/xiandedanteng/CsvDownloadOracle20191110-2.rar 画面: 核心代码: 控制器: ...

  3. 流式数据处理在百度数据工厂的应用与实践 原创: 李俊卿 AI前线 今天

    流式数据处理在百度数据工厂的应用与实践 原创: 李俊卿 AI前线 今天

  4. C# 读取文件内容

    读取文件内容有三种方式 全部读取到字符串变量中 一次读取一行 全部读取到字符串数组中,每个数组元素存储一行文本 全部读取到字符串变量 string text = System.IO.File.Read ...

  5. 机器学习 - 算法 - SVM 支持向量机

    SVM 原理引入 支持向量机( SVM,Support Vector Machine ) 背景 2012年前较为火热, 但是在12年后被神经网络逼宫, 由于应用场景以及应用算法的不同, SVM还是需要 ...

  6. 42 Flutter仿京东商城项目 修改默认收货地址 显示默认收货地址

    CheckOut.dart import 'package:flutter/material.dart'; import '../services/ScreenAdapter.dart'; impor ...

  7. Greenwich.SR2版本的Spring Cloud Eureka实例

    作为微服务架构中最为核心和基础的服务治理,注册中心提供了微服务实例的自动化注册与发现.而作为一个服务注册中心,eureka的作用与传统的zk.etcd的作用是一样的,同样也支持高可用(集群).不同之处 ...

  8. REUSE_ALV_POPUP_TO_SELECT使用技巧

    可以实现弹出一个对话框,提供选择数据的功能…… 栗子1: CALL FUNCTION 'REUSE_ALV_POPUP_TO_SELECT' TYPE-POOLS slis. DATA: selec ...

  9. 学习 TTreeView [15] - 连接数据库 (作为给 "丁永其" 和 "DELPHI万岁" 两位朋友的回复)

    本例效果图: unit Unit1; interface uses   Windows, Messages, SysUtils, Variants, Classes, Graphics, Contro ...

  10. PHP实现简单留言板

    最近学习了下PHP基础,这里做一个简单的留言板,算是对PHP和MySQL的使用做一个整体的练习吧,不遇到问题总感觉学不到东西. 截图如下: 总结: 1>数据库的简单操作,数据库的增删改查: 2. ...