R中进行PCA主成分分析
2015-04-12 12:27
190 查看
1. PCA优缺点
利用PCA达到降维目的,避免高维灾难。PCA把所有样本当作一个整体处理,忽略了类别属性,所以其丢掉的某些属性可能正好包含了重要的分类信息
2. PCA原理
条件1:给定一个m*n的数据矩阵D, 其协方差矩阵为S. 如果D经过预处理, 使得每个每个属性的均值均为0, 则有S=DTD。PCA的目标是找到一个满足如下性质的数据变换:
- 每对不同的新属性的协方差为0,即属性间相互独立;
- 属性按照每个属性捕获的数据方差大小进行排序;
- 第一个属性捕获尽可能多的数据方差;
- 满足正交性的前提下,每个属性尽可能多的捕获剩余方差。
条件2:由于协方差矩阵是半正定矩阵,则其具有非负特征值。令λ1,λ2,...,λn是S的特征值,并且可以排序,保证λ1≥λ2≥...≥λn.令U为S的特征向量矩阵。
因此,有:
- 数据矩阵D′=DU是变换后的数据集,满足上述条件;
- 第i个属性的方差是λi;
- 原属性的方差和等于新属性的方差和;
- 新属性排序即为主成分排序;
通常情况下,我们排序较后的主成分其实为次要成分,基于降维目的,只需选取前m个主成分作为新属性即可。
3. R中使用PCA
程序
##生成一个随机数组 100*10 matrix(rnorm(1000,0,1), ncol=10) -> data ##中心化,使每个属性的均值为0 for(i in c(1,10)){data[,i] <- data[,i] - mean(data[, i])} ##求协方差矩阵 cov(data) -> cov_data ##特征值 eigen(cov_data) -> e_cov_data ##主成分 data%*%e_cov_data$vectors -> res
结果对比
相关文章推荐
- PCA主成分分析进行数据降维
- 利用JMF进行摄像头拍照:)
- 如何利用客户端缓存对网站进行优化?
- sqlserver和oracle中对datetime进行条件查询的一点差异
- 冬季宜在室内进行锻炼
- 通过java程序打开网页接受原码并进行数据爬取(链接方式)
- asp.net在前台将指定字符串按指定长度进行截取并用其他字符串替换方法
- eclipse中一些常用快捷键,与用vs.net软件进行c#编程时进行相同的快捷键的设置
- 拦截asp.net输出流并进行处理的方法
- python os模块进行文件的删除与重命名
- 对学生成绩进行评定:小于60为"E",60~69为"D",70~79为"C",80~89为"b",90以上为"A"
- jQuery拖动元素并对元素进行重新排序
- 使用Spring进行切面(AOP)编程
- 通过js进行页面跳转
- 求教,是否直接可以调用android的libmedia.so库进行音频播放
- Scala使用隐式转换进行比较
- Java中进行异常处理时的三种输出结果
- 定期进行日志整理的php函数
- radio的enable状态改变时对它进行操作