主成分分析方法及matlab运用解释

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

主成分分析方法

在许多实际问题中,多个变量之间是具有一定的相关关系的。因此,我们就会很自然地想到,能否在各个变量之间相关关系研究的基础上,用较少的新变量代替原来较多的变量,而且使这些较少的新变量尽可能多地保留原来较多的变量所反映的信息事实上,这种想法是可以实现的,这里介绍的主成分分析方法就是综合处理这种问题的一种强有力的方法。 一、主成分分析的基本原理

主成分分析是把原来多个变量化为少数几个综合指标的一种统计分析方法,从数学角度来看,这是一种降维处理技术。假定有n 个地理样本,每个样本共有p 个变量描述,这样就构成了一个n×p 阶的地理数据矩阵:

11

12121

2221

2

p p n n np

x x x x x x X x x x ⎧⎪⎪=⎨

⎪⎪⎩(1)

如何从这么多变量的数据中抓住地理事物的内在规律性呢要解决这一问题,自然要在p 维空间中加以考察,这是比较麻烦的。为了克服这一困难,就需要进行降维处理,即用较少的几个综合指标来代替原来较多的变量指标,而且使这些较少的综合指标既能尽量多地反映原来较多指标所反映的信息,同时它们之间又是彼此独立的。那么,这些综合指标(即新变量)应如何选取呢显然,其最简单的形式就是取原来变量指标的线性组合,适当调整组合系数,使新的变量指标之间相互独立且代表性最好。

如果记原来的变量指标为x 1,x 2,…,x p ,它们的综合指标——新变量指标为z 1,z 2,…,zm (m≤p)。则

11111221221122221122

,,.........................................,p p

p p m m m mp p z l x l x l x z l x l x l x z l x l x l x

=+++⎧⎪

=+++⎪⎨

⎪⎪=+++⎩(2)

在(2)式中,系数l ij 由下列原则来决定:

(1)z i 与z j (i≠j;i ,j=1,2,…,m)相互无关;

(2)z 1是x 1,x 2,…,x p 的一切线性组合中方差最大者;z 2是与z 1不相关的x 1,x 2,…,x p 的所有线性组合中方差最大者;……;z m 是与z 1,z 2,……z m-1都不相关的x 1,x 2,…,x p 的所有线性组合中方差最大者。

这样决定的新变量指标z 1,z 2,…,zm 分别称为原变量指标x 1,x 2,…,x p 的第一,第二,…,第m 主成分。其中,z 1在总方差中占的比例最大,z 2,z 3,…,z m 的方差依次递减。在实际问题的分析中,常挑选前几个最大的主成分,这样既减少了变量的数目,又抓住了主要矛盾,简化了变量之间的关系。

从以上分析可以看出,找主成分就是确定原来变量x j (j=1,2,…,p)在诸主成分z i (i=1,2,…,m)上的载荷l ij (i=1,2,…,m ;j=1,2,…,p),从数学上容易知道,它们分别是x 1,x 2,…,x p 的相关矩阵的m 个较大的特征值所对应的特征向量。

二、主成分分析的计算步骤

通过上述主成分分析的基本原理的介绍,我们可以把主成分分析计算步骤归纳如下:

(1) 计算相关系数矩阵

11

121212221

2

p p p p pp

r r r r r r R r r r ⎧⎪⎪=⎨

⎪⎪⎩(3)

在公式(3)中,r ij (i ,j=1,2,…,p)为原来变量x i 与x j 的相关系数,其计算公式为

因为R 是实对称矩阵(即r ij =r ji ),所以只需计算其上三角元素或下三角元素即可。

(2)计算特征值与特征向量

首先解特征方程|λI -R |=0求出特征值λi (i=1,2,…,p),并使其按大小顺序排列,即λ1≥λ2≥…,≥λp ≥0;然后分别求出对应于特征值λi 的特征向量e i (i=1,2,…,p)。

(2) 计算主成分贡献率及累计贡献率

主成分i

z 贡献率:1/(1,2,

,)

p

i k k r i p γ==∑,累计贡献率:

1

1

/p

m k k

k k γγ

==∑∑。

一般取累计贡献率达85-95%的特征值λ1,λ2,…,λm 所对应的第一,第二,……,第m (m≤p)个主成分。

(3) 计算主成分载荷

(,)(,1,2,,)

k i ki p z x i k p ==(5)

由此可以进一步计算主成分得分:

11

12121

2221

2

m m n n nm

z z z z z z Z z z z ⎧⎪⎪=⎨⎪⎪⎩(6)

matlab:princomp 解释 主成分分析函数:

[coeff,score,letent]=princomp(x);

供献率:每一维数据对于区分全部数据的供献,供献率最大的显然是主成分,第二大的是次主成分......

[coef ,score ,latent ,t2] = princomp (x );

x :为要输入的n 维原始数据。带入这个matlab 自带函数,将会生成新的n 维加工后的数据(即score )。此数据与之前的n 维原始数据一一对应。

score:生成的n维加工后的数据存在score里。它是对原始数据进行的解析,进而在新的坐标系下获得的数据。他将这n维数据按供献率由大到小分列。(即在改变坐标系的景象下,又对n维数据排序)

latent:是一维列向量,每一个数据是对应score里响应维的供献率,因为数占领n维所以列向量有n个数据。由大到小分列(因为score也是按供献率由大到小分列)。

coef:是系数矩阵。经由过程cofe可以知道x是如何转换成score的。但这个转换不是单纯的转换,必须使用下列计算方法,即score(:,i)=coef*(x(:,i)-mean(x(:,i))),这样才能得到。

用你的原矩阵x*coeff(:,1:n)才是你要的的新数据,其中的n是你想降到多少维。

而n的取值取决于对特征值的累计贡献率的计算。

相关文档
最新文档