白化(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 

<think>好的,用户想了解ZCA白化的概念和应用,特别是在机器学习数据预处理中的使用。首先,我需要回忆一下ZCA白化的基本定义。记得ZCA是Zero-phase Component Analysis的缩写,属于数据预处理中的白化技术的一种。白化的主要目的是去除数据之间的相关性,并使得每个特征的方差相同,通常用于PCA之后。 根据引用[1]提到的,ZCA Whitening是在PCA白化的基础上进行的。PCA白化会保留数据的主成分,并使其方差归一化。而ZCA则是在PCA白化之后,将数据旋转回原来的特征空间,这样数据结构更接近原始数据,同时保持了去相关性和方差归一化。这可能有助于保留更多的局部结构信息,适合图像处理等需要保持空间关系的任务。 接下来,应用方面,ZCA白化常用于图像预处理,比如在深度学习中的CIFAR-10数据集处理。引用[4]提到CNN用于处理b-scan图像分类,可能预处理步骤中用到ZCA。另外,引用[3]提到图像处理时,ZCA可能帮助增强特征,让模型更容易学习。 需要注意ZCAPCA白化的区别。PCA白化可能会降维,而ZCA保持维度不变,但旋转回原空间。这在需要保持数据维度的情况下更有用,比如当每个像素位置对任务都很重要时。 用户可能还想知道具体如何实现ZCA。步骤大致是:1. 对数据去均值;2. 计算协方差矩阵;3. 做PCA分解得到特征向量和特征值;4. PCA白化,用特征值调整;5. 将数据旋转回原空间,即应用特征向量矩阵的转置。 最后,需要确认引用是否正确。引用[1]确实提到了ZCA Whitening,可以作为支持。应用部分可能引用到图像处理相关的例子,比如引用[4]中的CNN应用,但可能需要更直接的关联。不过引用[3]提到的图像处理兴趣提升,可能间接相关。 总结:ZCA白化通过保留原始特征空间结构,同时去相关和归一化方差,适用于需要保持数据结构的任务,如图像预处理。步骤涉及PCA白化后的旋转,应用场景包括图像分类和特征增强。</think>### ZCA白化的概念与应用 ZCA白化(Zero-phase Component Analysis Whitening)是机器学习中常用的数据预处理技术,主要用于消除数据特征之间的相关性并标准化方差。其核心目标是通过线性变换,使处理后的数据满足以下条件: 1. **特征间不相关**:协方差矩阵为单位矩阵; 2. **方差归一化**:每个特征的方差为1。 #### 实现步骤 1. **数据去均值**:将数据均值调整为0,即$x_{\text{centered}} = x - \mu$。 2. **计算协方差矩阵**:$\Sigma = \frac{1}{m} x_{\text{centered}}^T x_{\text{centered}}$。 3. **PCA分解**:对协方差矩阵进行特征值分解,得到特征向量矩阵$U$和特征值对角矩阵$\Lambda$。 4. **PCA白化**:将数据投影到主成分空间并缩放,公式为: $$x_{\text{PCAwhite}} = \Lambda^{-1/2} U^T x_{\text{centered}}$$ 5. **ZCA白化**:将PCA白化后的数据旋转回原始特征空间: $$x_{\text{ZCAwhite}} = U x_{\text{PCAwhite}}$$ #### 与PCA白化的区别 - **PCA白化**:降维后直接保留主成分,可能丢失原始空间结构。 - **ZCA白化**:保持数据维度不变,同时保留原始特征空间的方向,更适合需要保留局部结构(如图像像素关系)的任务[^1]。 #### 应用场景 1. **图像预处理**:在图像分类任务(如CIFAR-10)中,ZCA白化能增强边缘和纹理特征,同时减少光照变化的影响[^4]。 2. **特征标准化**:在深度学习中,用于加速模型收敛,尤其是卷积神经网络的输入处理。 3. **信号处理**:消除传感器信号中的冗余信息,提升分类器性能。 ```python import numpy as np def zca_whiten(X): X_centered = X - np.mean(X, axis=0) U, s, Vt = np.linalg.svd(X_centered, full_matrices=False) epsilon = 1e-5 X_zca = U.dot(np.diag(1.0 / np.sqrt(s + epsilon))).dot(U.T).dot(X_centered.T) return X_zca.T ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值