Principal component analysis

原创 2015年11月17日 17:16:57

先整理下思路:
前两天学了下聚类分析,主要是系统聚类法和动态聚类法
系统聚类法主要是通过最近距离实现的,R函数hclust()函数,中间还有画谱系图以及确定聚类(rect.hclust)的情况
动态聚类法,之所以称为动态,因为我们是先初步分类,再根据某种最优原则不断修改迭代各个类别;R函数kmeans()函数

下面接着薛毅老师的书《统计建模与R软件》[书有点了老,但是里面的理论思想还是值得看]

主成分分析

基本介绍:
主成分分析是将多指标化为少数几个综合指标的一种统计分析方法,由pearson提出。
主成分分析是一种通过降维技术把多个变量化成少数几个主成分的方法.(判别分析应该也算一种降维方法吧,找到判别函数,将原样本映射到低维空间)

基本思想:
根据样本矩阵的特征值,最大的特征值为第一主成分,第二大特征值为第二主成分,以此类推。主成分个数m的依据是使累积方差贡献率达到80%~90%

线性变换

a1是最大特征值对应的特征向量,我们的目的就是选择z1,z2,…..zm代替x1,x2,…..,xp,(m<p)达到降维的目的。

相关的R函数:
(1)princomp()函数,格式如下:
princomp(formula,data,subset,na.action)
princomp(x,cor=FALSE,scores=TRUE,covmat=NULL,subset=rep(TRUE,nrow(as.matrix(x))),….)
说明:formula是没有响应变量的公式,data是数据框
x是用作主成分分析的数据框,以数值矩阵或数据框的形式给出;
cor(logical):当cor=T时,表示用样本的相关矩阵做主成分分析,当 cor=FALSE(默认值)表示用样本的协方差阵作相关分析;

(2)summary()函数提取主成分的信息
summary(object,loadings=FALSE,cutoff=0.1,…)
说明:object是由princomp() 得到的对象,loadings(logical):TRUE表示显示loadings的内容,FALSE表示不显示.

(3)loadings()函数是显示主成分分析或因子分析中loadings的内容
loadings(x) #x是由函数princomp()得到的对象

(4)predict()函数是预测主成分的值
predict(object,newdata,…)
object是由princomp()得到的对象,newdata是由预测值构成的数据框,当newdata为默认值时,预测已有数据的主成分.

(5)screeplot()函数,是画出主成分的碎石图,其使用格式为:
screeplot(x,npcs=min(10,length(x$sdev),type=c(“barplot”,”lines”),main=deparse(substitute(x)),…)
说明:x是由princomp()得到的对象,npcs是画出的主成分的个数,type是描述画出的碎石图的类型。

示例:
随机抽取某年级30名学生,测量其身高、体重、胸围和坐高,对这4项指标数据作主成分分析.

   R
   #用数据框形式输入数据
   student<-data.frame(
   X1=c(148, 139, 160, 149, 159, 142, 153, 150, 151, 139, 
        140, 161, 158, 140, 137, 152, 149, 145, 160, 156, 
        151, 147, 157, 147, 157, 151, 144, 141, 139, 148), 
   X2=c(41, 34, 49, 36, 45, 31, 43, 43, 42, 31, 
        29, 47, 49, 33, 31, 35, 47, 35, 47, 44,
        42, 38, 39, 30, 48, 36, 36, 30, 32, 38),
   X3=c(72, 71, 77, 67, 80, 66, 76, 77, 77, 68, 
        64, 78, 78, 67, 66, 73, 82, 70, 74, 78, 
        73, 73, 68, 65, 80, 74, 68, 67, 68, 70),
   X4=c(78, 76, 86, 79, 86, 76, 83, 79, 80, 74, 
        74, 84, 83, 77, 73, 79, 79, 77, 87, 85, 
        82, 78, 80, 75, 88, 80, 76, 76, 73, 78)
)
###做主成分分析
student.pr <- princomp(student,cor=T)
summary(student.pr,loadings=TRUE)

结果:
   Importance of components:
                          Comp.1     Comp.2     Comp.3     Comp.4
Standard deviation     1.8817805 0.55980636 0.28179594 0.25711844
Proportion of Variance 0.8852745 0.07834579 0.01985224 0.01652747
Cumulative Proportion  0.8852745 0.96362029 0.98347253 1.00000000

Loadings:
   Comp.1 Comp.2 Comp.3 Comp.4
X1  0.497  0.543 -0.450  0.506
X2  0.515 -0.210 -0.462 -0.691
X3  0.481 -0.725  0.175  0.461
X4  0.507  0.368  0.744 -0.232

结果显示了主成分的标准差(相应特征值的开方)、方差的贡献率和方差的累积贡献率;
语句student.pr <- princomp(student,cor=T)还可以写成:
student.pr <- princomp(~x1+x2+x3+x4,data=student,cor=TRUE),两者是等价的。

summary()函数的参数loadings=TRUE,列出了荷载的内容,它实际上就是主成分对应于原始变量x1,x2,x3,x4的系数(包含各个变量信息的多少,也即主成分对应的特征向量)。

由于结果中前两个主成分的累积贡献率已经达到96%,另外两个主成分可以舍去,达到降维的目的.可以分析得到,第一主成分为大小因子,第二主成分为体型因子。

“`
####各个样本的主成分的值
predict(student.pr)

#####主成分的碎石图
screeplot(student.pr,type=”lines”)
主成分碎石图

*向量不能看作是只有一列或一行的矩阵,因为矩阵有一种特殊的属性,即行数和列数

版权声明:本文为博主原创文章,未经博主允许不得转载。

PCA(Principal Component Analysis)主成分分析

PCA(Principal Component Analysis),即主成分分析,主要用于数据降维。 对于一组样本的feature组成的多维向量,多维向量里的某些元素本身没有区分性,比如某个元素在所...
  • whatwho_518
  • whatwho_518
  • 2014年08月20日 12:11
  • 2733

主成分分析PCA(Principal Component Analysis)介绍

很久之前,有一次做人脸识别的时候用过PCA,大概记得是降维用的,然后前段时间用到LDA的时候顺带看到PCA才发现忘的差不多了,干脆把一些资料整理一下吧。 一.K-L变换 说PCA的...
  • kingskyleader
  • kingskyleader
  • 2012年07月10日 23:40
  • 15366

在Python中一步一步实现Principal Component Analysis(PCA)

主成分分析的主要目的是分析数据以识别模式和查找模式,以最小的信息丢失来降低数据集的维度。主成分分析的期望结果是将一个特征空间(包括n个d维的样本的数据集)映射到一个较小的子空间上来较好的表示数据。较多...
  • u010798503
  • u010798503
  • 2017年04月12日 20:24
  • 285

Implementing a Principal Component Analysis (PCA) in Python step by step

Implementing a Principal Component Analysis (PCA) in Python step by step -- written by Sebastian ...
  • ken_niuliqiang
  • ken_niuliqiang
  • 2014年04月18日 12:30
  • 1321

PCA(Principal Component Analysis 主成分分析)原理及MATLAB实现

关于PCA的原理参见:PCA原理PCA:一种通过特征的线性组合来实现降维的方法,目的就是在尽可能好的代表原始数据的前提下,通过线性变换将样本数据投影到地位空间中。 如图示意,二维样本分别投影到e1、...
  • akadiao
  • akadiao
  • 2017年06月26日 21:35
  • 401

PCA(Principal Component Analysis)主成分分析数学原理

感谢原文作者,转载收藏来学习。原文地址http://blog.codinglabs.org/articles/pca-tutorial.html PCA(Principal Componen...
  • study_000
  • study_000
  • 2017年04月07日 10:20
  • 434

机器学习:Principal components analysis (主分量分析)

Principal components analysis 这一讲,我们简单介绍Principal Components Analysis(PCA),这个方法可以用来确定特征空间的子空间,用一种更加...
  • shinian1987
  • shinian1987
  • 2016年05月11日 08:43
  • 7546

主成分分析(Principal Component Analysis,PCA)是什么作用?

主成分分析(Principal Component Analysis,PCA), 是一种统计方法。通过正交变换将一组可能存在相关性的变量转换为一组线性不相关的变量,转换后的这组变量叫主成分。在实际课题...
  • caimouse
  • caimouse
  • 2017年03月06日 20:36
  • 877

PCA(Principal Component Analysis)主成分分析,通俗解释。

PCA是一种数据降维方法,下文就该方法原理做具体理解。PCA处理过程: 形成样本矩阵,样本去中心化 计算样本矩阵的协方差 对协方差矩阵做特征值分解,选取最大的前P隔特征值对应的特征向量,组成新的投影矩...
  • bingo281002
  • bingo281002
  • 2017年11月20日 14:42
  • 64

A tutorial on Principal Components Analysis - 主成分分析(PCA)教程

A tutorial on Principal Components Analysis 原著:Lindsay I Smith, A tutorial on Principal Components ...
  • aiwuzhi12
  • aiwuzhi12
  • 2017年01月29日 16:48
  • 279
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Principal component analysis
举报原因:
原因补充:

(最多只允许输入30个字)