主成分分析法(Principal Componebt Analysis,简称PCA)是常用的一种降维方法,可用于提取数据的主要特征分量,有助于缓解维度灾难问题。PCA主要就是通过向量矩阵计算将新样本投影到低维空间中。那么PCA是如何进行降维的呢?

首先我们回顾一下线性代数中的“基”的概念。

我们如何确定确定一个向量的坐标,假设向量(3,2):

PCA学习----降维算法

实际上关于向量(3,2)的定义是以我们当前的x轴和y轴的向量作为标准,在x轴的投影为3,而y轴的投影为2。这里的x轴和y轴的标准就称为基。

对于向量(3,2)来说,我们相求它在(1,0),(0,1)这组基下的坐标的话,实际上就是求向量在(1,0)、(0,1)方向上的投影,也就是向量的内积:PCA学习----降维算法,矩阵的乘法应该是会算的。

如果我们再想求向量(3,2)这个点在PCA学习----降维算法PCA学习----降维算法这组基下的坐标是多少,这个时候我们就是计算向量(3,2)在向量PCA学习----降维算法PCA学习----降维算法的投影:

PCA学习----降维算法

我们可以得到坐标为PCA学习----降维算法。这就是基变换下的坐标变换,一旦基变换,说明我们的标准也就是x轴和y轴变了,向量的坐标自然要变换,那么我们更加一般的公式为:

PCA学习----降维算法

其中PCA学习----降维算法是一个行向量,表示第i个基,PCA学习----降维算法是一个列向量,表示第j个 原始向量坐标,等式左边就是在求原始坐标向量与各个基的内积也就是投影,等式右边自然就是我们的结果,等式的右边每一列都是原始向量坐标在基中的新坐标向量,也就是从一个空间映射到另外一个空间,我们的PCA降维也就是把我们当前空间维度中的原始特征映射到另外一个空间中,只不过新的空间维度更低。那么从上面的式子上看,我们如何做才能使新的坐标向量维度更低?

我们可以看到如果基的数量少于向量本身的维数,我们可以达到降维的效果。假设我们的原始向量在一个三维的空间中,也就是每个向量的坐标都由x、y、z三个维度的投影组成,现在想将这个三维的向量映射到二维中,很明显基的数量从原来的三个变成了两个。

我们现在大概知道了PCA方法的初始原理,那么我们的算法采用什么标准才能说是达到了降维的标准呢? 西瓜书上说了两种:最近重构性和最大可分法。样本降维也是在一个超平面上,那么这个超平面应该具有以下性质:

1. 最近重构性:样本点到这个超平面的距离都足够近

2. 最大可分性:样本点在这个超平面上的投影都能尽可能分开。

我们分别基于最大可分性和最近重构性来说明。

PCA学习----降维算法

最大可分性

上面提到最大可分性就是希望样本点投影后的值尽可能分散,一种比较直观的解释:样本点投影之后最差得情况就是有很多重叠,这样其实可以用于模型训练的样本就会减少,没有保存好样本的差异性,很明显这种投影降维的结果我们是不愿意看到的。

那么如何去度量样本的一个分散程度,不知道还记不记得正态分布中的参数PCA学习----降维算法PCA学习----降维算法,其中PCA学习----降维算法表示平均值,就是我的样本的一个大概水平,PCA学习----降维算法表示标准差,PCA学习----降维算法为方差表示样本的一个差异程度也就是分散程度,所以在PCA中用方差表示样本数值的分散程度。

所以我们的问题就转为:如何找到一组基,使得原始样本通过这组基映射之后样本数据之间的方差达到最大。以上的方差式子我们是针对一维空间中的样本数据,而往往我们遇到的是高维空间中的数据,就算是降维之后也很少是降到一维空间中,那么我们如何衡量多维空间中样本数据的分散程度,我们引入协方差。

协方差可以表示两个变脸之间的相关性,如果两个变量的变化趋势一致,那么两个变量之间的协方差就是正值,这两个变量就是正相关。 如果两个变量的变化趋势相反,那么两个变量之间的协方差就是负值,这两个变量就是负相关。如果两个向量独立不相关,那么协方差为0。

上面我们说了如果两个变量独立不相关,协方差的值为0,

所以PCA的优化目标:将一组n维向量降为k维,就是选择k个单位正交基,原始的样本数据通过这组基映射到新的向量空间中之后,要求各变量之间的协方差为0,变量内部的方差越大越好。

接下来用矩阵形式表示协方差。

假设我们的样本中的两个变量(属性)分别是a和b,将其按照行组成矩阵X:

PCA学习----降维算法

然后:

PCA学习----降维算法

很明显可以看到矩阵的对角线上分别是两个变量的方差, 而其他元素是a和b的协方差。

这个时候根据我们的优化条件,我们是要令协方差为0,而方差尽可能大,也就是除了对角线之外的其他元素全部化为0,并且在对角线上将元素按大小从上到下排列(变量方差尽可能大)。

 所以我们要找的P就是能让原始协方差矩阵对角化的P,优化目标变为:寻找一个矩阵P,满足PCA学习----降维算法是一个对角矩阵,并且对角元素安好从小到大排列,那么P的前k行就是要寻找的基,用P的前k行组成的矩阵乘以X就使得X从N维降到K维并且满足上述优化条件。

最后就是如何完成对角化。

我们可以知道协方差矩阵C是一个对称矩阵,对称矩阵有一系列非常好的性质:

1.实对称矩阵不同特征值对应的特征向量必然正交。

2.设特征向量PCA学习----降维算法的重数为r,那么必然存在r个线性无关的特征向量对应于PCA学习----降维算法,因此可以将这r个特征向量单位正交化。

那么一个nxn的实对称矩阵一定可以找到n个单位正交特征向量,设这n个特征向量为PCA学习----降维算法,将其按列组成矩阵:

PCA学习----降维算法

则协方差矩阵C:

PCA学习----降维算法

其中PCA学习----降维算法为对角矩阵,其对角元素为各特征向量对应的特征值。我们要找的矩阵P:PCA学习----降维算法

如果设P按照PCA学习----降维算法中的特征值的从小到大将特征向量从上到下排列,则用P的前k行组成的矩阵乘以原始数据矩阵X就得到了我们需要的降维后的数据矩阵Y。

所以其实PCA最后求的就是原始样本数据的协方差矩阵,将其进行对角化(在线性代数中只要掌握矩阵的对角化即可),PCA算法中将矩阵的意义更加结合实际。

最近重构性

上面提到最近重构性是指样本点到这个超平面的距离都足够近。PCA算法的为了便于计算,第一步就对样本数据进行了中心化处理,假定投影变换后得到的新坐标系也就是基为PCA学习----降维算法,如果丢弃新坐标系中的部分坐标,即将维度降到PCA学习----降维算法,则样本PCA学习----降维算法在低维坐标系中的投影是PCA学习----降维算法,其中PCA学习----降维算法PCA学习----降维算法在低维坐标系下第j维的坐标,若基于PCA学习----降维算法来重构PCA学习----降维算法,则会得到:

PCA学习----降维算法

考虑整个训练集,原样本点PCA学习----降维算法与基于投影重构的样本点PCA学习----降维算法之间的距离为:

PCA学习----降维算法

根据最近重构性,上面这个式子应该最小化,因为PCA学习----降维算法是标准正交基,PCA学习----降维算法是协方差矩阵,所以:

PCA学习----降维算法

这就是PCA的优化目标,和基于最大可分性差不多,还是对样本数据的协方差矩阵做变换。 

参考:https://zhuanlan.zhihu.com/p/77151308

 

 

相关文章: