PCA白化与ZCA白化的推导

PCA白化与ZCA白化的推导


  最近看到batch normalization的原理时候,看到了PCA白化和ZCA白化的算法,但有些疑惑,经过推导终于解决,特此记录。

白化的概念:

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

PCA白化与ZCA白化:

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

  疑惑就是:PCA白化原理类似于PCA,就是通过将原始数据映射到新的特征空间,从而使得数据各维度特征之间呈现独立不相关,实现白化效果;但是ZCA则是在PCA白化的基础上,再映射回初始空间,那这样不是相当于又把数据还原了吗?为什么还能保持特征不相关呢?我经过数据仿真,ZCA完全可以实现白化。(以下为了方便,混淆使用了独立和不相关的概念)

PCA白化

  • 假设有一组协方差矩阵为 C C C的原始数据 X X X,需要找到基向量 P P P,使得 Y = P X Y=PX Y=PX,并且 Y Y Y的协方差矩阵 D D D为对角矩阵,即 Y Y Y各个特征是独立不相关的,可以推导出 D D D C C C的关系如下:

D = 1 m Y Y T = 1 m ( P X ) ( P X ) T = 1 m P X X T P T = P ( 1 m X X T ) P T = P C P T \begin{aligned} D & = \frac{1}{m}YY^T \\ & = \frac{1}{m}(PX)(PX)^T\\ & = \frac{1}{m}PXX^TP^T\\ & = P(\frac{1}{m}XX^T)P^T\\ & = PCP^T \end{aligned} D=m1YYT=m1(PX)(PX)T=m1PXXTPT=P(m1XXT)PT=PCPT

  • 从上式可得, P P P其实就是 C C C进行对角化得到 D D D的特征向量,PCA的基本原理也是在于此,即将原始数据的协方差矩阵进行特征分解,得到的特征向量就是降维空间的基向量。而PCA白化还要在此基础上多一个步骤,就是将新数据除以特征值的开方:

Y w h i t e = D − 1 Y Y_{white}= \sqrt{D^{-1}}Y Ywhite=D1 Y

ZCA白化

  • ZCA白化是在PCA白化得到的数据的基础上再乘以 P T P^T PT,即:

Z w h i t e = P T Y w h i t e = P T D − 1 Y \begin{aligned} Z_{white} &= P^TY_{white} = P^T\sqrt{D^{-1}}Y \end {aligned} Zwhite=PTYwhite=PTD1 Y

  • 这里开始对开篇提出的疑惑进行数学推导上的解释,先说结论:因为中间除以特征值的开方,使得数据映射回到原始的空间时,依然保留了独立的特性。下面分别看看是否除以特征值的开方(这里是矩阵运算,所以是左乘特征值矩阵的逆矩阵开方,即 D − 1 \sqrt{D^{-1}} D1 )得到的 Z Z Z数据的协方差情况,假设 Z Z Z的协方差矩阵为 A A A
  1. 按照正式的ZCA白化流程,映射之前除以特征值的开方得到 Z Z Z

A = 1 m Z Z T = 1 m ( P T D − 1 Y ) ( P T D − 1 Y ) T = P T D − 1 ( 1 m Y Y T ) D − 1 P = P T D − 1 D D − 1 P = P T E P = P T P = E \begin{aligned} A &= \frac{1}{m}ZZ^T\\ &= \frac{1}{m}(P^T\sqrt{D^{-1}}Y)(P^T\sqrt{D^{-1}}Y)^T\\ &= P^T\sqrt{D^{-1}}(\frac{1}{m}YY^T)\sqrt{D^{-1}}P\\ &= P^T\sqrt{D^{-1}}D\sqrt{D^{-1}}P\\ &= P^TEP\\ &= P^TP = E \end{aligned} A=m1ZZT=m1(PTD1 Y)(PTD1 Y)T=PTD1 (m1YYT)D1 P=PTD1 DD1 P=PTEP=PTP=E

  • 从公式中可以看到, Z Z Z的协方差矩阵 A A A其实是个单位阵,因此 Z Z Z的各个特征之间肯定是独立不相关的(这个结论可以参考协方差矩阵与特征不相关之间的关系)。
  1. 直接映射回原始空间,不除以特征值的开方得到 Z Z Z

A = 1 m Z Z T = 1 m ( P T Y ) ( P T Y ) T = P T ( 1 m Y Y T ) P = P T D P = C \begin{aligned} A &= \frac{1}{m}ZZ^T\\ &= \frac{1}{m}(P^TY)(P^TY)^T\\ &= P^T(\frac{1}{m}YY^T)P\\ &= P^TDP\\ &= C \end{aligned} A=m1ZZT=m1(PTY)(PTY)T=PT(m1YYT)P=PTDP=C

  • 由此可见,如果不除以特征值的开方,得到的 A A A的协方差就会被还原成原始数据的协方差 C C C,因此,ZCA白化之所以会发挥白化的效果,就是因为先除以特征值的开方,再映射回原始的空间

你可能感兴趣的:(PCA白化与ZCA白化的推导)