首页 理论教育 主成分分析的求解步骤

主成分分析的求解步骤

时间:2022-02-12 理论教育 版权反馈
【摘要】:从而也使它们的方差有完全不同的量级,从中求出的主成分将在较大程度上取决于方差大的变量,而那些方差小的变量可能会被忽略。然而,有时这些方差的不同是由量纲造成的,它们与变量的实际影响并不相同,由此造成的结果可能很不合理。≥λp≥0组成的对角阵;U为Z的特征向量按列组成的正交阵,它构成了新的矢量空间,作为新变量(主成分)的坐标轴,它又叫做载荷轴、载荷向量、主成分轴。

6.1.3 主成分分析的求解步骤

传统主成分分析采用对协方差矩阵Z进行Jacob特征分解,主要步骤如下。

1.数据预处理

p个原始变量往往有不同的量纲,它们取值的数量级可能有很大的差别。从而也使它们的方差有完全不同的量级,从中求出的主成分将在较大程度上取决于方差大的变量,而那些方差小的变量可能会被忽略。然而,有时这些方差的不同是由量纲造成的,它们与变量的实际影响并不相同,由此造成的结果可能很不合理。为了消除量纲差异带来的不良影响,通常对变量采用自标度化处理将原始数据矩阵(6-1)中的各个变量变换为均值为0、方差为1的变量,以消除变量间由于量级、单位的不同而造成的差异,具体变换公式见方程(6-13)。

MATLAB下对矩阵X进行自标度化的过程可以编写一个autoscaling.m文件如下

function[autoX,mx,s]=autoscaling(X)%定义一个自标度化函数,自标度化后的变量赋给矩阵autoX,变量的均值与标准方差分别返回给mx与s

[nh,nl]=size(X);%确定矩阵X的行数(nh)和列数(nl)

mx=mean(X);求X中每个变量的均值mx(是一个列数为nl的行向量)

s=std(X);%求X中每个变量的标准方差stdx(是一个列数为nl的行向量)

autoX=(X-repmat(mx,nh,1))./repmat(s,nh,1);%根据(6-13)对X中每个变量进行自标度化预处理

以后进行变量自标度化处理时,只要在MATLAB的work文件

夹里准备好变量矩阵X(X的列为变量序号,行为样本序号),然后在MATLAB的command window下调用自编函数autoscaling就可以实现对变量的自标度化预处理(注:数据文件及m文件都要放在matlab的work目录下才可以调用)。

2.求协方差矩阵(或相关矩阵

按照方程(6-12)求协方差矩阵或者按照方程(6-15)求相关矩阵。

由于经过了自标度化处理,矩阵X的协方差矩阵(对角元为对应变量的方差、非对角元为对应变量间的协方差)与相关矩阵相等。

MATLAB下计算相关系数矩阵R的命令如下

>>R=corrcoef(X);

MATLAB下计算相关系数矩阵R的命令如下

>>Z=cov(X);

3.特征分解

通过求解协方差矩阵(或相关矩阵)的特征值问题,可以将Z(或者R)分解为三个矩阵

Z=UΛUT(常用Jacobi方法分解)

式中,Λ为Z的特征值λ1≥λ2≥…≥λp≥0组成的对角阵;U为Z的特征向量按列组成的正交阵,它构成了新的矢量空间,作为新变量(主成分)的坐标轴,它又叫做载荷轴、载荷向量、主成分轴。

在MATLAB下对矩阵Z的特征分解命令如下

>>[U,lmd]=eig(Z);%对矩阵Z进行特征分解,lmd为按照从小到大顺序排列的特征值组成的对角矩阵,U为特征向量矩阵(每一列为对应特征值下的特征向量)

4.确定主成分个数m

主成分的个数m通常小于变量个数p,当原始变量间完全独立时,意味着无法对矩阵X进行信息压缩,则m=p。

其确定原则见6.1.7。

5.求主成分得分

主成分得分即新的变量,它就是原始数据矩阵在前m个新坐标轴(主成分轴、载荷轴)上的投影

img459

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈