PCA在图像与信号处理中应用非常广泛。主要用来进行降维与一些预处理。PCA处理后新的特征之间的将不相关性,即新的数据的协方差矩阵为对角阵。PCA可以理解为寻找一些表达了数据最大方差的线性特征, 其假设数据是符合Gaussian分布的(与ICA(./ica.html)正好相反)。 目标函数如下:


Solve


上面的优化问题可以通过数据的协方差矩阵特征值分解来计算。步骤如下:

  1. 计算数据的协方差矩阵M(如果各维度特征的量纲不在一个级别,可以除以标准差进行归一化,不会改变特征值,一般图像处理中不进行归一化),并计算协方差矩阵的特征向量矩阵U和特征值(特征值的对角矩阵也是PCA旋转后协方差矩阵)
  2. 将数据进行PCA投影,即

注意:

  1. 特征向量的个数最多为MIN(n-1, p),其中n是样本的个数,p是特征的维数

Dimension Reduction


  • 降维度操作
    即去除一些特征值比较小的特征向量进行PCA转换。 如下:

  • 维度的选取
    假如需要降维后的数据保留原数据99%的方差,即

    通过协方差矩阵的特征值来计算,即

  • 降维后重建

    因为是协方差矩阵是对角矩阵,所以U是正交矩阵。即。因此当没有进行降维时,数据是可以完全恢复的。

  • 从统计的角度看降维
    1. 目标函数
      以2D->1D为例,寻找一个方向向量,使得数据投影到方向向量上的距离和最短。如果是3D->2D,则是寻找2个方向向量, 因为两个向量可以组成一个平面, 如下图:
      pca_projection
    2. 其和线性回归的区别
      线性回归是寻找其垂直方向上的距离和最短,而PCA是寻找其垂直投影到向量上的距离最短。如下图:
      pca_v_lr
  • 应用场景
    1. 降维来减少内存的消耗,以及提高性能
    2. 不能使用PCA降维来防止数据过拟合(Andrew NG的在机器学习公开课里有提到,但没说具体原因)。但其其实也可以作为一种regularization(见[3]p230,像L1、L2一样,表面上看其是降低了特征的维数,但其实其限制是通过一些线性组合来约束原特征空间的参数

Whiten


详细见here

Reference


  1. Natural Image Statistics(Chapter 5)
  2. Machine Learning open course
  3. An Introduction to Statistical Learning