白化(Whitening) PCA白化 ZCA白化

白化是一种重要的预处理过程,其目的就是降低输入数据的冗余性,使得经过白化处理的输入数据具有如下性质:(i)特征之间相关性较低;(ii)所有特征具有相同的方差

白化处理分PCA白化和ZCA白化,PCA白化保证数据各维度的方差为1,而ZCA白化保证数据各维度的方差相同。PCA白化可以用于降维也可以去相关性,而ZCA白化主要用于去相关性,且尽量使白化后的数据接近原始输入数据。

1. PCA白化

根据白化的两个要求,我们首先是降低特征之间的相关性。在PCA中,我们选取前K大的特征值的特征向量作为投影方向,如果K的大小为数据的维度n,把这K个特征向量组成选择矩阵U(每一列为一个特征向量),为旋转后的数据。如果K<n,就是PCA降维,如果K=n,则降低特征间相关性降低。

原始数据                                               PCA旋转

上图显示了原始数据和经过PCA旋转之后的数据,可以发现数据之间的相对位置都没有改变,仅仅改变了数据的基,但这种方法就降低了数据之后的相关性。(原始数据的相关性为正,因为x1增加时,x2也增加;而处理之后的数据的相关性明显降低)

第二个要求是每个输入特征具有单位方差,以直接使用作为缩放因子来缩放每个特征,计算公式,经过PCA白化处理的数据分布如下图所示,此时的协方差矩阵为单位矩阵I。

PCA白化                                     ZCA白化

2. ZCA白化

ZCA白化的定义为:

ZCA白化只是在PCA白化的基础上做了一个选择操作,是的白化之后的数据更加的接近原始数据。

ZCA白化首先通过PCA去除了各个特征之间的相关性,然后是输入特征具有单位方差,此时得到PCA白化后的处理结果,然后再把数据旋转回去,得到ZCA白化的处理结果,感觉这个过程让数据的特征之间有具有的一定的相关性,下面实验进行验证。

在实验中,我分别计算了原始数据,旋转后数据,PCA白化以及ZCA白化的协方差矩阵,数据用的是UFLDL的实验数据,是个协方差矩阵分别为:

从上面的4个协方差矩阵可以发现,正如上面所述,旋转之后降低了特征之间的相关性,rotate协方差矩阵的主对角线以为的值都接近零。我猜测ZCA白化后的数据的相关性会比PCA白化的要强,在该实验室中表明好像我的感觉是对的,ZCA白化后主对角线以为的值的绝对值大于PCA白化后,虽然这种比较可以忽略不计,应该他们的值都是非常的接近的。

3. PCA白化和ZCA白化的区别

PCA白化ZCA白化都降低了特征之间相关性较低,同时使得所有特征具有相同的方差。

1.   PCA白化需要保证数据各维度的方差为1,ZCA白化只需保证方差相等。

2.   PCA白化可进行降维也可以去相关性,而ZCA白化主要用于去相关性另外。

3.   ZCA白化相比于PCA白化使得处理后的数据更加的接近原始数据。

4. 正则化

实践中需要实现PCA白化或ZCA白化时,有时一些特征值在数值上接近于0,这样在缩放步骤时我们除以将导致除以一个接近0的值,这可能使数据上溢 (赋为大数值)或造成数值不稳定。因而在实践中,我们使用少量的正则化实现这个缩放过程,即在取平方根和倒数之前给特征值加上一个很小的常数 :

当x在区间 [-1,1] 上时, 一般取值为

5. 参考:

UFLDL   Tutorial

时间: 2024-10-11 10:55:43

白化(Whitening) PCA白化 ZCA白化的相关文章

白化whitening

原文地址:http://blog.csdn.net/hjimce/article/details/50864602 作者:hjimce 一.相关理论 白化这个词,可能在深度学习领域比较常遇到,挺起来就是高大上的名词,然而其实白化是一个比PCA稍微高级一点的算法而已,所以如果熟悉PCA,那么其实会发现这是一个非常简单的算法. 白化的目的是去除输入数据的冗余信息.假设训练数据是图像,由于图像中相邻像素之间具有很强的相关性,所以用于训练时输入是冗余的:白化的目的就是降低输入的冗余性. 输入数据集X,经

ZCA白化变换推导——Learning Multiple Layers of Features from Tiny Images

参考文献:Learning Multiple Layers of Features from Tiny Images:附录 设数据集 X 的维数为 d×n ,且已经中心化 则协方差矩阵为 1/(n-1)*X*X' 我们想让这n个d维向量中任意两维都不相关,则假定去相关矩阵为W Y = W*X 为了使W达到去相关的目的,Y*Y'必须是对角阵,可以进一步约束Y满足 Y * Y' = (n - 1) I 再对W矩阵加限制(主要是方便下面的推导) W = W' 则 Y * Y' = (n-1) I W*

深度学习入门教程UFLDL学习实验笔记三:主成分分析PCA与白化whitening

主成分分析与白化是在做深度学习训练时最常见的两种预处理的方法,主成分分析是一种我们用的很多的降维的一种手段,通过PCA降维,我们能够有效的降低数据的维度,加快运算速度.而白化就是为了使得每个特征能有同样的方差,降低相邻像素的相关性. 主成分分析PCA PCA算法可以将输入向量转换为一个维数低很多的近似向量.我们在这里首先用2D的数据进行试验,其数据集可以在UFLDL网站的相应页面http://ufldl.stanford.edu/wiki/index.php/Exercise:PCA_in_2D

Batch Normalization 学习笔记

原文:http://blog.csdn.net/happynear/article/details/44238541 今年过年之前,MSRA和Google相继在ImagenNet图像识别数据集上报告他们的效果超越了人类水平,下面将分两期介绍两者的算法细节. 这次先讲Google的这篇<Batch Normalization Accelerating Deep Network Training by Reducing Internal Covariate Shift>,主要是因为这里面的思想比较

google batchnorm 资料总结

训练webface 李子青提出的大网络,总是出现过拟合,效果差. 尝试使用batchnorm. 参考博客: http://blog.csdn.net/malefactor/article/details/51549771 cnn 和rnn 中如何引入batchnorm http://blog.csdn.net/happynear/article/details/44238541  Google paper <Batch Normalization Accelerating Deep Networ

深度学习UFLDL教程翻译之PCA白化

一.引入 主成分分析(PCA)是一种降维算法,能大大加速你的无监督特征学习算法.更重要的是,理解PCA能让我们后面实现白化,这是一个对所有算法适用的重要的预处理步骤. 假设你在图像上训练你的算法.不过输入稍微有点冗余,因为图像中相邻的像素值是高度相关的.具体来说,假设我们在16*16的灰度图像块上训练.那么x∈R256是256维的向量,一个特征xj对应着图像中每个像素强度.由于相邻像素之间的相关性,PCA使我们能够以一个维数小得多的输入来近似原输入,而造成误差极小. 二.例子与数学背景 对我们运

PCA主成分分析+白化

引言 主成分分析(PCA)是一种能够极大提升无监督特征学习速度的数据降维算法.更重要的是,理解PCA算法,对实现白化算法有很大的帮助,很多算法都先用白化算法作预处理步骤. 假设你使用图像来训练算法,因为图像中相邻的像素高度相关,输入数据是有一定冗余的.具体来说,假如我们正在训练的16x16灰度值图像,记为一个256维向量  ,其中特征值  对应每个像素的亮度值.由于相邻像素间的相关性,PCA算法可以将输入向量转换为一个维数低很多的近似向量,而且误差非常小. 实例和数学背景 在我们的实例中,使用的

UFLDL教程笔记及练习答案二(预处理:主成分分析和白化)

首先将本节主要内容记录下来,然后给出课后习题的答案. 笔记: 1:首先我想推导用SVD求解PCA的合理性. PCA原理:假设样本数据X∈Rm×n,其中m是样本数量,n是样本的维数.PCA降维的目的就是为了使将数据样本由原来的n维降低到k维(k<n).方法是找数据随之变化的主轴,在Andrew Ng的网易公开课上我们知道主方向就是X的协方差所对应的最大特征值所对应的特征向量的方向(前提是这里X在维度上已经进行了均值归一化).在matlab中我们通常可以用princomp函数来求解,详细见:http

PAC和白化练习之处理二维数据

在很多情况下,我们要处理的数据的维度很高,需要提取主要的特征进行分析这就是PAC(主成分分析),白化是为了减少各个特征之间的冗余,因为在许多自然数据中,各个特征之间往往存在着一种关联,为了减少特征之间的关联,需要用到所谓的白化(whitening). 首先下载数据pcaData.rar,下面要对这里面包含的45个2维样本点进行PAC和白化处理,数据中每一列代表一个样本点. 第一步 画出原始数据: 第二步:执行PCA,找到数据变化最大的方向: 第三步:将原始数据投射到上面找的两个方向上: 第四步: