matlab中利用princomp实现PCA降维

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

你可能感兴趣的:(机器学习)