深度学习笔记之主成分分析

1. Definitions(定义)

主成分分析(principal components analysis, PCA)简称PCA,是一种广泛应用于数据降维(data dimensionality reduction)、有损数据压缩(lossy data compression)、特征提取(feature extraction)以及数据可视化等的一种技术,也被称为Karhunen-Lo`eve变换。

关于PCA的定义主要有两种:

  • PCA是一种将数据投影到低维线性空间(principal subspace,主成子空间)使得投影之后的差异最大的正交投影。
  • PCA是一种最小化平均投影成本(average projection cost),投影点与数据点之间的均方距离最小,即数据损失精度最小。

2. Example (例子)

我们通过一个有损压缩的例子来介绍PCA。假设我们有 m m 个数据点 {x(1),,x(m)} { x ( 1 ) , ⋯ , x ( m ) } ,其中数据维度为 x(1)Rn x ( 1 ) ∈ R n 。因此,存储这些数据,需要 m×n m × n 个单元。为了节省存储单元,我们考虑有损压缩。有损压缩,意味着我们可以用较少的存储单元储存数据,当然,这会损失些精度。因此我们要尽量的减少精度的损失。

我们将这些数据压缩成低维数据,即每一个 x(i)Rn x ( i ) ∈ R n 都可以找到一个对应的 cRl,(nl) c ∈ R l , ( n ≫ l ) 。这里,我们用映射 f:RnRl f : R n → R l 来表示,即 f(x)=c f ( x ) = c 。对应的解压缩,我们用函数 g:RlRn g : R l → R n 来表示,即 x^=g(f(x)) x ^ = g ( f ( x ) )

为了解压缩尽量简单,我们限制解压缩是经过一个线性变换矩阵 D D 来完成,则解压缩信号表示为 g(c)=Dc g ( c ) = D c 。这里,我们限制矩阵 D D 是列正交矩阵(矩阵中列两两正交)。一般来说,增大 D D 的能量,需要降低 c c 的能量,因此,我们对 D D 进行归一化处理(归一化与未归一化大部分情况的结果是相等的,但也存在一些情况下归一化的情况更好,因此通常我们会对 D D 进行归一化处理)。

我们从矩阵乘法的角度来理解 x=Dc x = D c 。通常,我们理解矩阵乘法从图的左图出发,但一般不会考虑右图的理解方式。这里,我们从右图的理解方式出发。由于 D D 是列正交的,因此 {di}i[l] { d i } i ∈ [ l ] 张成了一个 l l 空间,而 {di}i[l] { d i } i ∈ [ l ] 则是这个 Rl R l 空间的一组完备正交基 x x 在基 di d i 上的投影即为 ci c i 。我们用 {di}i[l] { d i } i ∈ [ l ] 线性表出 x x

x=i[l]cidi(3) (3) x = ∑ i ∈ [ l ] c i d i

深度学习笔记之主成分分析_第1张图片
为了使得解压之后的数据损失尽可能少的精度,我们需要通过使得如下损失函数(也称,代价函数 cost function)最小来得到压缩数据的具体表达式
R=xDc2(4) (4) R = ‖ x − D c ‖ 2

损失函数是关于 c c 的线性变换 (xDc) ( x − D c ) 的范数,因此是convex的(所有的范数均是convex function)。

通过导数工具,有

Rc=c(xTx2xTDc+cTDTDc)=(a)c(xTx2xTDc+cTc)=2DTx2c(5)(6)(7) (5) ∂ R ∂ c = ∂ ∂ c ( x T x − 2 x T D c + c T D T D c ) (6) = ( a ) ∂ ∂ c ( x T x − 2 x T D c + c T c ) (7) = − 2 D T x − 2 c

其中 (a) ( a ) 成立,由于 D D 是列正交矩阵,因此 DTD=Il D T D = I l 。通过令偏导为0,我们找到函数的 驻点 c=DTx : c ∗ = D T x

给定解压矩阵 D D ,我们从损失精度最小的角度出发,得到了压缩数据的表达式 c=DTx c = D T x ,对应解压缩数据为 r(x)=DDTx r ( x ) = D D T x 为此,我们仍需要确定 D D 的形式。这里,我们仍然从损失精度最小的角度出发

D=argminDxDDTxs.t.DTD=Il(8) (8) D ∗ = arg min D ‖ x − D D T x ‖ s . t . D T D = I l

显然,我们要从从这个方程中解出 D D 来是不可能的。

但是,我们是有 n n x(i) x ( i ) 数据的,定义 XRm×n X ∈ R m × n ,其中 Xi:=(x(i))T X i : = ( x ( i ) ) T

D=argminDXTDDTXTF=argminDXXDDTF=argminDTr[(XXDDT)T(XXDDT)]=argminDTr(XTX)Tr(DTXTXD)=argmaxDTr(DTXTXD)(9)(10)(11)(12)(13) (9) D ∗ = arg min D ‖ X T − D D T X T ‖ F (10) = arg min D ‖ X − X D D T ‖ F (11) = arg min D Tr [ ( X − X D D T ) T ( X − X D D T ) ] (12) = arg min D Tr ( X T X ) − Tr ( D T X T X D ) (13) = arg max D Tr ( D T X T X D )

这里 D D 是列正交矩阵,即 DTD=Il D T D = I l 。为使 Tr(DTXTXD) Tr ( D T X T X D ) 最大,因此选择 XTX X T X 最大的 l l 个特征矢量作为 D D 的列向量。对应地,

XTX[ξ1,,ξl]=[ξ1,,ξl]Diag(λ1,,λl)(14) (14) X T X [ ξ 1 , ⋯ , ξ l ] = [ ξ 1 , ⋯ , ξ l ] Diag ( λ 1 , ⋯ , λ l )

其中 ξi ξ i 表示最大的 l l 个特征值 λi[l] λ i ∈ [ l ] 对应的特征矢量, [l] [ l ] 表示最大的 l l 个特征值组成的结合。因此 maxTr(DTXTXD)=liλi max Tr ( D T X T X D ) = ∑ i l λ i

Remarks:

  • 基于上述表述,我们知道矩阵 D D 选择数据矩阵 XTX X T X 的最大 l l 个特征值 λi[l] λ i ∈ [ l ] 所对应的特征向量 ξi ξ i 作为其列,最大程度的保留了矩阵 XTX X T X 的能量。
  • 这里所得到 D=[ξ1,,ξl] D = [ ξ 1 , ⋯ , ξ l ] 并不是驻点,如果 XTDDTXTF ‖ X T − D D T X T ‖ F D D 求偏导,并令偏导为零,得到 D=0 D = 0 ,显然这并不是最后的计算结果。

你可能感兴趣的:(随笔)