2020.2.18主成分分析:步骤、应用及代码实现。

2020.2.18 作业2:主成分分析:步骤、应用及代码实现。

Principal Component Analysis(PCA)

主成分分析也称主分量分析,旨在利用降维的思想,把多指标转化为少数几个综合指标。
主成分:通过正交变换将一组可能存在相关性的变量转换为一组线性不相关的变量,转换后的这组变量叫主成分。在实际课题中,为了全面分析问题,往往提出很多与此有关的变量(或因素),因为每个变量都在不同程度上反映这个课题的某些信息。
主成分分析首先是由K.皮尔森(Karl Pearson)对非随机变量引入的,尔后H.霍特林将此方法推广到随机向量的情形。信息的大小通常用离差平方和或方差来衡量。

基本原理

主成分分析法是一种降维的统计方法,它借助于一个正交变换,将其分量相关的原随机向量转化成其分量不相关的新随机向量,这在代数上表现为将原随机向量的协方差阵变换成对角形阵,在几何上表现为将原坐标系变换成新的正交坐标系,使之指向样本点散布最开的p 个正交方向,然后对多维变量系统进行降维处理,使之能以一个较高的精度转换成低维变量系统,再通过构造适当的价值函数,进一步把低维系统转化成一维系统。
主成分分析的原理是设法将原来变量重新组合成一组新的相互无关的几个综合变量,同时根据实际需要从中可以取出几个较少的总和变量尽可能多地反映原来变量的信息的统计方法叫做主成分分析或称主分量分析,也是数学上处理降维的一种方法。主成分分析是设法将原来众多具有一定相关性(比如P个指标),重新组合成一组新的互相无关的综合指标来代替原来的指标。通常数学上的处理就是将原来P个指标作线性组合,作为新的综合指标。最经典的做法就是用F1(选取的第一个线性组合,即第一个综合指标)的方差来表达,即Va(rF1)越大,表示F1包含的信息越多。因此在所有的线性组合中选取的F1应该是方差最大的,故称F1为第一主成分。如果第一主成分不足以代表原来P个指标的信息,再考虑选取F2即选第二个线性组合,为了有效地反映原来信息,F1已有的信息就不需要再出现再F2中,用数学语言表达就是要求Cov(F1,F2)=0,则称F2为第二主成分,依此类推可以构造出第三、第四,……,第P个主成分。

步骤

Fp = a1iZX1 + a2iZX2 + …… + api*ZXp
其中a1i, a2i, ……,api(i=1,……,m)为X的协方差阵Σ的特征值所对应的特征向量,ZX1, ZX2, ……, ZXp是原始变量经过标准化处理的值,因为在实际应用中,往往存在指标的量纲不同,所以在计算之前须先消除量纲的影响,而将原始数据标准化,本文所采用的数据就存在量纲影响[注:本文指的数据标准化是指Z标准化]。
A = (aij)p×m = (a1,a2,…am),Rai = λiai,R为相关系数矩阵,λi、ai是相应的特征值和单位特征向量,λ1 ≥ λ2 ≥ …≥ λp ≥ 0 。

进行主成分分析主要步骤如下:

  1. 指标数据标准化(SPSS软件自动执行);
  2. 指标之间的相关性判定;
  3. 确定主成分个数m;
  4. 主成分Fi表达式;
  5. 主成分Fi命名。
    2020.2.18主成分分析:步骤、应用及代码实现。_第1张图片

应用

主成分分析作为基础的数学分析方法,其实际应用十分广泛,比如人口统计学、数量地理学、分子动力学模拟、数学建模、数理分析等学科中均有应用,是一种常用的多变量分析方法。
1.主成分分析能降低所研究的数据空间的维数。即用研究m维的Y空间代替p维的X空间(m 2.有时可通过因子负荷aij的结论,弄清X变量间的某些关系。
3.多维数据的一种图形表示方法。我们知道当维数大于3时便不能画出几何图形,多元统计研究的问题大都多于3个变量。要把研究的问题用图形表示出来是不可能的。然而,经过主成分分析后,我们可以选取前两个主成分或其中某两个主成分,根据主成分的得分,画出n个样品在二维平面上的分布况,由图形可直观地看出各样品在主分量中的地位,进而还可以对样本进行分类处理,可以由图形发现远离大多数样本点的离群点。
4.由主成分分析法构造回归模型。即把各主成分作为新自变量代替原来自变量x做回归分析。
5.用主成分分析筛选回归变量。回归变量的选择有着重的实际意义,为了使模型本身易于做结构分析、控制和预报,好从原始变量所构成的子集合中选择最佳变量,构成最佳变量集合。用主成分分析筛选变量,可以用较少的计算量来选择量,获得选择最佳变量子集合的效果。

代码实现

X=load(‘shujv.txt’)
z=zscore(X) %数据标准化
M=cov(z) %协方差
[V,D]=eig(M); %求出协方差矩阵的特征向量、特征根
d=diag(D); %取出特征根矩阵列向量(提取出每一主成分的贡献率)
eig1=sort(d,‘descend’) %将贡献率按从大到小元素排列
v=fliplr(V) %依照D重新排列特征向量
S=0;
i=0;
while S/sum(eig1)<0.85
i=i+1;
S=S+eig1(i);
end %求出累积贡献率大于85%的主成分
NEW=zv(:,1:i) %输出产生的新坐标下的数据
W=100
eig1/sum(eig1)
figure(1)
pareto(W); %画出贡献率的直方图

抱歉,老师,放在草稿箱,忘记发布了QAQ

你可能感兴趣的:(2020.2.18主成分分析:步骤、应用及代码实现。)