主成分分析PCA降维可视化(PCA降维算法)-MATLAB代码实现

一、PCA简介(代码获取:底部公众号)

主成分分析(PCA)是一种常用的数据降维技术,通过找到数据中方差最大的方向来实现数据的降维,同时保留数据的主要信息。PCA将原始数据转换为一组新的变量,称为主成分,这些主成分是原始特征的线性组合。主成分按照方差递减的顺序排列,前几个主成分包含了数据中大部分的方差信息。PCA的运算过程包括数据预处理、协方差矩阵的计算、特征值分解或奇异值分解,以及选择主成分和数据投影。PCA广泛应用于数据可视化、特征选择、噪声过滤和模式识别等领域。然而,PCA是一种线性降维技术,对于非线性关系的数据可能不适用,因此在这种情况下需要考虑使用核主成分分析等扩展技术。在应用PCA时,需要选择适当的主成分数目和解释方差的阈值,以平衡降维效果和信息保留的需求。 

主成分分析有以下优点:

(1)维度减少:PCA可以将高维数据降低到较低的维度,减少特征数量,简化数据集。

(2)信息保留:PCA通过选择具有最大方差的主成分来保留数据中的主要信息,尽可能地保持数据的特征。

(3)去除冗余:PCA可以消除特征之间的冗余和相关性,提供更独立的特征表示,减少了多重共线性的影响。

(4)数据可视化:通过将数据投影到主成分上,可以将高维数据可视化为二维或三维,帮助人们更好地理解和解释数据。

主成分分析也有以下缺点:

(1)线性假设:PCA是一种线性降维技术,对于非线性关系的数据可能无法很好地表达,因此对于复杂的非线性数据,PCA的效果可能会受到限制。

(2)方差解释:PCA选择主成分时主要基于方差的考虑,可能无法捕捉到一些重要的低方差但具有预测能力的特征。

(3)数据标准化:PCA对数据的尺度和变化范围敏感,需要进行数据的标准化和预处理,以确保结果的准确性。

(4)解释性:降维后的特征通常很难直接解释,因为它们是原始特征的线性组合,难以与具体的现实概念对应。

在使用PCA时,需要根据具体的数据和应用场景综合考虑这些优点和缺点,并结合其他降维技术选择合适的方法

二、PCA在特征因素降维中的应用

PCA通过正交变换将原始数据中的相关变量转换为一组线性无关的新变量,也称为主成分。这些主成分能够反映原始数据的大部分信息,同时减少数据的维度和噪声。主成分是按照方差大小排序的,第一个主成分是原始数据中方差最大的方向,第二个主成分是与第一个主成分正交的平面中方差最大的方向,依次类推。通过选择前k个主成分,可以实现对原始数据特征的降维处理。

(1)主成分的意义

主成分是通过特征值分解得到的特征向量,代表了数据集中的主要方向或模式。第一个主成分解释了数据中最大的方差,第二个主成分解释了次大的方差,以此类推。主成分具有线性无关性,可以用来表示原始数据中的变化模式,较大的特征值对应的主成分包含了数据中的重要信息。

(2)解释方差的阈值选择

解释方差是用来衡量主成分所解释的数据方差的比例。选择解释方差的阈值取决于降维后数据保留的信息量需求。通常,可以选择保留累计解释方差大于等于某个预先设定的阈值(通常设置为85%)的主成分数目。这样可以在保留较多的数据信息的同时实现降维,以达到平衡降维效果和信息保留的目的。

(3)降维效果评估指标

在评估主成分分析的降维效果时,常用的指标为特征值和累积方差贡献率。特征值表示每个主成分所解释的方差,较大的特征值对应的主成分包含了较多的信息。累积方差贡献率计算每个主成分的解释方差累计和,用于评估降维后保留的总体信息量。通过这些指标,可以对主成分分析的降维效果进行定量评估,帮助选择合适的主成分数目和解释方差的阈值。

三、 PCA特征降维流程

PCA特征降维流程如下:

(1)数据预处理:对原始数据进行标准化和中心化,使每个特征具有零均值和单位方差,以消除数据尺度的影响。

(2)计算协方差矩阵:根据处理后的数据,计算协方差矩阵,表示特征之间的相关性。协方差矩阵是一个对称矩阵,其元素表示了不同特征之间的协方差。

(3)特征值分解:对协方差矩阵进行特征值分解,得到特征值和对应的特征向量。特征值代表了数据中的方差,特征向量代表了数据的主要方向。

(4)特征向量选择:根据特征值的大小,选择前k个特征值最大的特征向量作为主成分。这些特征向量对应的主成分能够解释数据中的大部分方差。

(5)数据投影:将原始数据投影到选定的主成分上,得到降维后的数据。投影过程是将数据样本点映射到主成分所张成的低维空间上,得到降维后的数据表示。

(6)降维效果评估:

使用特征值、累计解释方差贡献率等指标来评估降维后保留的信息量和降维效果。这些指标可以帮助确定选择合适的主成分数目,以平衡降维后的信息损失和维度的减少。 

四、 关键代码

function [V,S,E,cumE,number]=princa(X,pe)
[m,n]=size(X); %计算矩阵的行m和列n
%-------------第一步:标准化矩阵-----------------%
mv=mean(X); %计算各变量的均值
st=std(X); %计算各变量的标准差
X=(X-repmat(mv,m,1))./repmat(st,m,1); %标准化矩阵X
 
%-------------第二步:计算相关系数矩阵-----------------%
% R1=X'*X/(m-1); %方法一:协方差矩阵计算公式
% R2=cov(X);     %方法二:协方差矩阵计算函数
R=corrcoef(X); %方法三:相关系数矩阵函数
 
%-------------第三步:计算特征向量和特征值-----------------%
[V,D]=eig(R);       %计算矩阵R的特征向量矩阵V和特征值矩阵D,特征值由小到大
V=(rot90(V))';      %将特征向量矩阵V从大到小排序
D=rot90(rot90(D));  %将特征值矩阵由大到小排序
E=diag(D);          %将特征值矩阵转换为特征值向量
 
%-------------第四步:计算贡献率和累计贡献率-----------------%
ratio=0; %累计贡献率
for k=1:n
    r=E(k)/sum(E);   %第k主成份贡献率
    ratio=ratio+r;  %累计贡献率
    if(ratio>=0.9)  %取累计贡献率大于等于90%的主成分
        break;
    end
end
%-------------       ---------------%
sumE=sum(E);
tep=E./sumE;
cumE=cumsum(tep);
temp1=find(cumE>pe);
number=min(temp1);
%-------------第五步:计算得分-----------------%
S=X*V;

五、 MATLAB仿真结果

(1)累计方差贡献率

 (2)降维前后可视化

代码获取:下方公众号

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Matlab神经网络深度学习

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值