7.4.7 2DPCA

7.4.7 2DPCA

回顾PCA方法本质是求向量 α \mathbf{\alpha} α 使所有样本与之内积最大,样本只能是向量数据。

u 1 = a r g m a x α ∑ a i ∈ A ( α T a i ) 2 \mathbf{u}_1 = argmax_{\mathbf{\alpha}} \sum_{\mathbf{a}_{i} \in A} (\mathbf{\alpha}^T\mathbf{a}_i)^2 u1=argmaxαaiA(αTai)2

如果样本是图像,则样本都是矩阵数据,怎么推广PCA使之能适用矩阵数据呢?一种最简单的方法是把矩阵拉伸为向量,然后采用PCA。拉伸方法很简单,把矩阵所有列向量拼接为一个向量即可。例如矩阵有两个列向量: ( 1 , 2 ) , ( 3 , 4 ) (1,2),(3,4) (1,2),(3,4), 则拉伸为一个向量是 ( 1 , 2 , 3 , 4 ) (1,2,3,4) (1,2,3,4) 。这个方法很直观,但缺点是当矩阵尺寸很大时,拉伸向量维度很高,进行特征值分解或奇异值分解都比较困难,难以获得精确的主成分。那能不能直接从矩阵计算呢,显然是可以的。

样本都是向量时,

∑ a i ∈ A ( a i T α ) 2 = ∑ a i ∈ A ( α T a i ) ( a i T α ) = α T [ ∑ a i ∈ A ( a i a i T ) ] α = α T A A T α \sum_{\mathbf{a}_{i} \in A} (\mathbf{a}^T_{i}\mathbf{\alpha})^2 \\ = \sum_{\mathbf{a}_{i} \in A} (\mathbf{\alpha}^T\mathbf{a}_{i})(\mathbf{a}^T_{i}\mathbf{\alpha}) \\ = \mathbf{\alpha}^T [\sum_{\mathbf{a}_{i} \in A} (\mathbf{a}_{i}\mathbf{a}^T_{i})] \mathbf{\alpha}\\ = \mathbf{\alpha}^T AA^T \mathbf{\alpha}\\ aiA(aiTα)2=aiA(αTai)(aiTα)=αT[aiA(aiaiT)]α=αTAATα

显然主成分 α \mathbf{\alpha} α 是矩阵 A A T AA^T AAT 的特征向量,该矩阵为协方差矩阵。

如果样本都是矩阵 A i A_i Ai,上面公式核心 ( a i T α ) 2 (\mathbf{a}^T_{i}\mathbf{\alpha})^2 (aiTα)2 可改为 J i = ∥ A i T α ∥ 2 J_i = \|A^T_{i}\mathbf{\alpha}\|^2 Ji=AiTα2

J = ∑ i J i = ∑ A i ∈ A ∥ A i T α ∥ 2 = ∑ A i ∈ A ( A i T α ) T ( A i T α ) = ∑ A i ∈ A α T A i A i T α = α T [ ∑ A i ∈ A ( A i A i T ) ] α J = \sum_i J_i = \sum_{A_{i} \in A} \|A^T_{i}\mathbf{\alpha}\|^2 \\ = \sum_{A_{i} \in A} (A^T_{i}\mathbf{\alpha})^T(A^T_{i}\mathbf{\alpha})\\ = \sum_{A_{i} \in A} \mathbf{\alpha}^TA_{i}A^T_{i}\mathbf{\alpha}\\ = \mathbf{\alpha}^T [\sum_{A_{i} \in A} (A_{i}A^T_{i})] \mathbf{\alpha} J=iJi=AiAAiTα2=AiA(AiTα)T(AiTα)=AiAαTAiAiTα=αT[AiA(AiAiT)]α

S = ∑ A i ∈ A ( A i A i T ) S = \sum_{A_{i} \in A} (A_{i}A^T_{i}) S=AiA(AiAiT) 为对称矩阵,可称为广义协方差矩阵。

主成分 α \mathbf{\alpha} α 是矩阵 S S S 的特征向量,则前 k k k 个主成分即是使 J J J 最大的 k k k 个投影方向。

我们来分析主成分的几何意义
J i = ∥ A i T α ∥ 2 = ∑ i ( a i T α ) 2 J_i = \|A^T_{i}\mathbf{\alpha}\|^2 \\ = \sum_i (\mathbf{a}^T_{i}\mathbf{\alpha})^2 Ji=AiTα2=i(aiTα)2
J i J_i Ji 是矩阵 A i A_{i} Ai 所有列向量投影平方和,则 J J J 是所有矩阵 A i A_{i} Ai 的所有列向量投影平方和,即把矩阵看作列向量组,求所有列向量的投影,投影平方和最大的方向即为主方向,其本质和PCA一样!都是求向量组投影平方和最大值。

令矩阵 S S S k k k 个主成分和特征值分别为 u 1 , ⋯   , u k \mathbf{u}_{1},\cdots,\mathbf{u}_{k} u1,,uk σ 1 , ⋯   , σ k \sigma_1,\cdots,\sigma_k σ1,,σk
v j = A i T u j \mathbf{v}_j = A^T_{i}\mathbf{u}_j vjAiTuj 表示样本矩阵 A i A_{i} Ai 每个列向量在主方向 u j \mathbf{u}_j uj 坐标值构成的向量,称为主成分分量。令矩阵 U = [ u 1 , ⋯   , u k ] U = [\mathbf{u}_{1},\cdots,\mathbf{u}_{k}] U=[u1,,uk],则 V = [ A i T u 1 , ⋯   , A i T u k ] = A i T U V = [A^T_{i}\mathbf{u}_1,\cdots,A^T_{i}\mathbf{u}_k] = A^T_{i}U V=[AiTu1,,AiTuk]=AiTU 为样本 A i A_{i} Ai k k k 个主成分分量,即样本矩阵 2DPCA 降维后的矩阵表示。利用样本矩阵 2DPCA 降维后的矩阵表示重构原样本矩阵为
A ˉ i T = V U T = ∑ j v j u j T \bar A^T_{i} = VU^T = \sum_j \mathbf{v}_j \mathbf{u}^T_j AˉiT=VUT=jvjujT

以上内容就是 2DPCA 的核心内容。实际计算过程中,计算广义协方差矩阵 S = ∑ A i ∈ A ( A i A i T ) S = \sum_{A_{i} \in A} (A_{i}A^T_{i}) S=AiA(AiAiT) 的特征值分解时,需先对其进行中心化。由于 2DPCA 本质是求所有列向量的投影平方和,故仅需对样本矩阵中列向量进行中心化。所以提出一种新的中心化方法,这种方法不同于提出 2DPCA 原始论文的方法。令所有样本矩阵的所有列向量的平均向量为
a ˉ = 1 m n ∑ i , j a j i 其 中 a j i 是 样 本 矩 阵 A i 的 第 j 个 列 向 量 , n 是 样 本 数 量 , m 是 样 本 矩 阵 的 列 数 \bar{\mathbf{a}} = \frac{1}{mn} \sum_{i,j} \mathbf{a}^i_j \\ 其中 \mathbf{a}^i_j 是样本矩阵 A_i 的第 j 个列向量,n 是样本数量,m 是样本矩阵的列数 aˉ=mn1i,jajiajiAijnm

故中心化为 a j i ˉ = a j i − a ˉ \bar{\mathbf{a}^i_j}= \mathbf{a}^i_j - \bar{\mathbf{a}} ajiˉ=ajiaˉ

原始论文的中心化方法为,求样本矩阵的平均矩阵 A ˉ = 1 n ∑ i A i \bar A = \frac{1}{n} \sum_{i} A_i Aˉ=n1iAi ,样本中心化为 A ˉ i = A i − A ˉ \bar A_i = A_i - \bar A Aˉi=AiAˉ ,即对样本矩阵的每个列向量独立进行中心化。

以上是对列向量计算投影平方和,同理可对行向量计算投影平方和,原理完全一致,即令 J i = ∥ A i α ∥ 2 J_i = \|A_{i}\mathbf{\alpha}\|^2 Ji=Aiα2

J = ∑ i J i = α T [ ∑ A i ∈ A ( A i T A i ) ] α J = \sum_i J_i = \mathbf{\alpha}^T [\sum_{A_{i} \in A} (A^T_{i}A_{i})] \mathbf{\alpha} J=iJi=αT[AiA(AiTAi)]α

S = ∑ A i ∈ A ( A i T A i ) S = \sum_{A_{i} \in A} (A^T_{i}A_{i}) S=AiA(AiTAi) 为对称矩阵,可称为广义协方差矩阵。

主成分 α \mathbf{\alpha} α 是矩阵 S S S 的特征向量,则前 k k k 个主成分即是使 J J J 最大的 k k k 个投影方向 u i \mathbf{u}_{i} ui。令矩阵 U = [ u 1 , ⋯   , u k ] U = [\mathbf{u}_{1},\cdots,\mathbf{u}_{k}] U=[u1,,uk],则 V = [ A i u 1 , ⋯   , A i u k ] = A i U V = [A_{i}\mathbf{u}_1,\cdots,A_{i}\mathbf{u}_k] = A_{i}U V=[Aiu1,,Aiuk]=AiU 为样本 A i A_{i} Ai k k k 个主成分分量,即样本矩阵 2DPCA 降维后的矩阵表示。利用样本矩阵 2DPCA 降维后的矩阵表示重构原样本矩阵为
A ˉ i = V U T = ∑ j v j u j T \bar A_{i} = VU^T = \sum_j \mathbf{v}_j \mathbf{u}^T_j Aˉi=VUT=jvjujT

令所有样本矩阵的所有行向量的平均向量为
a ˉ = 1 m n ∑ i , j a j c i 其 中 a j c i 是 样 本 矩 阵 A i 的 第 j 个 行 向 量 , n 是 样 本 数 量 , m 是 样 本 矩 阵 的 行 数 \bar {\mathbf{a}} = \frac{1}{mn} \sum_{i,j} \mathbf{a}^{ci}_j \\ 其中 \mathbf{a}^{ci}_j 是样本矩阵 A_i 的第 j 个行向量,n 是样本数量,m 是样本矩阵的行数 aˉ=mn1i,jajciajciAijnm

故中心化为 a j c i ˉ = a j c i − a ˉ \bar {\mathbf{a}^{ci}_j} = \mathbf{a}^{ci}_j - \bar {\mathbf{a}} ajciˉ=ajciaˉ

实际应用时,可先对样本矩阵进行列方向的 2DPCA 得到样本矩阵 V V V ,然后对 V V V 进行行方向的 2DPCA 得到样本矩阵 W W W

上面介绍的所有PCA方法有两点需要特别强调,第一,为什么需要先对数据进行中心化?中心化主要有两个目的,第一,使矩阵 A A T AA^T AAT 是协方差矩阵,奇异值平方为属性方差,物理意义很明显。第二,就不是那么明显了,PCA主要目的是降维,利用少数几个主成分表示样本所有属性,所以前提是样本点云位于样本空间中的低维子空间,如果点云覆盖了整个样本空间,则不可降维,PCA就失去意义。点云形状本质上是由样本属性决定的,不可能通过中心化改变,中心化是样本减去均值向量,是平移操作即把空间原点移到点云中心,平移操作看似平凡,但确实能对点云降维。举个例子更能说明问题,假设三维空间中点云成一条直线,直线是一维的,所以其应该位于一维子空间中,但如果直线不通过空间原点,则该直线其实是位于二维子空间!只需要简单的平移操作,使空间原点位于直线上,则直线就变为一维!这就是平移的力量!

再强调下旋转操作的力量。如果同学对刚体运动比较了解,知道不管刚体运动如何复杂,都可以简化为平移和旋转复合运动。对数据点云的操作同样如此,可以采用平移和旋转。平移的力量已经展示了。旋转的力量就是PCA操作,PCA本质是就是旋转操作,根据公式 Y T = U T A Y^T = U^TA YT=UTA ,矩阵 U U U 是正交矩阵,就是对点云矩阵 A A A 的旋转操作。所以可见,PCA加上中心化预处理,本质上就是对点云进行了刚体运动:平移和旋转。注意没有进行形变操作如尺度变换,加上尺度变换就是白化,后面详细介绍。

平移操作有个比较麻烦的地方,不能用矩阵变换表示平移!根据奇异值分解,矩阵只能表示旋转和尺度变换操作,没有平移。但由于平移操作在物理学中十分重要,矩阵不能表示平移则会极大限制矩阵在物理学中的应用,为了使矩阵能表示平移,在数学上有个技巧,采用『齐次坐标』,增加一个维度就可以是矩阵『表示』平移操作。

第二点需要强调的是,对点云 A A A 进行PCA变换,样本点的顺序会对结果造成影响吗?矩阵 A A A 列向量是样本点向量,样本点顺序不同则矩阵 A A A 不同,所以表面上看可能会影响PCA结果。但前面指出,PCA本质上就是对点云进行了旋转操作,旋转由方差最大方向决定。样本方差与样本顺序无关,所以PCA结果不会受到样本顺序的影响。实际上,PCA核心是计算协方差矩阵的特征值,协方差为 A A T = ∑ a i ∈ A a i a i T AA^T=\sum_{\mathbf{a}_{i} \in A} \mathbf{a}_{i}\mathbf{a}^T_{i} AAT=aiAaiaiT ,等于所有样本外积之和,与样本顺序无关,所以PCA结果不会受到样本顺序的影响。这个结论可以推广,对数据矩阵 A A A 的任何变换,一般来说,都与样本顺序无关,如果真的有关,则肯定哪里有问题。数据矩阵与样本顺序无关这个性质,是矩阵表示样本的一个简洁之处,是优点。但同时也是缺点,样本顺序一般会包含样本很多信息,比如如果样本是时间序列,即按时间顺序采样获得的样本,时间关系就包含在样本顺序里面。现在数据矩阵与顺序无关即数据矩阵不能表示时间关系,这样就会丢失很多信息,数据矩阵表示能力受限,这是矩阵论的一个致命缺陷,难以克服。例如图像用矩阵表示,表面上看,矩阵列向量是按图像的列对应排序,表示了图像顺序关系,但本质并没有,因为对图像矩阵的操作本质上是对列操作的集合,例如上面介绍的2DPCA,表面上是矩阵操作,本质是列操作。所以数据矩阵只能看作是样本的集合,集合是不考虑元素的顺序。

矩阵看成数据矩阵时,是列向量的集合;看成线性变换时,是个不可分割的整体,不能看成是列向量集合。矩阵乘法充分展示了这点 A B = A [ b 1 , ⋯   , b n ] = [ A b 1 , ⋯   , A b n ] AB=A[\mathbf{b}_1,\cdots,\mathbf{b}_n]=[A\mathbf{b}_1,\cdots,A\mathbf{b}_n] AB=A[b1,,bn]=[Ab1,,Abn] ,矩阵 A A A 就是变换,是整体;矩阵 B B B 是列向量集合。

你可能感兴趣的:(#,线性代数)