图像特征提取系列之PCA

来源:互联网 发布:淘宝pc与手机尺寸 编辑:程序博客网 时间:2024/06/05 06:25

1:为什么图像处理需要PC A?

1- 如果【特征向量】维度过高,不仅会增加计算复杂度,还会给分类问题带来负面影响,造成识别,或者分类精度降低。
2- 可能,直观上,感觉特征越多,就越多的描述【样本的属性】,可提高识别率。
3- 其实,并不是???!!


假设,要区分西瓜,冬瓜。我们可以直接通过表皮就纹理,就可以做出正确的判断。那么,我多加几个特征:(重量)(形状)(体积)(是否有籽),可能还会对分类造成干扰。

:实际上,对于【特定样本数目】的情况下,特征维度与识别率关系 大概如下曲线:


tupian

注意:x轴—特征向量数目, y轴—分类性能。
这就需要对【特征降维】,其中一个重要手段:PCA.

2: PCA 干什么?

【实质】:尽可能好的保留原始数据信息的条件下,通过【线性变换】将高维空间中样本数据投影到低维空间。

3: PCA怎么干?数学解释

1- 提取 样本协方差矩阵S 的 前K个特征值【求矩阵特征值,然后排序,然后取前K个】对应的特征向量【这些特征向量保证相互正交】。
2- 实际上,就是找到一组基,将原来的矩阵投影到新的 空间上。
3- 几何解释


这里写图片描述

1- 在二维平面,求出来的两个本征向量就是,E1,E2. PCA实际上做:投影变换【从原来的X,Y轴,转换到了一组新的E1,E2 坐标系】
2- 这实际上也是去除数据的线性相关的过程。
【直观解释】:如果直接用眼看,让你先给一个向量,使得样本数据在此方向上的差异【方差】表现最大。那肯定E1,找到第二个,必须跟第一个垂直,也就是E2.

4:计算实例

已知样本   X={(1,2), (3,3), (3,5), (5,4), (5,6), (6,5), (8,7), (9,8)}问题: 利用1个,2个主成分 实现X的重构(表达X)。

1- 计算样本均值 m=(5,5);
2- 计算协方差矩阵:


这里写图片描述

3- 求S特征值 lamda1 = 9.34, lamda2 = 0.41
求特征向量 e1 = (0.81,0.59)T ,e2 = (-0.59 0.81) T;
e1 与e2 彼此单位正交。
4 -降至一维:


这里写图片描述

结果: a1 = -5.01, a2 = -2.8 , a3 = -1.62, a4 = -0.59 ,a5 = 0.59, a6= 0.81 ,a7 = 3.61, a8=5.01
5 -二维:
【a1 = -5.01, a2 = -2.8 , a3 = -1.62, a4 = -0.59 ,a5 = 0.59, a6= 0.81 ,a7 = 3.61, a8=5.01】
第二维度【-0.07, 0.44, 1.18, -0.81, 0.81, 0.59, -0.15, 0.07】

5:matlab 计算上题

x=[1,2;   3,3;   3,5;   5,4;   5,6;   6,5;   8,7;   9,8]   [COFFE,Score, latent] = princomp(X);  %主成分分析 注意matlab版本应低于2014b— — — — — — - - - - - - X =     1     2     3     3     3     5     5     4     5     6     6     5     8     7     9     8COFFE =               %变幻基矩阵,每一个列向量构成变换空间中的一组基    0.8086   -0.5883    0.5883    0.8086Score =               % 主成分,Score(:,1) 就是第一个最重要的分量,Score(:,2) 次之   -4.9995   -0.0728   -2.7939   -0.4407   -1.6173    1.1766   -0.5883   -0.8086    0.5883    0.8086    0.8086   -0.5883    3.6025   -0.1476    4.9995    0.0728latent =             %协方差矩阵的特征值   10.6764    0.4664

实际上,我们做过CenterLoss实验的都知道,我们可以对LFW图像提取特征之后,再应用PCA。然后就上上面那样,找一个最好的维度,去将原来的特征空间,转换到新的特征空间,那么原来的特征在新的空间上有新的表示。
那如果想把未来的一张图片,投影的原来已经设定好的特征空间,应该如何做呢?

%*************************************************************************%    ┊File Name: pca_fea.m%    ┊Author: bin.wang%    ┊Mail:   sa615168@mail.ustc.edu.cn%    ┊Created Time: Fri 16 Jun 2017 09:03:37 PM CST%************************************************************************/% this file for find top-K principle component % feature.mat include 2 variables :fea & fea_p ,size(fea)==size(fea_p)=[6000,512]load feature.mat         % pca for fea then result store in Score ,size(Score)=[6000,512][COFFE,Score, latent] = princomp(fea); % compute transform matrix for pca fea_p_mean=mean(fea_p);for i=1:6000    %each col = col - mean(col)    fea_p_sub_mean(i,:)=fea_p(i,:)-fea_p_mean(:,:);end%project fea_p to a new subspace ;proj_fea_p=fea_p_sub_mean * COFFE;
0 0
原创粉丝点击