Principal-Component-Analysis

主成分分析

主成分分析是很常用降维方法之一。通过对原始数据进行投影而达到将其降维、划分的作用。

PCA的出发点有两个:

  • 最近重构性:样本点到投影面的距离都足够近
  • 最大可分性:样本点在投影面上的投影尽可能分开
预处理(均值和方差的正规化)

求均值$\hat{x}=\frac{1}{m}\sum_{i=1}^mx^{(i)}$

将所有$x^{(i)}$替换成$x^{(i)}-\hat{x}$.

求方差 $\sigma_{j}^2=\frac{1}{m}\sum_i(x_j^{(i)})^2$

将所有$x_j^{(i)}$替换成$x_j^{(i)}/\sigma_j$.

![](http://ww2.sinaimg.cn/large/9bcfe727jw1f9zjud8hdxj20iv0h4dg5.jpg)

假设现在有两组二维空间的点,我们需要将他们投影到一维空间。也就是要找到一个单位投影向量$\mu$,使投影后的点方差最大,分的最开,上图中,右下角的方法比右上角的差。点$x^{(i)}$投影过后到原点的距离是$\mu^T x^{(i)}$,那么所有的投影过的数据的均值就是$\frac{1}{m}\sum_i \mu^T x^{(i)}=\frac{1}{m} \mu^T \sum_i x^{(i)}$,因为我们已经对原数据进行了正规化,所以投影过的数据均值是$0$. 因此,我们的目标函数就是最大化: 上式中括号括起来的也就是原始数据的协方差矩阵$\Sigma=\frac{1}{m}\sum_{i=1}^mx^{(i)}(x^{(i)})^T$,最大化这个公式也就是求解$\Sigma$的特征向量(拉格朗日乘子法)。所以如果需要将原始空间的数据降到k维,那么只需要取$\Sigma$前k大的特征值对应的特征向量作为投影向量即可。

PCA的算法描述如下:

输入:样本集D,和目标维度k

1. 对所有样本正规化

2. 计算样本的协方差矩阵

3. 对协方差矩阵做特征值分解

4. 降序排序特征值,取前k个特征值对应的特征向量组成投影矩阵
白化

处理图像时,相邻像素点通常是有关系,所以图像原始数据是冗余的。白化就是要降低输入的冗余性,并且保证每个特征具有相同的方差

做法是:先将图片数据经过PCA处理,维度之间的相关度变为0,然后我们对每个维度都除以那个维度的标准差,这样每个维度就具有单位方差了。PCA做白化时,可以选取前k个成分,而另一种叫ZCA的方法,会保留所有成分,并且最后会左乘一个特征向量矩阵,把特征旋转回去

二者差异如下:

  • PCA白化需要保证数据各维度的方差为1,ZCA白化只需保证方差相等
  • PCA白化可进行降维也可以去相关性,而ZCA白化主要用于去相关性
  • ZCA白化相比于PCA白化使得处理后的数据更加的接近原始数据
Robust主成分分析

PCA假设数据的噪声是高斯的,对于大的噪声或者严重的离群点,PCA会被它影响,导致无法正常工作。而鲁棒PCA只假设噪声是稀疏的。所以,RPCA的出发点是将原数据分解成两个矩阵,一个是稀疏的(噪声点),另一个是低秩的(内部有一定的结构信息,造成各行或列间是线性相关的)。也就是: 其中,$rank$是矩阵求秩的意思。但是上式有着非凸和非平滑等问题,可以转化成优化求秩操作可以近似为求核范数,L0范数可以用L1范数逼近。求解出来上式,然后在对矩阵A运行PCA算法就可以得到对噪声有着比较好的鲁棒性的结果。

分享到