主成分分析PCA(含有详细推导过程以和案例分析matlab版)
PCA技术在数据挖掘方面的应用(含matlab代码)
数据挖掘大作业——PCA 姓名:***学号:********时间:2013年4月26日主分量分析一、PCA简介主成分分析(Principal Component Analysis, 简称PCA)是一种常用的基于变量协方差矩阵对信息进行处理、压缩和抽提的有效方法。
算法如下:Step1 分别求各维的平均值,然后对于所有的样例,都减去对应的均值,得到DataAdjust(m*n)Step2 求特征协方差矩阵。
Step3 求协方差的特征值和特征向量,得到特征向量与特征值Step4 将特征值按照从大到小的顺序排序,选择其中最大的k个,然后将其对应的k个特征向量分别作为列向量组成特征向量矩阵。
Step5 将样本点投影到选取的特征向量上。
假设样例数为m,特征数为n,减去均值后的样本矩阵为DataAdjust(m*n),协方差矩阵是n*n,选取的k个特征向量组成的矩阵为EigenVectors(n*k)。
那么投影后的数据FinalData为二、代码clear allclcload('C:\segment.dat');class=segment;%% 求DataAjustfor j=1:19u=mean(class(:,j));DataAjust(:,j)=class(:,j)-u;endd=cov(class(:,1:19));[b2,b1]=eig(d);eigvalue=eig(d);vector=b2;[e,f]=sort(eigvalue);%k=4;%说明压缩维数for k=1:19for i=1:kEigvector(:,i)=vector(:,f(20-i));endfinal=DataAjust*Eigvector;final(:,k+1)=class(:,20);w(:,1)=final(:,k+1);for Tencount=1:10c=randperm(2310);m=1;p=1;for category=1:7n=0;for j=1:size(c,2)if w(c(j))==categoryn=n+1;b(n)=c(j);endendd=floor(size(b,2)*0.1);train(m:m+d-1,:)=final(b(1:d),:);m=m+d;%train(201,:)=k;% test(:,p:p+size(b,2)-d-1)=a(:,b(d+1:size(b,2)));% p=p+size(b,2)-d;%test(201,:)=k;b=[];end%% 分类test=final;kmeans=1;%指定近邻方式for x=1:size(test,1)for y=1:size(train,1)%%distance=0;for k1=1:kdistance=distance+(test(x,k1)-train(y,k1)).^2;enddis(y)=distance;end[z,v]=sort(dis);p1=zeros(1,7);for n=1:kmeansfor q1=1:7if train(v(n),k+1)==q1p1(q1)=p1(q1)+1;endendend[z1,v1]=max(p1);test(x,k+2)=v1;end%% 统计识别率count=0;for i=1:size(test,1)if test(i,k+1)==test(i,k+2)count=count+1;endendlv(Tencount)=count/2310;endlv1(k)=mean(lv);train=[];endk=1:1:19;lv2=lv1;plot(k,lv2,'b-','Marker','o','LineWidth',2);%hold on;%m2p=linspace(0,19,28);%plot(m2p,spline(k,lv2,m2p),'r-','LineWidth',2); grid on;title('降到1—19维时识别率统计');三、结果截图及分析由上图可知,当把数据维数降至7维或以上时分类效果已经趋于稳定。
matlab主成分分析PCA
matlab主成分分析PCA %基于主成分分析的特征提取代码%读取原始数据,调⽤三个⼦函数,输出主成分分析结果%command%[fid,vector,v1,result]=cwprint('data.txt',145,55)function [fid,vector,v1,result]=cwprint(filename,a,b)fid=fopen(filename,'r')vector=fscanf(fid,'%g',[a,b]);fprintf('标准化结果如下:\n')v1=cwstd(vector)result=cwfac(v1);%result为因⼦载荷矩阵;最终主成分变量解释通过载荷矩阵分析得出;%对原始数据进⾏标准化function std=cwstd(vector) %矩阵标准化:消除量纲影响cwsum=sum(vector,1);[a,b]=size(vector);for i=1:afor j=1:bstd(i,j)=vector(i,j)/cwsum(j);endend%主成分分析%cwfac()函数作⽤:%计算相关系数矩阵%计算特征值和特征向量%对主成分进⾏排序%计算个特征值贡献率及累计贡献率(由于限定主成分个数<10,所以设置为累计贡献率>80%)%挑选主成分,输出主成分个数;%计算主成分载荷(主成分和原特征之间的关系:后续分析主成分含义的依据)function result=cwfac(vector)fprintf('相关系数矩阵:\n')std=corrcoef(vector); %求解相关系数矩阵(各个特证间的相关程度)fprintf('特征向量(vec)及特征值(val):\n')[vec,val]=eig(std); %求解特征向量和特征值newval=diag(val); %特征值组成对⾓矩阵[y,i]=sort(newval); %特征值从⼤到⼩排序fprintf('特征根排序:\n')for z=1:length(y)newy(z)=y(length(y)+1-z);endfprintf('%g\n',newy)rate=y/sum(y);fprintf('\n 贡献率:\n')newrate=newy/sum(newy)sumrate=0;newi=[];for k=length(y):-1:1sumrate=sumrate+rate(k);newi(length(y)+1-k)=i(k);if sumrate>0.8 %设定贡献率;>0.85为11个主成分break;endendfprintf('主成分数:%g\n\n',length(newi));fprintf('主成分在和:\n')for p=1:length(newi)for q=1:length(y)result(q,p)=sqrt(newval(newi(p)))*vec(q,newi(p));endenddisp(result)%坐标变换,得到回归⽤的输⼊数据:即:%将原始数据⽤主成分(线性⽆关)表⽰,作为回归的输⼊。
主成分分析(PCA)算法介绍及matlab实现案例
主成分分析(PCA)算法介绍及matlab实现案例主成分分析经常被⽤做模型分类时特征的降维,本篇⾸先介绍PCA的步骤,并根据步骤撰写对应的MATLAB代码,最后指明使⽤PCA的步骤。
我们在做分类时,希望提取的特征能够最⼤化将数据分开,如果数据很紧密,模型就⽐较难将其分开,如果数据⽐较离散,那么就⽐较容易分开,换句话说,数据越离散,越容易分开。
那怎么让数据离散呢?离散⼜⽤什么指标衡量呢?统计学的知识告诉我们,数据越离散,⽅差越⼤。
因此,PCA的问题就变为:寻找⼀个坐标轴,使得数据在该坐标轴上⾯离散度最⾼。
也就是寻找⼀个基使得所有数据在这个基上⾯的投影值的⽅差最⼤。
那具体怎么做呢?科学家们已经帮我们做好了,如下步骤:设有m个样本,每个样本有n个特征,组成m⾏n列的矩阵1)将每⼀列特征进⾏均值化处理,特征归⼀化,也称为数据中⼼平移到坐标原点2)求取协⽅差矩阵3)求取协⽅差矩阵的特征值和特征向量4)将特征向量按对应特征值⼤⼩从上到下按⾏排列成矩阵,取前K列组成系数矩阵matlab代码function [coffMatrix,lowData,eigValSort,explained,meanValue] = myPCA(data)%data为row⾏col列矩阵,row为样本数量,col为特征列,每⼀列代表⼀个特征[row , col] = size(data);% 求出每⼀列的均值meanValue = mean(data);% 将每⼀列进⾏均值化处理,特征归⼀化,数据中⼼平移到坐标原点normData = data - repmat(meanValue,[row,1]);%求取协⽅差矩阵covMat = cov(normData);%求取特征值和特征向量[eigVect,eigVal] = eig(covMat);% 将特征向量按对应特征值⼤⼩从上到下按⾏排列成矩阵[sortMat, sortIX] = sort(eigVal,'descend');[B,IX] = sort(sortMat(1,:),'descend');coffMatrix = eigVect(:,IX);% 排序后的特征向量就是新的坐标系lowData = normData * coffMatrix;% 分量得分explained = 100*B/sum(B);%特征值eigValSort = B;%%% [U,S,V] = svd(data);end我们在实际应⽤PCA的时候需要注意保留以下⼏个值。
matlab主成分分析案例
1.设随机向量X=(X 1,X 2,X 3)T 的协方差与相关系数矩阵分别为⎪⎪⎭⎫ ⎝⎛=∑25441,⎪⎪⎭⎫⎝⎛=18.08.01R 分别从∑,R 出发,求X 的各主成分以及各主成分的贡献率并比较差异况。
解答:>> S=[1 4;4 25];>> [PC,vary,explained]=pcacov(S); 总体主成分分析:>> [PC,vary,explained]=pcacov(S) 主成分交换矩阵: PC =-0.1602 -0.9871 -0.9871 0.1602 主成分方差向量: vary = 25.6491 0.3509各主成分贡献率向量 explained = 98.6504 1.3496则由程序输出结果得出,X 的主成分为: Y 1=-0.1602X 1-0.9871X 2 Y 2=-0.9871X 1+0.1602X 2两个主成分的贡献率分别为:98.6504%,1.3496%;则若用第一个主成分代替原来的变量,信息损失率仅为1.3496,是很小的。
2.根据安徽省2007年各地市经济指标数据,见表5.2,求解: (1)利用主成分分析对17个地市的经济发展进行分析,给出排名; (2)此时能否只用第一主成分进行排名?为什么?解答:(1)>> clear>> A=[491.70,380.31,158.39,121.54,22.74,439.65,344.44,17.43;21.12,30.55,6.40,12.40,3.31,21.17,17.71,2.03;1.71,2.35,0.57,0.68,0.13,1.48,1.36,-0.03;9.83,9.05,3.13,3.43,0.64,8.76,7.81,0.54;64.06,77.86,20.63,30.37,5.96,63.57,52.15,4.71;30.38,46.90,9.19,9.83,17.87,28.24,21.90,3.80;31.20,70.07,8.93,18.88,33.05,31.17,26.50,2.84;79.18,62.09,20.78,24.47,3.51,71.29,59.07,6.78;47.81,40.14,17.50,9.52,4.14,45.70,34.73,4.47;104.69,78.95,29.61,25.96,5.39,98.08,84.81,3.81;21.07,17.83,6.21,6.22,1.90,20.24,16.46,1.09;214.19,146.78,65.16,41.62,4.39,194.98,171.98,11.05;31.16,27.56,8.80,9.44,1.47,28.83,25.22,1.05;12.76,14.16,3.66,4.07,1.57,11.95,10.24,0.73;6.45,5.37,2.39,2.20,0.40,5.97,4.79,0.52;39.43,44.60,15.17,15.72,3.27,36.03,27.87,3.48;5.02,3.62,1.63,1.42,0.53,4.45,4.04,0.02];得到的相关系数矩阵为:>> R=corrcoef(A)R =1.0000 0.9877 0.9988 0.9820 0.4281 0.9999 0.9980 0.95100.9877 1.0000 0.9884 0.9947 0.5438 0.98850.9835 0.94850.9988 0.9884 1.0000 0.9824 0.4294 0.99840.9948 0.94620.9820 0.9947 0.9824 1.0000 0.5051 0.98290.9763 0.93910.4281 0.5438 0.4294 0.5051 1.0000 0.43110.4204 0.45570.9999 0.9885 0.9984 0.9829 0.4311 1.00000.9986 0.95300.9980 0.9835 0.9948 0.9763 0.4204 0.99861.0000 0.95690.9510 0.9485 0.9462 0.9391 0.4557 0.95300.9569 1.0000计算特征值与特征向量:>> [v,d]=eig(corrcoef(A))v =-0.3723 0.1179 0.1411 -0.2543 -0.0459 0.5917-0.5641 0.3041-0.3741 -0.0343 0.1606 0.2247 -0.1514 -0.6284-0.1535 0.5841-0.3719 0.1152 0.1957 -0.1954 -0.6909 -0.13510.0383 -0.5244-0.3713 0.0096 0.2368 0.7875 0.2168 0.23850.0303 -0.2845-0.1949 -0.9689 -0.0004 -0.1242 0.0119 0.06280.0151 -0.0593-0.3725 0.1143 0.1222 -0.2302 0.0924 0.22590.7946 0.2988-0.3716 0.1272 0.0353 -0.3800 0.6591 -0.3521-0.1557 -0.3428-0.3613 0.0596 -0.9185 0.1165 -0.0872 0.03020.0022 -0.0096d =7.1135 0 0 0 0 0 0 00 0.7770 0 0 0 0 0 00 0 0.0810 0 0 0 0 00 0 0 0.0237 0 0 0 00 0 0 0 0.0041 00 00 0 0 0 0 0.0006 0 00 0 0 0 0 00.0000 00 0 0 0 0 0 0 0.0001各主成分贡献率:>> w=sum(d)/sum(sum(d))w =0.8892 0.0971 0.0101 0.0030 0.0005 0.00010.0000 0.0000计算各个主成分得分:>> F=[A-ones(17,1)*mean(A)]*v(:,8)F =224.3503-24.0409-40.0941-35.90754.7573-12.6102-2.85731.8038-13.901213.4541-29.384762.3383-23.3175-32.4285-38.1309-14.8637-39.1675>> [F1,I1]=sort(F,'descend')F1按从大到小的顺序给个主成分得分排名:F1 =224.350362.338313.45414.75731.8038-2.8573-12.6102-13.9012-14.8637-23.3175-24.0409-29.3847-32.4285-35.9075-38.1309-39.1675-40.0941I1给出各个名次的序号:I1 =1121058769161321114415173>> [F2,I2]=sort(I1)F2 =1234567891011121314151617I2给出个城市排名,即所求排名:I2 =1111714476583122101315916(2)由于第一主成分的贡献率大于80%,其他各成分贡献率都太小,所以只能用第一主成分进行排名。
主成分分析报告matlab程序
主成分分析报告matlab程序主成分分析报告 Matlab 程序在数据分析和处理的领域中,主成分分析(Principal Component Analysis,PCA)是一种常用且强大的工具。
它能够将多个相关变量转换为一组较少的不相关变量,即主成分,同时尽可能多地保留原始数据的信息。
在 Matlab 中,我们可以通过编写程序来实现主成分分析,这为我们的数据处理和理解提供了极大的便利。
主成分分析的基本思想是找到数据中的主要方向或模式。
这些主要方向是通过对数据的协方差矩阵进行特征值分解得到的。
最大的特征值对应的特征向量就是第一主成分的方向,第二大的特征值对应的特征向量就是第二主成分的方向,以此类推。
在 Matlab 中,我们首先需要导入数据。
假设我们的数据存储在一个名为`data` 的矩阵中,每一行代表一个观测值,每一列代表一个变量。
```matlabdata = load('your_data_filetxt');%替换为您的数据文件路径```接下来,我们需要对数据进行中心化处理,即每个变量减去其均值。
```matlabcentered_data = data repmat(mean(data), size(data, 1), 1);```然后,计算协方差矩阵。
```matlabcov_matrix = cov(centered_data);```接下来进行特征值分解。
```matlabV, D = eig(cov_matrix);````V` 是特征向量矩阵,`D` 是对角矩阵,其对角元素是特征值。
我们对特征值进行从大到小的排序,并相应地对特征向量进行重新排列。
```matlablambda, index = sort(diag(D),'descend');sorted_V = V(:, index);```此时,`sorted_V` 的每一列就是一个主成分的方向。
为了计算每个观测值在主成分上的得分,我们可以使用以下代码:```matlabprincipal_components = centered_data sorted_V;```我们还可以计算每个主成分解释的方差比例。
主成分分析PCA(含有详细推导过程以和案例分析matlab版)
主成分分析法(PCA)在实际问题中.我们经常会遇到研究多个变量的问题.而且在多数情况下.多个变量之间常常存在一定的相关性。
由于变量个数较多再加上变量之间的相关性.势必增加了分析问题的复杂性。
如何从多个变量中综合为少数几个代表性变量.既能够代表原始变量的绝大多数信息.又互不相关.并且在新的综合变量基础上.可以进一步的统计分析.这时就需要进行主成分分析。
I. 主成分分析法(PCA)模型(一)主成分分析的基本思想主成分分析是采取一种数学降维的方法.找出几个综合变量来代替原来众多的变量.使这些综合变量能尽可能地代表原来变量的信息量.而且彼此之间互不相关。
这种将把多个变量化为少数几个互相无关的综合变量的统计分析方法就叫做主成分分析或主分量分析。
主成分分析所要做的就是设法将原来众多具有一定相关性的变量.重新组合为一组新的相互无关的综合变量来代替原来变量。
通常.数学上的处理方法就是将原来的变量做线性组合.作为新的综合变量.但是这种组合如果不加以限制.则可以有很多.应该如何选择呢?如果将选取的第一个线性组合即第一个综合变量记为1F .自然希望它尽可能多地反映原来变量的信息.这里“信息”用方差来测量.即希望)(1F Var 越大.表示1F 包含的信息越多。
因此在所有的线性组合中所选取的1F 应该是方差最大的.故称1F 为第一主成分。
如果第一主成分不足以代表原来p 个变量的信息.再考虑选取2F 即第二个线性组合.为了有效地反映原来信息.1F 已有的信息就不需要再出现在2F 中.用数学语言表达就是要求0),(21 F F Cov .称2F 为第二主成分.依此类推可以构造出第三、四……第p 个主成分。
(二)主成分分析的数学模型 对于一个样本资料.观测p 个变量p x x x ,,21.n 个样品的数据资料阵为:⎪⎪⎪⎪⎪⎭⎫⎝⎛=np n n p p x x x x x x x x x X 212222111211()p x x x ,,21=其中:p j x x x x nj j j j ,2,1,21=⎪⎪⎪⎪⎪⎭⎫ ⎝⎛=主成分分析就是将p 个观测变量综合成为p 个新的变量(综合变量).即⎪⎪⎩⎪⎪⎨⎧+++=+++=+++=ppp p p p pp p p x a x a x a F x a x a x a F x a x a x a F 22112222121212121111 简写为:p jp j j j x x x F ααα+++= 2211p j ,,2,1 =要求模型满足以下条件:①j i F F ,互不相关(j i ≠.p j i ,,2,1, =) ②1F 的方差大于2F 的方差大于3F 的方差.依次类推 ③.,2,1122221p k a a a kp k k ==+++于是.称1F 为第一主成分.2F 为第二主成分.依此类推.有第p 个主成分。
Matlab主成分分析:详解+实例
主成分分析
总结:
主 原始变量 目标
成
X1, , Xm
主成分
Z1, ,Zp
分
线性组合
分
Z1, , Zp 互不相关
析 的
信息不重合 按‘重要性’排序
求解主 成分
思
Z1, , Zp
想 Var(Z1) Var(Z2 ) Var(Zp )
r
i r 2(z j , xi ),
j1
这里r(z j , xi )表示zj 与 xi 的相关系数。
主成分分析
1 2 0
例1 设 x [ x1, x2 , x3 ]T 且 R 2 5 0
0 0 0
则可算得1 5.8284,2 0.1716,如果我们仅取第
一个主成分,由于其累积贡献率已经达到97.14%, 似乎很理想了,但如果进一步计算主成分对原变量的
c1 x1+ c2 x2+… +cp xp
我们希望选择适当的权重能更好地区分学生的 成绩. 每个学生都对应一个这样的综合成绩, 记 为s1, s2,…, sn , n为学生人数. 如果这些值很分散, 表明区分好, 即是说, 需要寻找这样的加权, 能使 s1, s2,…, sn 尽可能的分散, 下面来看的统计定义.
x5:交通和通讯,
x6:娱乐教育文化服务,
x7:居住,
x8:杂项商品和服务.
对居民消费数据做主成分分析.
聚类分析
聚类分析
聚类分析
计算的Matlab程序如下:
clc,clear load czjm1999.txt
%把原始数据保存在纯文本文件czjm1999.txt中
主成分分析(PCA)详解(附带详细公式推导)
主成分分析(PCA)详解(附带详细公式推导)1.假设有一个m维的数据集X,其中每个数据点有n个样本。
需要将其降维到k维,且k<m。
2. 首先需进行数据的中心化,即对每个维度的数据减去该维度的均值,即X' = X - mean(X)。
3.然后计算协方差矩阵C=(1/n)*X'*X'^T,其中X'^T表示X'的转置。
4.对协方差矩阵C进行特征值分解,得到特征值和对应的特征向量。
5.接下来,将特征值按从大到小的顺序排列,选取前k个最大的特征值及其对应的特征向量。
6. 最后,将选取的k个特征向量组成一个投影矩阵W =[e1,e2,...,ek],其中ei表示第i个特征向量。
7.对中心化的数据集进行降维,Y=W*X',其中Y即为降维后的数据。
上述推导过程中,协方差矩阵C的特征值代表了数据的方差,特征向量则代表了数据的主成分。
选取最大的k个特征值和对应的特征向量,即实现了数据的降维。
PCA的应用包括但不限于以下几个方面:1.数据可视化:PCA能够将高维度的数据映射到二维或三维空间,从而方便数据的可视化展示。
2.数据预处理:PCA能够降低数据的维度,从而减少噪声和冗余信息,提升后续模型的精度和效率。
3.特征提取:PCA能够提取数据中最重要的特征,从而辅助后续建模和特征工程。
4.噪声过滤:PCA能够降低数据的维度,从而过滤掉一些无关的噪声信息。
需要注意的是,PCA只能应用于线性数据,并且假设数据的方差和协方差是固定的。
同时,PCA对于数据中非线性关系的捕捉能力较弱,因此在处理非线性数据时,需考虑使用其他非线性降维方法,如核主成分分析(Kernel PCA)等。
综上所述,PCA是一种常用的多变量数据降维技术,在数据分析和机器学习领域有着广泛的应用。
通过线性变换,PCA将高维度的数据投影到低维空间中,从而减少数据的维度,并保留了数据中的主要信息。
机器学习(MATLAB版)ch09-主成分分析法 教学课件
PCA算法的MATLAB实现
输出参数说明: (1)coe 为主成分系数,就是散布矩阵(协方差矩阵)的特征量矩阵(也就是投影矩阵)。完整输出的情况下是 一个 m x m 阵。每都是一个特征量,按对应的特征值的大小从大到小进行排列。 (2) score 为nx m 阵,满足 score =X*coe。注意,如果使用 pca 时默认中心化(即不对Centered’设置 oF),拿 X*coe 和 score 对比时,必须将X中心化后再乘以 coeft,然后再和 score 对比。同样,如果 pca 使用的是默认值,恢复的X = score *coeff’ (注意转置)是中心化后的数据。 (3)latent 为主成分方差,也就是各特征向量对应的特征值,从大到小进行排列。 (4) tsquared 为t2统计量。 (5)explained 为每一个主成分所贡献的比例,可以更直观地选择所需要降维的维数。 (6)mu为X 按列的均值,仅当Centered’置于on’(默认值)时才会返回此变量。
PCA算法的MATLAB实现
②Centered’(是否中心化),该参数有两种取值:(a)on’(默认中心化)(b)ofF该参数的作用是选择是否对 数据进行中心化,即数据的特征是否进行零均值化(即按列减去均值,如果选择了on’,则可用 score*coef”恢复中心化后的;若选择了of,则可用 score*coef’恢复原始的 X。 ③‘Economy’(经济模式),该参数有两种取值:(a)on’(默认)b)of。有时候输出的 coeff (mx m 矩阵)过 大,而且是没有必要的(因为要降维),所以可以只输出 coeff(以及 score,latent)的前l列,l是低维空间的 维数,这个参数值默认是on’。如果要看见完整的 PCA 结果,则可以设置为“off”。 ④NumComponents’(指定的成分数)这个参数有两种取值:(a)number of variables(默认),(b)scalar integer。输出指定的成分数是更为灵活的 Economy,但是经过试验发现指定成分数仅在小于时有效,大 于时无效。默认是 number of variables (即m,特征个数)。
主成分分析及matlab实现 ppt课件
指标的影响,可单独看成是工业总产值的影响。
ppt课件
21
四.主成分分析的应用
1.主成分分析用于系统评估 利用主成分F1…,Fp做线性组合,并以
每个主成分 Fi 的方差贡献率 作为权数 构造一个综合评价函数:
也称 y 为评估指数,依据对每个系统计算 出的 y 值大小进行排序比较或分类划级。
ppt课件
k 1
n
n
(xki xi )2 (xkj x j )2
k 1
k 1
10
3.求R的特征根 及相应的单位特征向量:
4.写出主成分
ppt课件
11
计算主成分贡献率及累计贡献率
✓ 贡献率
i
p
k
k 1
✓累计贡献率
(i 1,2, , p)
i
k
k 1
p
k
k 1
Y * 0.68998Z1 0.1913Z2
0.4804x
* 1
0.2211x
* 2
0.4825x
* 3
用原变量表示的回归方程
Y 9.130 0.0727x1 0.6091x2 0.1062x3
ppt课件
31
ppt课件
28
包含的信息量次之为29.34%,它的主要代表变量为X3(地理 结构)、X6(资源配置)、X9 (可持续性),其权重系数分别为 0.5299、0.5273、0.4589,第三新因子 Z3包含的信息量为 11.97%,代表总量为 X9(可持续性)、 X5(物质还原),权重 系数分别为0.5933、0.5664。这些代表变量反映了各自对该 新因子作用的大小,它们是生态环境系统中最重要的影响因 素。
pca主成分分析Matlab源码
function[pc, score, latent, tsquare] = princomp(x);% PRINCOMP Principal Component Analysis (centered and scaled data).% [PC, SCORE, LATENT, TSQUARE] = PRINCOMP(X) takes a data matri x X and% returns the principal components in PC, the so-called Z-scores in SCORE S,% the eigenvalues of the covariance matrix of X in LATENT, and Hotelling 's% T-squared statistic for each data point in TSQUARE.% Reference: J. Edward Jackson, A User's Guide to Principal Components % John Wiley & Sons, Inc. 1991 pp. 1-25.% B. Jones 3-17-94% Copyright 1993-2002 The MathWorks, Inc.% $Revision: 2.9 $ $Date: 2002/01/17 21:31:45 $[m,n] = size(x); % 得到矩阵的规模,m行,n列r = min(m-1,n); % max possible rank of x% 该矩阵最大的秩不能超过列数,% 也不能超过行数减1avg = mean(x); % 求每一列的均值,付给一个n维行向量centerx = (x - avg(ones(m,1),:));% x的每个元素减去该列的均值,% 使样本点集合重心与坐标原点重合[U,latent,pc] = svd(centerx./sqrt(m-1),0);% “经济型”的奇异值分解score = centerx*pc; % 得分矩阵即为原始矩阵乘主成分矩阵if nargout < 3, return; endlatent = diag(latent).^2; % 将奇异值矩阵转化为一个向量if (r<N)latent = [latent(1:r); zeros(n-r,1)];score(:,r+1:end) = 0;endif nargout < 4, return; endtmp = sqrt(diag(1./latent(1:r)))*score(:,1:r)';tsquare = sum(tmp.*tmp)';主成分分析[Matlab版]function main()%*************主成份分析************%读入文件数据X=load('data.txt');%==========方法1:求标准化后的协差矩阵,再求特征根和特征向量=================%标准化处理[p,n]=size(X);for j=1:nmju(j)=mean(X(:,j));sigma(j)=sqrt(cov(X(:,j)));endfor i=1:pfor j=1:nY(i,j)=(X(i,j)-mju(j))/sigma(j);endendsigmaY=cov(Y);%求X标准化的协差矩阵的特征根和特征向量[T,lambda]=eig(sigmaY);disp('特征根(由小到大):');disp(lambda);disp('特征向量:');disp(T);%方差贡献率;累计方差贡献率Xsum=sum(sum(lambda,2),1);for i=1:nfai(i)=lambda(i,i)/Xsum;endfor i=1:npsai(i)= sum(sum(lambda(1:i,1:i),2),1)/Xsum;enddisp('方差贡献率:');disp(fai);disp('累计方差贡献率:');disp(psai);%综合评价....略%+============方法2:求X的相关系数矩阵,再求特征根和特征向量================%X的标准化的协方差矩阵就是X的相关系数矩阵R=corrcoef(X);%求X相关系数矩阵的特征根和特征向量[TR,lambdaR]=eig(R);disp('特征根(由小到大):');disp(lambdaR);disp('特征向量:');disp(TR);%%%可以直接调用。
matlab主成分 -回复
matlab主成分-回复在数学和统计学领域中,主成分分析(Principal Component Analysis,简称PCA)是一种常用的降维技术。
它通过找到数据集中最具代表性的主要特征,将高维数据转换为低维数据,从而实现数据的可视化和分析。
本文将详细介绍主成分分析的原理、应用和具体步骤,并为读者提供一些实际应用案例。
一、主成分分析原理主成分分析的基本思想是将多个变量的线性组合表示为新的变量,这些新变量被称为主成分。
主成分是原始变量的组合,具有最大方差,并且之间彼此无关。
主成分分析通过找到最佳的线性组合,使得数据在这些主成分上的投影尽可能分散,从而实现数据降维。
二、主成分分析的应用主成分分析在数据分析和模式识别领域有着广泛的应用。
它可用于数据预处理、特征提取、数据可视化、数据压缩等任务。
主成分分析能够识别数据的重要特征,并简化复杂的数据集,从而更好地理解数据的结构和关系。
三、主成分分析步骤主成分分析通常包括以下步骤:1. 数据标准化:在进行主成分分析之前,首先要将数据进行标准化,使得每个变量具有相同的尺度。
常用的标准化方法包括均值中心化和标准差缩放。
2. 计算协方差矩阵:协方差矩阵反映了数据集中不同变量之间的关系。
通过计算协方差矩阵,可以得到原始数据的方差和协方差信息。
3. 特征值分解:对协方差矩阵进行特征值分解,得到特征值和对应的特征向量。
特征值表示数据在对应特征向量方向上的方差,特征向量表示数据在该方向上的投影。
4. 选择主成分:根据特征值的大小,选择保留的主成分数量。
通常选择特征值较大的前几个主成分,以保留较多的数据信息。
5. 构建主成分:利用选择的主成分特征向量,将原始数据映射到新的低维空间。
每个主成分可以看作是原始变量的一种线性组合。
6. 主成分解释度:计算每个主成分的解释度,即该主成分所占总方差的比例。
解释度越高,说明该主成分对数据的解释能力越强。
7. 主成分的应用:利用主成分进行数据可视化、数据压缩、分类聚类等任务。
matlab的pca函数说明 -回复
matlab的pca函数说明-回复主题:Matlab中PCA函数的说明引言:主成分分析(Principal Component Analysis,PCA)是一种常用的多元统计方法,用于数据降维和特征提取。
在Matlab中,我们可以使用内置的pca函数进行PCA分析。
本文将详细介绍Matlab中pca函数的使用方法,并逐步解释函数的各个参数和返回值,以帮助读者更好地理解和使用该函数。
正文:1. 函数概述首先,我们来看一下pca函数的概述:[U, S, V] = pca(X)这个函数接受一个输入矩阵X,并返回三个输出变量:U、S和V。
其中,U是输入数据X的主成分(也称为主轴)矩阵,S是X的奇异值矩阵(也称为特征值矩阵),V是主成分变换矩阵。
2. 矩阵输入(X)pca函数的第一个参数是输入矩阵X。
该矩阵通常是一个n×p的矩阵,其中n表示样本数,p表示变量数。
在进行PCA分析之前,我们需要确保输入矩阵X已经去除了均值,并进行了必要的数据归一化操作。
如果没有做这些预处理,可以使用Matlab的函数zscore进行标准化处理,如下所示:X = zscore(X);这样可以确保输入矩阵X的每个变量在均值为0、方差为1的标准正态分布范围内。
3. 输出变量(U、S和V)接下来,我们将逐步解释pca函数的输出变量:U、S和V。
a. U的解释U是输入矩阵X的主成分矩阵。
它的每一列都是一个主成分,按照对应的奇异值的大小进行排序。
这意味着U的第一列是第一个主成分,第二列是第二个主成分,依此类推。
主成分是一组线性无关的变量,用于表示原始数据的维度。
主成分分析的目标是发现这些主成分,并找到能够解释原始数据方差最多的主成分。
b. S的解释S是输入矩阵X的奇异值矩阵,也称为特征值矩阵。
它是一个对角矩阵,对角元素按照降序排列。
奇异值表示主成分的重要性,也称为方差解释比例。
对角元素S(i, i)表示第i个主成分解释的方差比例。
主成分分析法MATLAB的实现
主成分分析法MATLAB的实现在MATLAB中,主成分分析是通过`pca`函数实现的。
`pca`函数的语法如下:```[coeff,score,latent,tsquared,explained,mu] = pca(X)```- `latent`是一个长度为$p$的向量,表示每个主成分的方差。
- `tsquared`是一个长度为$n$的向量,表示每个样本在主成分上的投影平方和。
- `explained`是一个长度为$p$的向量,表示每个主成分的方差贡献率。
- `mu`是一个长度为$p$的向量,表示每个特征的平均值。
下面我们将用一个简单的例子演示如何使用MATLAB进行主成分分析。
假设我们有一个包含4个样本和3个特征的数据集:```matlabX=[1,2,3;2,4,6;3,6,9;4,8,12];```首先,我们需要对数据进行归一化处理,以保证不同特征之间的量纲一致。
```matlabX_norm = zscore(X);```然后,我们可以使用`pca`函数进行主成分分析:```matlab[coeff, score, latent, ~, explained, ~] = pca(X_norm);```在这个示例中,我们只关心`coeff`、`score`、`latent`和`explained`这四个输出。
`coeff`给出了主成分的系数,可以用于计算每个样本在每个主成分上的投影:```matlabproj = score * coeff';````latent`表示每个主成分的方差,我们可以通过对`latent`中的元素求和来得到总方差的百分比贡献:```matlabvar_contrib = cumsum(latent) / sum(latent);````explained`向量可以直接给出每个主成分的方差贡献率。
最后,我们可以绘制一个累积方差贡献率的曲线:```matlabplot(1:length(var_contrib), var_contrib, 'ro-');ylabel('Cumulative Variance Contribution');```这样,我们就完成了主成分分析的实现。
matlab主成分分析案例
1.设随机向量X=(X 1,X 2,X 3)T 的协方差与相关系数矩阵分别为⎪⎪⎭⎫ ⎝⎛=∑25441,⎪⎪⎭⎫ ⎝⎛=18.08.01R 分别从∑,R 出发,求X 的各主成分以及各主成分的贡献率并比较差异况。
解答:>> S=[1 4;4 25];>> [PC,vary,explained]=pcacov(S);总体主成分分析:>> [PC,vary,explained]=pcacov(S)主成分交换矩阵:PC =-0.1602 -0.9871-0.9871 0.1602主成分方差向量:vary =25.64910.3509各主成分贡献率向量explained =98.65041.3496则由程序输出结果得出,X 的主成分为:Y 1=-0.1602X 1-0.9871X 2Y 2=-0.9871X 1+0.1602X 2两个主成分的贡献率分别为:98.6504%,1.3496%;则若用第一个主成分代替原来的变量,信息损失率仅为1.3496,是很小的。
2.根据安徽省2007年各地市经济指标数据,见表5.2,求解:(1)利用主成分分析对17个地市的经济发展进行分析,给出排名;(2)此时能否只用第一主成分进行排名?为什么?解答:(1)>> clear>> A=[491.70,380.31,158.39,121.54,22.74,439.65,344.44,17.43;21.12,30.55,6.40,12.40,3.31,21.17,17.71,2.03;1.71,2.35,0.57,0.68,0.13,1.48,1.36,-0.03;9.83,9.05,3.13,3.43,0.64,8.76,7.81,0.54;64.06,77.86,20.63,30.37,5.96,63.57,52.15,4.71;30.38,46.90,9.19,9.83,17.87,28.24,21.90,3.80;31.20,70.07,8.93,18.88,33.05,31.17,26.50,2.84;79.18,62.09,20.78,24.47,3.51,71.29,59.07,6.78;47.81,40.14,17.50,9.52,4.14,45.70,34.73,4.47;104.69,78.95,29.61,25.96,5.39,98.08,84.81,3.81;21.07,17.83,6.21,6.22,1.90,20.24,16.46,1.09;214.19,146.78,65.16,41.62,4.39,194.98,171.98,11.05;31.16,27.56,8.80,9.44,1.47,28.83,25.22,1.05;12.76,14.16,3.66,4.07,1.57,11.95,10.24,0.73;6.45,5.37,2.39,2.20,0.40,5.97,4.79,0.52;39.43,44.60,15.17,15.72,3.27,36.03,27.87,3.48;5.02,3.62,1.63,1.42,0.53,4.45,4.04,0.02];得到的相关系数矩阵为:>> R=corrcoef(A)R =1.0000 0.9877 0.9988 0.9820 0.4281 0.9999 0.9980 0.95100.9877 1.0000 0.9884 0.9947 0.5438 0.98850.9835 0.94850.9988 0.9884 1.0000 0.9824 0.4294 0.99840.9948 0.94620.9820 0.9947 0.9824 1.0000 0.5051 0.98290.9763 0.93910.4281 0.5438 0.4294 0.5051 1.0000 0.43110.4204 0.45570.9999 0.9885 0.9984 0.9829 0.4311 1.00000.9986 0.95300.9980 0.9835 0.9948 0.9763 0.4204 0.99861.0000 0.95690.9510 0.9485 0.9462 0.9391 0.4557 0.95300.9569 1.0000计算特征值与特征向量:>> [v,d]=eig(corrcoef(A))v =-0.3723 0.1179 0.1411 -0.2543 -0.0459 0.5917-0.5641 0.3041-0.3741 -0.0343 0.1606 0.2247 -0.1514 -0.6284-0.1535 0.5841-0.3719 0.1152 0.1957 -0.1954 -0.6909 -0.13510.0383 -0.5244-0.3713 0.0096 0.2368 0.7875 0.2168 0.23850.0303 -0.2845-0.1949 -0.9689 -0.0004 -0.1242 0.0119 0.06280.0151 -0.0593-0.3725 0.1143 0.1222 -0.2302 0.0924 0.22590.7946 0.2988-0.3716 0.1272 0.0353 -0.3800 0.6591 -0.3521-0.1557 -0.3428-0.3613 0.0596 -0.9185 0.1165 -0.0872 0.03020.0022 -0.0096d =7.1135 0 0 0 0 0 0 00 0.7770 0 0 0 0 0 00 0 0.0810 0 0 0 0 00 0 0 0.0237 0 0 0 00 0 0 0 0.0041 00 00 0 0 0 0 0.0006 0 00 0 0 0 0 00.0000 00 0 0 0 0 0 0 0.0001各主成分贡献率:>> w=sum(d)/sum(sum(d))w =0.8892 0.0971 0.0101 0.0030 0.0005 0.00010.0000 0.0000计算各个主成分得分:>> F=[A-ones(17,1)*mean(A)]*v(:,8)F =224.3503-24.0409-40.0941-35.90754.7573-12.6102-2.85731.8038-13.901213.4541-29.384762.3383-23.3175-32.4285-38.1309-14.8637-39.1675>> [F1,I1]=sort(F,'descend')F1按从大到小的顺序给个主成分得分排名:F1 =224.350362.338313.45414.75731.8038-2.8573-12.6102-13.9012-14.8637-23.3175-24.0409-29.3847-32.4285-35.9075-38.1309-39.1675-40.0941I1给出各个名次的序号:I1 =1121058769161321114415173>> [F2,I2]=sort(I1)F2 =1234567891011121314151617I2给出个城市排名,即所求排名:I2 =1111714476583122101315916(2)由于第一主成分的贡献率大于80%,其他各成分贡献率都太小,所以只能用第一主成分进行排名。
利用Matlab进行主成分分析与因子分析
利用Matlab进行主成分分析与因子分析主成分分析和因子分析是统计学中常用的多元数据分析方法,在数据降维和变量关系探索中有着广泛的应用。
本文将介绍如何使用Matlab进行主成分分析和因子分析,并通过实例演示其具体操作与应用。
一、主成分分析主成分分析(Principal Component Analysis,PCA)是一种降维技术,通过线性变换将原始的高维数据转换为低维空间,使得新的特征变量(主成分)能够尽量保持原始数据的信息。
主成分分析的目标是找到一个能够最大程度解释观测数据方差的新投影,使得新的特征变量之间相互独立。
在Matlab中,可以使用pca函数实现主成分分析。
以一个实例来说明:假设有一组包含5个变量和100个观测样本的数据集,我们希望进行主成分分析。
```matlabdata = rand(100, 5); % 生成100行5列的随机数据[coeff, score, latent, ~, explained] = pca(data);```在上述代码中,首先生成一个100行5列的随机数据集,然后通过pca函数进行主成分分析。
函数返回的coeff代表主成分系数矩阵,score代表样本在主成分上的投影值,latent是每个主成分的方差大小,explained表示每个主成分解释的方差百分比。
主成分分析的结果可以通过绘制累计方差解释图来进行解释。
代码如下所示:```matlabbar(explained);ylabel('方差百分比(%)');title('累计方差解释');```该代码将绘制一个柱状图,横轴代表主成分,纵轴代表方差百分比,可以直观地观察到每个主成分解释的方差比例。
二、因子分析因子分析(Factor Analysis)是一种变量关系探索方法,它可以通过线性组合的方式提取潜在变量(因子),用以解释观测变量之间的相关性。
因子分析的目标是通过最小化观测变量与因子的误差,找到最简单、最能解释变量之间关系的因子。
Matlab中的主成分分析方法与实例分析
Matlab中的主成分分析方法与实例分析引言主成分分析(Principal Component Analysis,PCA)是一种常用的多变量分析方法,广泛应用于数据降维、特征提取和可视化等领域。
在Matlab中,通过调用PCA函数,可以方便地实现主成分分析。
本文将介绍Matlab中的主成分分析方法,并通过实例分析展示其应用。
一、主成分分析方法概述主成分分析通过线性变换将原始数据转换为新的坐标系,使得转换后的变量彼此之间不相关。
在新的坐标系中,第一个主成分具有最大的方差,第二个主成分具有次大的方差,并且与第一个主成分无关,以此类推。
主成分分析的基本思想是将高维数据投影到低维空间上,保留数据中所包含的主要信息,尽可能地减少信息损失。
二、Matlab中的主成分分析函数在Matlab中,通过调用pca函数可以进行主成分分析。
该函数的基本用法如下:\[coeff, score, latent, tsquared, explained, mu] = pca(X)\]其中,X代表待分析的数据矩阵,coeff是主成分系数矩阵,score是数据在主成分上的投影,latent是各主成分的方差,tsquared是数据的Hotelling T平方统计量,explained是各主成分的方差贡献率,mu是数据的均值。
三、主成分分析的实例分析为了进一步说明主成分分析的应用,我们将通过一个实例来展示其具体步骤。
假设我们有一个数据集,包含了100个样本和5个特征。
首先,我们将数据加载到Matlab中,并进行标准化处理,即将每一列的均值变为0,方差变为1。
这样做可以消除不同特征之间的量纲差异。
接下来,我们调用pca函数对标准化后的数据进行主成分分析。
根据explained 中各主成分的方差贡献率,我们可以选择保留的主成分个数。
通常,我们会选择方差贡献率大于一定阈值(如80%)的主成分。
在实际应用中,保留的主成分个数需要根据具体问题进行调整。
PCA主成分分析详解,结合matlab
从协方差的定义上我们也可以看出一些显而易见的性质,如:
1.COV(X,X)=var(X)(X的方差)
2.COV(X,Y)=COV(Y,X)
需要注意的是,协方差也只能处理二维问题,那维数多了自然就需要计算多个协方差,比如n维的数据集就需要计算 个协方差,那自然而然的我们会想到使用矩阵来组织这些数据。给出协方差矩阵的定义:
均值:
标准差:
方差:
既然我们都有这么多描述数据之间关系的统计量,为什么我们还要用协方差呢?我们应该注意到,标准差和方差一般是用来描述一维数据的,但现实生活我们常常遇到含有多维数据的数据集,最简单的大家上学时免不了要统计多个学科的考试成绩。面对这样的数据集,我们当然可以按照每一维独立的计算其方差,但是通常我们还想了解这几科成绩之间的关系,这时,我们就要用协方差,协方差就是一种用来度量两个随机变量关系的统计量,其定义为:
二、PCA详解
1、原始数据:
为了方便,我们假定数据是二维的,借助网络上的一组数据,如下:
x=[2.5, 0.5, 2.2, 1.9, 3.1, 2.3, 2, 1, 1.5, 1.1]T
y=[2.4, 0.7, 2.9, 2.2, 3.0, 2.7, 1.6, 1.1, 1.6, 0.9]T
2、计算协方差矩阵
这个定义还是很容易理解的,我们可以举一个简单的三维的例子,假设数据集有三个维度,则协方差矩阵为
可见,协方差矩阵是一个对称的矩阵,而且对角线是各个维度上的方差。
(2)协方差矩阵的求法:
协方差矩阵计算的是不同维度之间的协方差,而不是不同样本之间的。下面我们将在matlab中用一个例子进行详细说明:
首先,随机产生一个10*3维的整数矩阵作为样本集,10为样本的个数,3为样本的维数。
matlab中pca的用法 -回复
matlab中pca的用法-回复MATLAB中的PCA用于对数据进行主成分分析,从而降低数据的维度并提取出主要的特征。
主成分分析是一种常用的数据降维和特征提取的方法,可用于数据可视化、数据压缩、去噪等应用。
本文将一步一步地介绍如何在MATLAB中使用PCA进行主成分分析。
第一步:加载数据首先,我们需要加载待分析的数据。
在MATLAB中,可以使用`load`函数来加载数据。
假设我们的数据存储在名为"data.mat"的文件中,可以使用以下代码加载数据:load('data.mat');加载完成之后,数据将存储在名为"data"的变量中。
我们可以使用`whos`命令来查看数据的基本信息:whos该命令将显示数据的大小、类型等信息。
第二步:数据预处理在进行主成分分析之前,我们通常需要对数据进行预处理。
预处理的目的是将数据进行标准化或归一化,以便确保不同特征的尺度一致。
常见的预处理方法包括标准化和归一化。
标准化是通过减去均值并除以标准差来将数据的均值调整为0,方差调整为1。
可以使用`zscore`函数来实现标准化,例如:data_std = zscore(data);归一化是通过将数据的值缩放到一个给定的范围,例如0到1。
可以使用`mapminmax`函数来实现归一化,例如:data_normalized = mapminmax(data,0,1);根据实际需求,选择适当的预处理方法对数据进行处理。
第三步:计算协方差矩阵主成分分析的核心是计算数据的协方差矩阵。
协方差矩阵描述了数据中的特征之间的关系。
在MATLAB中,可以使用`cov`函数来计算协方差矩阵,例如:covariance_matrix = cov(data_std);其中,`data_std`是标准化后的数据。
第四步:计算特征向量和特征值协方差矩阵的特征向量和特征值可以告诉我们数据中的主要特征。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
主成分分析法(PCA)在实际问题中.我们经常会遇到研究多个变量的问题.而且在多数情况下.多个变量之间常常存在一定的相关性。
由于变量个数较多再加上变量之间的相关性.势必增加了分析问题的复杂性。
如何从多个变量中综合为少数几个代表性变量.既能够代表原始变量的绝大多数信息.又互不相关.并且在新的综合变量基础上.可以进一步的统计分析.这时就需要进行主成分分析。
I. 主成分分析法(PCA)模型(一)主成分分析的基本思想主成分分析是采取一种数学降维的方法.找出几个综合变量来代替原来众多的变量.使这些综合变量能尽可能地代表原来变量的信息量.而且彼此之间互不相关。
这种将把多个变量化为少数几个互相无关的综合变量的统计分析方法就叫做主成分分析或主分量分析。
主成分分析所要做的就是设法将原来众多具有一定相关性的变量.重新组合为一组新的相互无关的综合变量来代替原来变量。
通常.数学上的处理方法就是将原来的变量做线性组合.作为新的综合变量.但是这种组合如果不加以限制.则可以有很多.应该如何选择呢?如果将选取的第一个线性组合即第一个综合变量记为1F .自然希望它尽可能多地反映原来变量的信息.这里“信息”用方差来测量.即希望)(1F Var 越大.表示1F 包含的信息越多。
因此在所有的线性组合中所选取的1F 应该是方差最大的.故称1F 为第一主成分。
如果第一主成分不足以代表原来p 个变量的信息.再考虑选取2F 即第二个线性组合.为了有效地反映原来信息.1F 已有的信息就不需要再出现在2F 中.用数学语言表达就是要求0),(21=F F Cov .称2F 为第二主成分.依此类推可以构造出第三、四……第p 个主成分。
(二)主成分分析的数学模型对于一个样本资料.观测p 个变量p x x x ,,21.n 个样品的数据资料阵为:⎪⎪⎪⎪⎪⎭⎫ ⎝⎛=np n n p p x x x x x x x x x X212222111211()p x x x ,,21=其中:p j x x x x nj j j j ,2,1,21=⎪⎪⎪⎪⎪⎭⎫ ⎝⎛= 主成分分析就是将p 个观测变量综合成为p 个新的变量(综合变量).即⎪⎪⎩⎪⎪⎨⎧+++=+++=+++=ppp p p p p p p p x a x a x a F x a x a x a F x a x a x a F 22112222121212121111 简写为:p jp j j j x x x F ααα+++= 2211p j ,,2,1 =要求模型满足以下条件:①j i F F ,互不相关(j i ≠.p j i ,,2,1, =)②1F 的方差大于2F 的方差大于3F 的方差.依次类推③.,2,1122221p k a a a kp k k ==+++于是.称1F 为第一主成分.2F 为第二主成分.依此类推.有第p 个主成分。
主成分又叫主分量。
这里ij a 我们称为主成分系数。
上述模型可用矩阵表示为:AX F =.其中⎪⎪⎪⎪⎪⎭⎫ ⎝⎛=p F F F F 21 ⎪⎪⎪⎪⎪⎭⎫ ⎝⎛=p x x x X 21 ⎪⎪⎪⎪⎪⎭⎫ ⎝⎛=⎪⎪⎪⎪⎪⎭⎫ ⎝⎛=p pp p p p p a a a a a a a a a a a a A 21212222111211 A 称为主成分系数矩阵。
(三)主成分分析的几何解释假设有n 个样品.每个样品有二个变量.即在二维空间中讨论主成分的几何意义。
设n 个样品在二维空间中的分布大致为一个椭园.如下图所示:图1 主成分几何解释图将坐标系进行正交旋转一个角度θ.使其椭圆长轴方向取坐标1y .在椭圆短轴方向取坐标2y .旋转公式为⎩⎨⎧+-=+=θθθθcos )sin (sin cos 212211j j jj j j x x y x x y n j 2,1=写成矩阵形式为:⎥⎦⎤⎢⎣⎡=n n y y y y y y Y 2222111211X U x x x x x x n n ⋅=⎥⎦⎤⎢⎣⎡⋅⎥⎦⎤⎢⎣⎡-=2222111211cos sin sin cos θθθθ 其中U 为坐标旋转变换矩阵.它是正交矩阵.即有I U U U U ='='-,1.即满足1cos sin 22=+θθ。
经过旋转变换后.得到下图的新坐标:图2 主成分几何解释图新坐标21y y -有如下性质:(1)n 个点的坐标1y 和2y 的相关几乎为零。
(2)二维平面上的n 个点的方差大部分都归结为1y 轴上.而2y 轴上的方差较小。
1y 和2y 称为原始变量1x 和2x 的综合变量。
由于n 个点在1y 轴上的方差最大.因而将二维空间的点用在1y 轴上的一维综合变量来代替.所损失的信息量最小.由此称1y 轴为第一主成分.2y 轴与1y 轴正交.有较小的方差.称它为第二主成分。
II. 主成分分析法(PCA)推导一、主成分的导出根据主成分分析的数学模型的定义.要进行主成分分析.就需要根据原始数据.以及模型的三个条件的要求.如何求出主成分系数.以便得到主成分模型。
这就是导出主成分所要解决的问题。
1、根据主成分数学模型的条件①要求主成分之间互不相关.为此主成分之间的协差阵应该是一个对角阵。
即.对于主成分.AX F =其协差阵应为.A X AX AX AX AX Var F Var ''='⋅==)()()()(=⎪⎪⎪⎪⎪⎭⎫ ⎝⎛=Λp λλλ 21 2、设原始数据的协方差阵为V .如果原始数据进行了标准化处理后则协方差阵等于相关矩阵.即有.X X R V '==3、再由主成分数学模型条件③和正交矩阵的性质.若能够满足条件③最好要求A 为正交矩阵.即满足I A A ='于是.将原始数据的协方差代入主成分的协差阵公式得Λ='=''=A AR A X AX F Var )(Λ'='Λ='A A R A AR展开上式得 ⎪⎪⎪⎪⎪⎭⎫ ⎝⎛⋅⎪⎪⎪⎪⎪⎭⎫ ⎝⎛=⎪⎪⎪⎪⎪⎭⎫ ⎝⎛⋅⎪⎪⎪⎪⎪⎭⎫ ⎝⎛p pp p p p p pp p p p p pp p p p p a a a a a a a a a a a a a a a a a a r r r r r r r r r λλλ 21212221212111212221212111212222111211 展开等式两边.根据矩阵相等的性质.这里只根据第一列得出的方程为:()⎪⎪⎩⎪⎪⎨⎧=-+++=++-+=+++-0)(0)(0111221111212122112111121211111p pp p p p p p p a r a r a r a r a r a r a r a r a r λλλ 为了得到该齐次方程的解.要求其系数矩阵行列式为0.即0121212221112111=---λλλpp p p p p r r r r r r r r r01=-I R λ显然.1λ是相关系数矩阵的特征值.()p a a a a 112111,, =是相应的特征向量。
根据第二列、第三列等可以得到类似的方程.于是i λ是方程 0=-I R λ的p 个根.i λ为特征方程的特征根.j a 是其特征向量的分量。
4、下面再证明主成分的方差是依次递减设相关系数矩阵R 的p 个特征根为p λλλ≥≥≥ 21.相应的特征向量为j a⎪⎪⎪⎪⎪⎭⎫ ⎝⎛=⎪⎪⎪⎪⎪⎭⎫ ⎝⎛=p pp p p p p a a a a a a a a a a a a A 21212222111211 相对于1F 的方差为 111111)(λ='=''=a R a a X X a F Var 同样有:i i F Var λ=)(.即主成分的方差依次递减。
并且协方差为:j i j i Ra a X a X a Cov '=''),(j pi a a a a )(1∑=''=ααααλ j i a a a a j i p ≠=''=∑=,0))((1ααααλ综上所述.根据证明有.主成分分析中的主成分协方差应该是对角矩阵.其对角线上的元素恰好是原始数据相关矩阵的特征值.而主成分系数矩阵A 的元素则是原始数据相关矩阵特征值相应的特征向量。
矩阵A 是一个正交矩阵。
于是.变量()p x x x ,,21经过变换后得到新的综合变量 ⎪⎪⎩⎪⎪⎨⎧+++=+++=+++=ppp p p p p p p p x a x a x a F x a x a x a F x a x a x a F 22112222121212121111 新的随机变量彼此不相关.且方差依次递减。
二、主成分分析的计算步骤假设样本观测数据矩阵为:⎪⎪⎪⎪⎪⎭⎫ ⎝⎛=np n n p p x x x x x x x x x X 212222111211 第一步:对原始数据进行标准化处理。
)var(*j j ij ij x x x x -= ),,2,1;,,2,1(p j n i ==其中 ∑==ni ij j x n x 11 21)(11)var(j n i ij j x x n x --=∑= ),,2,1(p j =第二步:计算样本相关系数矩阵。
⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡=pp p p p p r r r r r r r r r R 212222111211 为方便.假定原始数据标准化后仍用X 表示.则经标准化处理后的数据的相关系数为:tj nt ti ij x x n r ∑=-=111 ),,2,1,(p j i =第三步:用雅克比方法求相关系数矩阵R 的特征值(p λλλ 21,)和相应的特征向量()p i a a a a ip i i i 2,1,,,21==。
第四步:选择重要的主成分.并写出主成分表达式。
主成分分析可以得到p 个主成分.但是.由于各个主成分的方差是递减的.包含的信息量也是递减的.所以实际分析时.一般不是选取p 个主成分.而是根据各个主成分累计贡献率的大小选取前k 个主成分.这里贡献率就是指某个主成分的方差占全部方差的比重.实际也就是某个特征值占全部特征值合计的比重。
即贡献率=∑=p i ii1λλ 贡献率越大.说明该主成分所包含的原始变量的信息越强。
主成分个数k 的选取.主要根据主成分的累积贡献率来决定.即一般要求累计贡献率达到85%以上.这样才能保证综合变量能包括原始变量的绝大多数信息。
另外.在实际应用中.选择了重要的主成分后.还要注意主成分实际含义解释。
主成分分析中一个很关键的问题是如何给主成分赋予新的意义.给出合理的解释。