ML

PCA降维与卷积升维

Posted by keming on June 2, 2017

最近刚看了点PCA的应用,对于其能够实现降维感到很惊奇。只是给定一堆samples,给定每个sample的属性值,此外没有任何分类信息,就能够将属性的个数减少而不过多影响整体。

它是如何办到的

  • PCA(Principal Component Analysis)用中文讲就是主成分分析
  • 鸢尾花数据集为例,给定150个samples,每个sample有4个属性,那么我们就有了一个150行4列的矩阵,这个矩阵储存了我们给出的全部信息。
  • 只需要对\(A^{T}\cdot A\)求特征值和特征向量就可以解决。
    \[A^{T}\cdot A\cdot u=\lambda \cdot u\]
  • 很明显,\(A^{T}\cdot A\)有4个特征值,将其从大到小排列分别为\(\lambda _{1},\lambda _{2},\lambda _{3},\lambda _{4}\),其对应的特征向量为\(u_{1},u_{2},u_{3},u_{4} \).
    \[B= A\cdot \left ( u_{1},u_{2},u_{3},u_{4} \right)\] \[B_{i}= A\cdot u_{i}\] 可以看出\(u_{1}\)是A对其最主要方向的映射,\(B_{1}\)是映射之后的属性值,需要降到几维,B就取前几列。

  • 具体的公式推导与理解可以关注协方差矩阵的推导路数投影方差的推导路数,我这里不再赘述。

怎么理解

  1. B的每一列,即每一个新的属性值都是A的每一个sample的4个属性值按照\(u_{i}\)进行映射得到的。
  2. PCA降维的理念是使降维之后各个sample仍是容易区分的,可以看做是按某种方式映射到低维后,其samples的方差最大。
  3. 这种容易区分的本质就是充分保留各个sample的信息

卷积用于降维

  • 对于图像的处理,经常使用二维卷积,而卷积是通过设置卷积核的个数来调整通道数目,达到调整卷积输出的第三维大小的目的。其实质也是在调整特征的维数。
  • 对于图像的卷积,可以参看caffe作者贾扬清大神的知乎回答:在Caffe中如何计算卷积?
  • 比如输入为28*28*3的三通道图像,进行3*3的二维卷积。对每一个卷积核而言,分别对28*28的三个通道进行卷积,再将三个通道的值进行某种权重的加和。其权重的实质也就相当于PCA中的特征向量。

卷积可以用于升维,而PCA只能降维?

  1. 大家一定注意到了,PCA对维度的调整依赖于某个矩阵的特征向量,而其特征值的数目限制了它只能进行降维。
  2. 对于二维卷积,当卷积核的数目小于输入通道数的时候,输出的通道数减小,最终flatten之后特征维数降低;相反,如果卷积核的数目大于输入通道数,最终的特征维数会升高。因此,卷积既能降维,又能升维。

两者的区别

  1. 在PCA的过程中,变换始终以保持各自尽可能多的信息为准则,有点像最大熵原则。
  2. 卷积则没有这个约束,所以卷积是引入了新的信息,消除了不确定性。