ZCA美白和PCA美白有什么区别?

机器算法验证 主成分分析 降维 图像处理
2022-02-09 00:57:40

我对 ZCA 白化和正常白化(通过将主成分除以 PCA 特征值的平方根获得)感到困惑。据我所知,

xZCAwhite=UxPCAwhite,
其中是 PCA 特征向量。U

ZCA美白有什么用?普通美白和ZCA美白有什么区别?

2个回答

让您的(居中的)数据存储在一个矩阵中,其中个特征(变量)在列中,数据点在行中。令协方差矩阵的列中具有特征向量,在的对角线上具有特征值,使得n×dXdnC=XX/nEDC=EDE

然后你所谓的“正常”PCA白化转换由,请参见我在如何使用白化数据中的回答主成分分析?WPCA=D1/2E

然而,这种美白转变并不是唯一的。事实上,白化数据在任何旋转后都会保持白化,这意味着任何具有正交矩阵也将是白化变换。在所谓的ZCA白化中,我们将(协方差矩阵的特征向量堆叠在一起)作为这个正交矩阵,即W=RWPCARE

WZCA=ED1/2E=C1/2.

ZCA 变换(有时也称为“Mahalanobis 变换”)的一个定义属性是,它会产生尽可能接近原始数据的白化数据(在最小二乘意义上)。换句话说,如果你想最小化前提是被白化,那么你应该取这是一个 2D 插图:XXA2XAA=WZCA

PCA和ZCA美白

左子图显示数据及其主轴。注意分布右上角的深色阴影:它标志着它的方向。的行显示在第二个子图上:这些是数据投影到的向量。美白后(下图)分布看起来是圆形的,但请注意它看起来也是旋转的——暗角现在在东侧,而不是在东北侧。的行显示在第三个子图上(注意它们不是正交的!)。美白后(下图)分布看起来是圆形的它的方向与最初的方向相同。当然,可以通过使用旋转从 PCA 白化数据到 ZCA 白化数据。WPCAWZCAE

术语“ZCA”似乎是在Bell 和 Sejnowski 1996中引入的在独立分量分析的上下文中,代表“零相位分量分析”。有关详细信息,请参见那里。最有可能的是,您在图像处理的上下文中遇到了这个术语。事实证明,当应用于一堆自然图像(像素作为特征,每个图像作为数据点)时,主轴看起来像频率增加的傅立叶分量,请参见下面图 1 的第一列。所以它们非常“全球化”。另一方面,ZCA 变换的行看起来很“局部”,见第二列。这正是因为 ZCA 试图尽可能少地转换数据,因此每一行最好接近一个原始基函数(即只有一个活动像素的图像)。这是可以实现的,

1996 年 Bell 和 Sejnowski 中的 PCA 和 ZCA

更新

Krizhevsky, 2009, Learning Multiple Layers of Features from Tiny Images中给出了 ZCA 过滤器和使用 ZCA 转换的图像的更多示例,另请参见 @bayerj 的答案 (+1) 中的示例。

我认为这些示例提供了一个关于 ZCA 美白何时可能比 PCA 更可取的想法。也就是说,ZCA 白化的图像仍然类似于正常图像,而 PCA 白化的图像看起来一点也不像正常图像。这对于像卷积神经网络这样的算法(例如在 Krizhevsky 的论文中使用的)可能很重要,它们将相邻像素一起处理,因此在很大程度上依赖于自然图像的局部属性。对于大多数其他机器学习算法,使用 PCA 或 ZCA 对数据进行白化应该是绝对无关的。

给定协方差矩阵 的特征分解, 其中是特征值的对角矩阵, 普通白化将数据转换为协方差矩阵为对角线的空间: (有一些符号滥用。)这意味着我们可以通过根据

X¯X¯T=LDLT
D=diag(λ1,λ2,,λn)
D1L1X¯X¯TLTD1=D1L1LDLTLTD1=I
X~=D1L1X.

这是使用 PCA 进行的普通美白。现在,ZCA 做了一些不同的事情——它向特征值添加一个小 epsilon 并将数据转换回来。 以下是 ZCA 前后 CIFAR 数据集的一些图片。

X~=L(D+ϵ)1L1X.

ZCA 之前:

ZCA 之前

在 ZCA 之后,ϵ=0.0001

ZCA 1e-4 之后

在 ZCA 之后,ϵ=0.1

ZCA 之后 0.1

对于视觉数据,高频数据通常位于较低特征值所跨越的空间中。因此,ZCA 是一种加强这些的方法,导致更明显的边缘等。