matlab中利用princomp实现PCA降维

本文介绍了在matlab中使用princomp函数进行PCA(主成分分析)降维的方法。PCA主要用于高维数据的降维,通过计算协方差矩阵和特征向量来实现。文章详细讲解了PCA的作用、原理、降维步骤,并提供了princomp函数的用法、参数说明及降维操作实例。
摘要由CSDN通过智能技术生成

matlab中利用princomp实现PCA降维

在matlab中有函数princomp可以实现数据的降维,本文主要说明该函数的用法。

PCA的作用:

PCA(主成分分析法),主要用来对数据进行降维,比如在机器学习中,我们提取了大量的特征,并针对这些特征进行分类,这些特征的维度很高,在利用SVM进行分类的时候会消耗大量的时间,PCA降维是将这些特征映射到另一个空间里面,并且去除数据冗余。
假设有样本m个。每个样本提取n维特征,构成一个m*n维的矩阵X,降维之后的矩阵为Y, 在降维的过程中需要满足以下两个条件:
(a) Y的维度小于X的维度;
(b) Y的各个维度之间的差异越大越好(差异越大,表示数据的冗余越小,这也是可以降维的基本条件);

PCA原理

  • 首先衡量X(m*n)中各维特征之间的相关性,通过计算X中各列之间的协方差构成协方差矩阵D(n*n)=X'X,其中X'是X的转置,注意这里的X是零均值化之后的X,为了实现数据的降维,我们希望数据之间的相关性越小越好,也就是去掉那些相关性较高的冗余数据,换个角度也就是说希望协方差矩阵D是一个对角阵;
  • 现在假设有一个转换矩阵P,将X映射到另一个空间得到Y,即Y=XP,使得转换之后的Y的协方差矩阵D1是一个对角阵,即:
D1=Y'Y=(XP)'(XP)=P'X'XP=P'DP

也就是已知D1是对角阵,DX的协方差矩阵,PCA问题就转换成一个实对称矩阵的对角化问题,利用相关的矩阵知识可以求解得到P。其实P就是由D的特征向量组成。

PCA降维的步骤

还是假设有m个样本,每个样本的特征用n维表示,生成矩阵A(m*n)
1. 将A的每一列进行零均值化,即用每一列的数据减去该列的均值得到矩阵X
2. 计算协方差矩阵D=X'X;
3. 计算协方差矩阵D的特征值与特征向量;
4. 将特征向量按照对应特征值的大小按列排列生成矩阵P’;
5. 假设我们要将n维的向量降维成k维,只需要取P’的前k列构成矩阵P;
6. 求解降维后的数据Y=XP;

princomp的用法

- 函数声明:

                
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值