首页 > 代码库 > PCA whitening

PCA whitening

对输入数据技术分享,维度为2时,想要把数据降维1维:

技术分享

数据的主方向就是旋转数据的第一维技术分享。因此,若想把这数据降到一维,可令:

技术分享

数据已经进行预处理(零均值),使得每个特征技术分享技术分享具有相同的均值和方差。

PCA算法将寻找一个低维空间来投影我们的数据。从下图中可以看出,技术分享是数据变化的主方向,而 技术分享是次方向。

技术分享

为更形式化地找出方向技术分享技术分享,我们首先计算出协方差矩阵技术分享,如下所示:

    技术分享技术分享就是协方差矩阵的主特征向量,而技术分享是次特征向量。(按照特征值得大小选取)

向量技术分享技术分享构成了一个新基,可以用来表示数据。那么技术分享就是样本点技术分享在维度技术分享上的投影的长度(幅值)。同样的,技术分享技术分享投影到技术分享维度上的幅值。

在本例中,可得技术分享的点图如下(取 技术分享 ):

  技术分享

 协方差:为了衡量两个数据的相关性,一个数据朝大于均值的方向走的趋势时,另一个数据如果朝小于均值的方向走,趋势相反,协方差值为负的,负相关;如果另一个数据同意朝大于均值的方向变化,协方差为正值,正相关。如果协方差值为0,不相关。

 

数据白化就是为降低训练数据的冗余,降低输入的冗余性

由前面的例子,特征技术分享的分布如下图所示:

技术分享

  这个数据的协方差矩阵如下:

技术分享

  技术分享技术分享是不相关的, 满足我们对白化结果的第一个要求 (特征间相关性降低)。为了使每个输入特征具有单位方差,我们可以直接使用技术分享作为缩放因子来缩放每个特征 技术分享。具体地,我们定义白化后的数据 技术分享如下:

技术分享


  绘制出 技术分享,我们得到:

技术分享

这些数据现在的协方差矩阵为单位矩阵 技术分享。我们说,技术分享是数据经过PCA白化后的版本: 技术分享中不同的特征之间不相关并且具有单位方差。

 

拿图像为例,图像中的像素之间存在很强的相关性。(在图像处理中,一个像素与相邻像素的灰度值之间有联系,所以可以利用这一点进行图像压缩)。白化就是为了减少冗余也就是减少这种相关性。PCA白化在减少特征之间相关性的处理方法与PCA算法相同,找到一个新的基,将数据投影到新的基上,也就是将原始数据做旋转变化,达到减少相关性的目标。但PCA白化与PCA有一点不同,就是处理后的数据的方差为单位方差。主要是将主轴上的数据进行了缩放处理。

ZCA白化是在PCA白化后的数据基础上做处理,主要是对数据进行旋转,使数据比较好的接近原始数据,并没有减少数据特征之间的相关性。

PCA与白化,

就是对输入数据进行预处理,

前者对数据进行降维,后者对数据进行方差处理。

PCA whitening