资源描述:
《主成分分析方法ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、主成分分析方法主成分分析的基本原理主成分分析的计算步骤主成分分析方法应用实例主成分分析(PrincipalComponentsAnalysis)是由Hotelling于1933年首先提出的,它是利用降维的思想,把多指标转化为少数几个综合指标的多元统计分析方法。从数学角度来看,这是一种降维处理技术。主成分分析的目的与功能在多变量分析中,分析者所面临的最大难题是解决众多变量之间的关系问题。进行数据降维可以用尽可能少的新指标取代原来较多的指标变量,并能包含原来指标变量所包含的大部分信息。解决多元回归分析中的多重共线性问题。综合评
2、价中,人们总是尽可能多地选取评价指标,而这些评价指标之间往往相互重叠,信息冗余是不可避免的。主成分分析则可以把这众多指标所蕴含的信息压缩到少数几个主成分指标,然后给出这几个主成分指标的权重,综合到一个评价指标中。主成分的主要功能数据降维(DimensionReduction)变量筛选(VariablesScreening)一、数据处理采集m维随机向量x=(x1,x2,…,xm)T的n个样品xi=(xi1,xi2,…,xim)T,i=1,2,…,n,n>m,构造样本阵Xx1Tx11x12┅x1mx2Tx21x22┅x2mX=
3、┇=┇┇┇xnTxn1xn2┅xnm1.对样本阵X中的元进行如下变换xij,对正指标Yij=-xij,对逆指标得Y=Yijn×p2对Y中元进行如下标准化变换其中得标准化矩阵Z:Z=z1Tz11z12┅z1mz2T=z21z22┅z2m┇┇┇┇znTzn1zn2┅znm一、主成分分析的基本原理假定有n个样本,每个样本共有m个变量,构成一个n×m阶的数据矩阵(标准化后的数据)(3.5.1)当m较大时,在m维空间中考察问题比较麻烦。为了克服这一困难,就需要进行降维处理,即用较少的几个综合指标代替原来较多的变量指标,而且使这些较少
4、的综合指标既能尽量多地反映原来较多变量指标所反映的信息,同时它们之间又是彼此独立的。定义:记x1,x2,…,xm为原变量指标,F1,F2,…,Fp(p≤m)为新变量指标(3.5.2)系数eij的确定原则:①Fi与Fj(i≠j;i,j=1,2,…,p)相互无关;②F1是x1,x2,…,xm的一切线性组合中方差最大者,F2是与F1不相关的x1,x2,…,xm的所有线性组合中方差最大者;……Fp是与F1,F2,……,Fp-1都不相关的x1,x2,…xm,的所有线性组合中方差最大者。则新变量指标F1,F2,…,Fp分别称为原变量指
5、标x1,x2,…,xm的第一,第二,…,第p主成分。从以上的分析可以看出,主成分分析的实质就是确定原来变量xj(j=1,2,…,m)在诸主成分Fi(i=1,2,…,p)上的权重eij(i=1,2,…,p;j=1,2,…,m)。从数学上容易知道,从数学上可以证明,它们分别是的相关系数矩阵的p个较大的特征值所对应的单位化特征向量。二、计算步骤(一)计算相关系数矩阵rij(i,j=1,2,…,m)为原变量xi与xj的相关系数,rij=rji,其计算公式为:(3.5.3)(3.5.4)(二)计算特征值与特征向量:①解特征方程
6、 ,常用雅可比法(Jacobi)求出特征值,并使其按大小顺序排列;②分别求出对应于特征值 的特征向量,要求 =1,即 ,其中 表示向量的第j个分量。③计算主成分贡献率及累计贡献率▲贡献率:▲累计贡献率:一般取累计贡献率达85—95%的特征值所对应的第一、第二、…、第p(p≤m)个主成分。(三)确定主成分其中为第i个特征值所对应的特征向量2.计算主成分载荷1.主成分表达式:表示主成分与对应变量的相关系数(四)排序问题:2.综合得分:选取综合评价函数为1.主成分得分三、主成分分析实例1下表是10名初中男学生的身高(c
7、m),胸围(cm),体重(kg)的数据,试进行主成分分析。身高x1胸围x2体重x3149.569.538.5162.577.055.5162.778.550.8162.287.565.5156.574.549.0156.174.545.5172.076.551.0173.281.559.5159.574.543.5157.779.053.5Matlab程序%cwfac.mfunctionresult=cwfac(vector);fprintf('相关系数矩阵:')std=corrcoef(vector)%计算相关系数矩
8、阵fprintf('特征向量(vec)及特征值(val):')[vec,val]=eig(std)%求特征值(val)及特征向量(vec)newval=diag(val);[y,i]=sort(newval);%对特征根进行排序,y为排序结果,i为索引fprintf('特征根排序:')forz=