主成分分析
什么是主成分分析
主成分分析(PCA技术)是一种对数据进行分析的技术,是对数据进行降维的处理。我们可以对新求出的“主元”向量的重要性进行排序,根据需要取前面最重要的部分,将后面的维数省去,可以达到降维从而简化模型或是对数据进行压缩的效果。同时最大程度的保持了原有数据的信息。
步骤
1.将数据用矩阵形式表示
2.求出矩阵的协方差矩阵
3.计算其特征值和特征向量
4.根据特征值和特征来确定降维后的维数
5.将得到的矩阵与原数据矩阵相乘得到一个新矩阵即降维后数据
主成分分析的应用
数据表示
对于一个N*N的图像,可以将图像的像素一行行的头尾相接成一个一维向量。
模式识别
可以用PCA方法提取人脸的内在结构,当用新的图像与原有图像比较时,只需在变换后的主元维度上进行比较,来衡量新图与原有数据集的相似度。
图像信息压缩
使用PCA方法处理一个图像序列,提取其中的主元。然后根据主元的排序去除其中次要的分量,然后变换回原空间,则图像序列因为维数降低得到很大的压缩。
MATLAB中的实现
clc;
clear all;
X=load('exam.txt')
z=zscore(X) %矩阵化
M=cov(z) %求协方差矩阵
[V,D]=eig(M); %计算协方差矩阵的特征向量、特征根
d=diag(D); %取出特征根矩阵列向量
eig1=sort(d,'descend') %将贡献率按从大到小元素排列
v=fliplr(V) %重新排列特征向量
S=0;
i=0;
while S/sum(eig1)<0.8
i=i+1;
S=S+eig1(i);
end %求出贡献率大于80%的主成分
NEW=z*v(:,1:i) %输出产生的新坐标下的数据