Sparse PCA: reproduction of the synthetic example
The paper:
Hui Zou, Trevor Hastie, and Robert Tibshirani,
Sparse Principal Component Analysis,
Journal of computational and Graphical Statistics, 15(2): 265-286, 2006.
Reproduction of the Synthetic Example in Section 5.2 using R programming:
library(elasticnet) ## sample version of SPCA
n =
v1 = rnorm(n,,sqrt())
v2 = rnorm(n,,sqrt())
v3 = -.*v1 + 0.925*v2 + rnorm(n)
x1 = v1 + rnorm(n)
x2 = v1 + rnorm(n)
x3 = v1 + rnorm(n)
x4 = v1 + rnorm(n) x5 = v2 + rnorm(n)
x6 = v2 + rnorm(n)
x7 = v2 + rnorm(n)
x8 = v2 + rnorm(n) x9 = v3 + rnorm(n)
x10 = v3 + rnorm(n) x = cbind(x1,x2,x3,x4,x5,x6,x7,x8,x9,x10)
x.cov = t(x) %*% x/n; head(x.cov)
a = spca(x, , type='predictor', sparse='varnum', para=c(,), lambda=)
a
## population version of SPCA
g1 = matrix(, , )
diag(g1) = g2 = matrix(, , )
diag(g2) = g3 = matrix(283.7875, , )
diag(g3) = diag(g3)+ g1g3 = matrix(-, , )
g2g3 = matrix(277.5, , ) # construct the exact covariance matrix
x.cov = matrix(, , )
x.cov[:,:] = g1
x.cov[:,:] = g2
x.cov[:,:] = g3
x.cov[:,:] = g1g3
x.cov[:,:] = t(g1g3)
x.cov[:,:] = g2g3
x.cov[:,:] = t(g2g3) b = spca(x.cov, , type='Gram', sparse='varnum', para=c(,), lambda=)
b
The results of the population version using exact covariance matrix are exactly as in the paper:
> b Call:
spca(x = x.cov, K = , para = c(, ), type = "Gram", sparse = "varnum",
lambda = ) sparse PCs
Pct. of exp. var. : 40.9 39.5
Num. of non-zero loadings :
Sparse loadings
PC1 PC2
[,] 0.0 0.5
[,] 0.0 0.5
[,] 0.0 0.5
[,] 0.0 0.5
[,] 0.5 0.0
[,] 0.5 0.0
[,] 0.5 0.0
[,] 0.5 0.0
[,] 0.0 0.0
[,] 0.0 0.0
But the sample version may randomly vary a little.
> a Call:
spca(x = x, K = , para = c(, ), type = "predictor", sparse = "varnum",
lambda = ) sparse PCs
Pct. of exp. var. : 37.9 37.6
Num. of non-zero loadings :
Sparse loadings
PC1 PC2
x1 0.000 -0.303
x2 0.000 -0.533
x3 0.000 -0.576
x4 0.000 -0.540
x5 -0.492 0.000
x6 -0.287 0.000
x7 -0.481 0.000
x8 -0.666 0.000
x9 0.000 0.000
x10 0.000 0.000
Having fun learning sparse PCA!
Sparse PCA: reproduction of the synthetic example的更多相关文章
- Deflation Methods for Sparse PCA
目录 背景 总括 Hotelling's deflation 公式 特点 Projection deflation 公式 特点 Schur complement deflation Orthogona ...
- Spectral Bounds for Sparse PCA: Exact and Greedy Algorithms[贪婪算法选特征]
目录 概括 Sparse PCA Formulation 非常普遍的问题 Optimality Conditions Eigenvalue Bounds 算法 代码 概括 这篇论文,不像以往的那些论文 ...
- Sparse PCA 稀疏主成分分析
Sparse PCA 稀疏主成分分析 2016-12-06 16:58:38 qilin2016 阅读数 15677 文章标签: 统计学习算法 更多 分类专栏: Machine Learning ...
- A direct formulation for sparse PCA using semidefinite programming
目录 背景 Sparse eigenvectors(单个向量的稀疏化) 初始问题(low-rank的思想?) 等价问题 最小化\(\lambda\) 得到下列问题(易推) 再来一个等价问题 条件放松( ...
- 主成分分析(PCA)原理总结
主成分分析(Principal components analysis,以下简称PCA)是最重要的降维方法之一.在数据压缩消除冗余和数据噪音消除等领域都有广泛的应用.一般我们提到降维最容易想到的算法就 ...
- Python机器学习笔记 使用scikit-learn工具进行PCA降维
之前总结过关于PCA的知识:深入学习主成分分析(PCA)算法原理.这里打算再写一篇笔记,总结一下如何使用scikit-learn工具来进行PCA降维. 在数据处理中,经常会遇到特征维度比样本数量多得多 ...
- 深入学习主成分分析(PCA)算法原理(Python实现)
一:引入问题 首先看一个表格,下表是某些学生的语文,数学,物理,化学成绩统计: 首先,假设这些科目成绩不相关,也就是说某一科目考多少分与其他科目没有关系,那么如何判断三个学生的优秀程度呢?首先我们一眼 ...
- Sparse Principal Component Analysis
目录 背景: 部分符号 创新点 文章梗概 The LASSO AND THE ELASTIC NET 将PCA改造为回归问题 定理二 单个向量(无需进行SVD版本) 定理三 多个向量(无需进行SVD, ...
- Full Regularization Path for Sparse Principal Component Analysis
目录 背景 Notation Sparse PCA Semidefinite Relaxation Low Rank Optimization Sorting and Thresholding 背景 ...
随机推荐
- vue组件通信之父子组件通信
准备工作: 首先,新建一个项目,如果这里有不会的同学,可以参考我转载过的文章 http://www.cnblogs.com/Sky-Ice/p/8875958.html vue 脚手架安装及新建项目 ...
- 三连击 P1008 洛谷 python写法
三连击 P1008 洛谷 题意 将\(1,2, \cdots,9\)共9个数分成3组,分别组成3个三位数,且使这3个三位数构成1:2:3的比例,试求出所有满足条件的3个三位数. 解题思路 这里我使用了 ...
- 使用Jest测试JavaScript (入门篇)
1 什么是 Jest? Jest是 Facebook 的一套开源的 JavaScript 测试框架, 它自动集成了断言.JSDom.覆盖率报告等开发者所需要的所有测试工具,是一款几乎零配置的测试框架. ...
- ASE Alpha Sprint - backend scrum 9
本次scrum于2019.11.14再sky garden进行,持续15分钟. 参与人: Xin Kang, Zhikai Chen, Jia Ning, Hao Wang 请假: Lihao Ran ...
- docker安装各种坑
今天记录一下之前安装docker遇到的各种坑. 我们从http://mirrors.aliyun.com/docker-toolbox/windows/docker-toolbox/这个网站下载. 下 ...
- FTP服务器原理及配置
控制连接 21端口 用于发送ftp命令 数据连接 20端口 用于上传下载数据 数据连接的建立类型: 1主动模式: 服务器主动发起的数据连接 首先由客户端的21 端口建立ftp控制连接 当需要传输数 ...
- dd hdparm 速度不一致
https://www.cnblogs.com/yinzhengjie/p/9935478.html hparm # 它用来在基于Linux的系统上获取或设置硬盘参数,包括测试读性能以及缓存性 ...
- java并发学习第五章--线程中的锁
一.公平锁与非公平锁 线程所谓的公平,就是指的是线程是否按照锁的申请顺序来获取锁,如果是遵守顺序来获取,这就是个公平锁,反之为非公平锁. 非公平锁的优点在于吞吐量大,但是由于其不是遵循申请锁的顺序来获 ...
- alert(1) to win 6
function escape(s) { // Slightly too lazy to make two input fields. // Pass in something like " ...
- pspice建立仿真模型元件库
摘自:http://royroyyy.blog.163.com/blog/static/1376506172011026102216175/ PSpice9.2电子元器件模型--由网页下载的model ...