欢迎访问文稿网!

主成分分析的求解步骤

范文之家 分享 时间: 加入收藏 我要投稿 点赞

主成分分析的求解步骤

    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

221381
领取福利

微信扫码领取福利

微信扫码分享