PCA原理:为什么用协方差矩阵

PCA的理论知识以及与K-L变换的关系

 

PCA是主成分分析(Principal Components Analysis)的简称。这是一种数据降维技术,用于数据预处理。一般我们获取的原始数据维度都很高,那么我们可以运用PCA算法降低特征维度。这样不仅可以去除无用的噪声,还能减少很大的计算量。

 

K-L转换(Karhunen-Loève Transform)是建立在统计特性基础上的一种转换,它是均方差(MSE, Mean Square Error)意义下的最佳转换,因此在资料压缩技术中占有重要的地位。K-L转换是对输入的向量x,做一个正交变换,使得输出的向量得以去除数据的相关性。

 

https://img-blog.csdn.net/20180512083804598?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ExMDc2Nzg5MQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70

不过在图像处理上,K-L变换即是PCA变换,两者可以说是没有区别的。(待考证)

 

 

 

PCA的主要步骤

 

  1. 输入样本矩阵,大小:m*n。每一行为一个n维样本,共m个,如下图:

样本矩阵 X=

https://img-blog.csdn.net/20180512084526127?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ExMDc2Nzg5MQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70

取第一行为例,它的下标含义是 行表示样本序号,列表示样本维度。

         https://img-blog.csdn.net/20180512084559607?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ExMDc2Nzg5MQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70

 

 

 

  1. 对样本矩阵进行中心化(取均值)

https://img-blog.csdn.net/20180512084635726?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ExMDc2Nzg5MQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70

 

 

 

  1. 计算样本的协方差矩阵;

https://img-blog.csdn.net/20180512084913309?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ExMDc2Nzg5MQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70

https://img-blog.csdn.net/20180512085207644?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ExMDc2Nzg5MQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70

 

 

 

 

 

4、计算协方差矩阵的特征值并取出最大的k个特征值所对应的特征向量,构成一个新的矩阵;

若使用matlab的话直接利用函数eig即可求得,若是用python3的话,借助numpy.linalg.eig函数即可。

 

5、这个矩阵就是我们要求的特征矩阵(也称特征脸),里面每一列就为样本的一维主成分。把样本矩阵投影到以该矩阵为基的新空间中,便可以将n维数据降低成k维数据。

 

 

 

 

 

PCA的设计思路

 

从上面PCA的实现步骤可以发现,它的关键步骤便是求出样本协方差矩阵C的特征向量矩阵。可是,为什么要这么做呢?为什么这么做就可以把人脸特征提取出来呢?这是我在学习PCA算法过程中一直思考的问题,经过多方查找资料,对比分析、思考,终于有了一个初步的理解。下面就让我们来一探究竟吧。

 

 

 

上文中提到过,PCA变换其实就是一种降维技术。

 

什么是降维?降维就是指通过矩阵乘法运算后,把原来的矩阵维度减少。比如

https://img-blog.csdn.net/20180512091058537?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ExMDc2Nzg5MQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70

 

维数减少了,虽然可以大大减少算法的计算量,但是若对基矩阵P选择不当的话就很有可能会导致信息量的缺失。

 

因此我们要选择哪K个基(这里还不知道是特征向量)才能保证降维后能最大程度保留原有的信息,是进行设计的主方向。

 

 

 

什么是信息呢?根据信息论的定义,我们可以知道信息来源于未知。也就是说如果不同样本的同一维度的值差异特别大,那该维度带给我们的信息量就是极大的。转换成数学语言,也就是说某维度的方差越大,它的信息量越大。

 

 

举个例子:假如你有3个人的人脸特征数据,他们均有3个维度:眼睛、鼻子、嘴巴。如果他们鼻子这一维度的数据都是一样的,如下图中,三个人都是大鼻子(方差=0)。那么我们从鼻子这一维度获得的信息量就是为零,因为无法从该维度得知该人脸图像到底属于谁的。

 

https://img-blog.csdn.net/2018051209221834?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ExMDc2Nzg5MQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70

 

那如果他们鼻子这一维度的数据各不相同,如下图中,三个人分别是大、中、小鼻子(方差很大)。那么我们从鼻子这一维度获得的信息量就很大了,甚至直接用这一个维度就可以识别出是谁的人脸图像。

 

https://img-blog.csdn.net/20180512093047493?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ExMDc2Nzg5MQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70

 

综上,我们就可以很容易联想到  第一个优化目标:降维后各维度的方差尽可能大

既然有了第一个,当然就会有第二个啦(我说的是优化目标,别想多啦),我们的第二个优化目标便是保证不同维度之间的相关性为0(其实就是让基向量互相正交)。

 

因为如果某2个维度间存在相关性,就说明从一个维度的值可以推测出另一个维度的值。说明该维度中有一个是多余的,对我们识别特征帮助不大,那自然可以把其中一个维度舍去。

 

比如说:如果上面例子中嘴巴与鼻子这两个维度之间存在线性关系(相关性为1,完全相关):对于格式:(y)嘴巴、(x)鼻子,有y=x,x∈[大,中,小]。那么嘴巴这一维度在这里是不是就是冗余的?有它没它都一个样,完全可以通过鼻子的大小推测出嘴巴的大小,进而判断出人脸的身份。

 

综上所述,

 

 

PCA算法的优化目标就是:    降维后同一纬度的方差最大

 

                                    不同维度之间的相关性为0

 

 

 

 

 

 

根据线性代数,我们可以知道同一元素的协方差就表示该元素的方差,不同元素之间的协方差就表示它们的相关性。因此这两个优化目标可以用协方差矩阵来表示,如下图:

 

https://img-blog.csdn.net/20180512094922635?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ExMDc2Nzg5MQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70

https://img-blog.csdn.net/20180512094933691?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ExMDc2Nzg5MQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70

 

如下图,根据矩阵的迹的定义:

 

https://img-blog.csdn.net/20180512095345378?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ExMDc2Nzg5MQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70

 

可以知道优化目标一便是令Cy矩阵的对角线元素之和最大。即max tr(Cy)

 

 

 

 

 

 

 

 

 

知道了目标,接下来就好办,我们要做的就是想尽一切办法去达到我们的优化目标。

下面便是推导过程:

https://img-blog.csdn.net/20180512095841872?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ExMDc2Nzg5MQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70

https://img-blog.csdn.net/20180512100001841?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ExMDc2Nzg5MQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70

https://img-blog.csdn.net/20180512100052779?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ExMDc2Nzg5MQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70

PS:拉格朗日乘子法定义如下

https://img-blog.csdn.net/20180512100145486?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ExMDc2Nzg5MQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70


https://img-blog.csdn.net/20180512100435471?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ExMDc2Nzg5MQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70

 

 

根据:

https://img-blog.csdn.net/20180512100729205?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ExMDc2Nzg5MQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70

 

可以看到,最终求得的结果满足特征向量的关系式,因此由C矩阵的特征向量所构成的基矩阵,就是我们要求的变换矩阵。

由该矩阵降维得到的新样本矩阵可以最大程度保留原样本的信息。

 

至此,问题都已经解决了:信息量保存能力最大的基向量一定是样本矩阵X的协方差矩阵的特征向量,并且这个特征向量保存的信息量就是它对应的特征值的绝对值。这个推导过程就解释了为什么PCA算法要利用样本协方差的特征向量矩阵来降维。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值