浅谈白化(Whitening) 、PCA白化、ZCA白化

白化

本节讨论白化(Whitening),以及白化与 PCA(Principal Component Analysis) 和 ZCA(Zero-phase Component Analysis) 的关系。

备注:这是一篇对白化新的理解,可以和之前写过的一篇白化博客对照看机器学习中的数学(十):白化(whitening)

对数据做白化处理后相比于原始数据有两个特点:

  1. 数据的不同维度去相关;

  2. 数据每个维度的方差为1;

条件1要求白化后数据的协方差矩阵是个对角阵;条件2要求白化后数据的协方差矩阵是个单位矩阵。

白化作用如图:

为什么使用白化?

假设训练数据是图像,由于图像中相邻像素之间具有很强的相关性,所以用于训练时输入是冗余的。白化的目的就是降低输入的冗余性。

比如在独立成分分析(ICA)中,对数据做白化预处理可以去除各观测信号之间的相关性,从而简化了后续独立分量的提取过程,而且,通常情况下,数据进行白化处理与不对数据进行白化处理相比,算法的收敛性较好。

PCA白化 与 ZCA白化

PCA 白化

给定训练数据集(假设每个特征都具有零均值):

n 是数据维度;m 是样本个数。

数据的协方差矩阵为:

对协方差矩阵做奇异值分解:

U 是 Σ 的特征向量矩阵,S 是其特征值矩阵;因为 Σ 是对称方阵,所以 V=U',Σ=USV。

PCA 白化的定义如下:

其中,Xrotate 就是原数据在主成分轴上的投影,而 S^(-1/2) 相当于对每一个主轴上的数据做一个缩放,缩放因子就是除以对应特征值的平方根。

所以:

上式第 2 步是把 XPCAwhite 表达式带入得到的;第 3 步利用了矩阵 S 是对角阵的特性;第 4 步是将 Σ 作奇异值分解得到的;第 5 步利用了 U 是酉矩阵的性质(U'U=UU'=I)。

可见数据在经过 PCA 白化以后,其协方差矩阵是一个单位矩阵,即各维度变得不相关,且每个维度方差都是 1。

ZCA 白化

教程里给 ZCA 白化的定义是:

相当于将经过 PCA 白化后的数据重新变换回原来的空间。

所以:

可见 ZCA 白化也是一个合法的白化。

PCA 白化 与 ZCA 白化

如何理解两者之间的关系?

首先,PCA 白化将原数据变换(投影)到主成分轴上,这一步消除了特征之间的相关性;

其次,PCA 白化对每一个主成分轴上的数据进行缩放,使其方差为 1;

因为以上的线性变换是在主成分空间中完成的,为了使白化后的数据尽可能接近原数据,可以把处理过的数据再变换回原空间,也就是 ZCA 白化。

ZCA 白化的全称是 Zero-phase Component Analysis Whitening。我对【零相位】的理解就是,相对于原来的空间(坐标系),白化后的数据并没有发生旋转(坐标变换)。

正则化

在实践中,PCA 与 ZCA 白化都需要被正则化(Regularization)。即在缩放这个步骤之前,给每一个特征值先加上一个正则化项:

教程给出的原因有两个:

  1. 有时一些特征值在数值上接近0,在缩放步骤时将导致除以一个接近0的值;这可能使数据上溢或造成数值不稳定;

  2. 对图像来说,正则化项对输入图像也有一些平滑去噪(或低通滤波)的作用,可改善学习到的特征。

以 PCA 白化为例,经过正则化的数据协方差矩阵为:

相当于减小了每个像素的不确定性(方差)。

关于低通滤波,可以这样理解:

最简单的低通滤波就是把一个像素的色值替换为其周围像素色值的算术平均。可以想象,经过处理之后的图像色彩变化更平缓,图像变得更模糊。

为什么要这样做?首先,数字图像总是伴随着噪点。其次,噪点总是伴随着色值的剧烈变化,因为每个噪点都是独立产生的。但是原图像的像素之间并不是独立的,表现为多像素构成的“色块”。

低通滤波器对“剧烈的"、"高频的”变化更敏感,所以它对噪音的影响大于对原图像的影响。经过低通滤波处理的图像可以展示出原本被噪音掩盖的细节。

对图像进行PCA白化和ZCA白化后实验结果对比:

图1:原始数据

 

图2:零均值化以后的数据

图3:PCA 白化所使用的基

图4:ZCA 白化所使用的基:

本例使用的图片尺寸均为 12×12,数据具有 144 个维度,可以认为ZCA 白化的每一个基都处于其中一个维度(一个像素),即 ZCA 白化针对原数据每一个维度分别提取特征,而 PCA 白化是针对进行主成分变换后的数据的每一个维度提取特征,前者是高度局部化的,后者着眼于全局。

图5:PCA 白化后的数据

图6:ZCA 白化后的数据:

显然 ZCA 白化相比 PCA 白化更接近原数据。

<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 ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值