**
主成分分析(PCA):
**
主成分分析(Principal Component Analysis,PCA), 是一种统计方法。通过正交变换将一组可能存在相关性的变量转换为一组线性不相关的变量,转换后的这组变量叫主成分。
PCA是降维中最常用的一种手段,目标是基于方差提取最有价值的信息。
**
PCA的步骤:
**
设有m条n维数据
1、将原始数据按列组成n行m列矩阵X。
2、将X的每一行(代表一个属性字段)进行零均质化,即减去这一行的均值。
3、求出协方差矩阵C=XX‘(X’为X的转置)。
4、求出协方差矩阵的特征值及对应的特征向量。
5、将特征向量按对应特征值大小从上到下按行排列成矩阵,取前k行组成矩阵P。
6、Y=PX即为降维到k维后的数据。
PCA的应用:
数据压缩或者数据降维减少内存或者硬盘的使用。加快机器学习的速度。也可以降维到2D或者3D从而实现数据可视化。
代码实现(Matlab):
PCA实例:
Matlab代码:
clear all
x=[-1 -2;
-1 0;
0 0;
2 1;
0 1];
x=x';
k=1;%%降到一维
N=size(x);
m=N(1);
n=N(2);
for i=1:m
M=mean(x(i,:));
for j=1:n
x(i,j)=x(i,j)-M;
end
end %% 零均值化
C=cov(x');%% 协方差矩阵
[pc,latent,explained]=pcacov(C);
%% latent为协方差矩阵的特征值,pc为特征向量
d=diag(pc);
eig1=sort(d,'descend');
v=fliplr(latent);
%% 将特征向量按降序排序
P=v(1:k,:);%% 取前k行组成矩阵P
Y=P*xv;%% 得到降维后的数据