您的位置:首页 > 其它

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


结果对比



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息