7.4.7 2DPCA
7.4.7 2DPCA
回顧PCA方法本質是求向量 α\mathbf{\alpha}α 使所有樣本與之內積最大,樣本只能是向量數據。
u1=argmaxα∑ai∈A(αTai)2\mathbf{u}_1 = argmax_{\mathbf{\alpha}} \sum_{\mathbf{a}_{i} \in A} (\mathbf{\alpha}^T\mathbf{a}_i)^2 u1?=argmaxα?ai?∈A∑?(α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) 。這個方法很直觀,但缺點是當矩陣尺寸很大時,拉伸向量維度很高,進行特征值分解或奇異值分解都比較困難,難以獲得精確的主成分。那能不能直接從矩陣計算呢,顯然是可以的。
樣本都是向量時,
∑ai∈A(aiTα)2=∑ai∈A(αTai)(aiTα)=αT[∑ai∈A(aiaiT)]α=αTAATα\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}\\ ai?∈A∑?(aiT?α)2=ai?∈A∑?(αTai?)(aiT?α)=αT[ai?∈A∑?(ai?aiT?)]α=αTAATα
顯然主成分 α\mathbf{\alpha}α 是矩陣 AATAA^TAAT 的特征向量,該矩陣為協方差矩陣。
如果樣本都是矩陣 AiA_iAi?,上面公式核心 (aiTα)2(\mathbf{a}^T_{i}\mathbf{\alpha})^2(aiT?α)2 可改為 Ji=∥AiTα∥2J_i = \|A^T_{i}\mathbf{\alpha}\|^2Ji?=∥AiT?α∥2 則
J=∑iJi=∑Ai∈A∥AiTα∥2=∑Ai∈A(AiTα)T(AiTα)=∑Ai∈AαTAiAiTα=αT[∑Ai∈A(AiAiT)]α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=i∑?Ji?=Ai?∈A∑?∥AiT?α∥2=Ai?∈A∑?(AiT?α)T(AiT?α)=Ai?∈A∑?αTAi?AiT?α=αT[Ai?∈A∑?(Ai?AiT?)]α
令 S=∑Ai∈A(AiAiT)S = \sum_{A_{i} \in A} (A_{i}A^T_{i})S=∑Ai?∈A?(Ai?AiT?) 為對稱矩陣,可稱為廣義協方差矩陣。
主成分 α\mathbf{\alpha}α 是矩陣 SSS 的特征向量,則前 kkk 個主成分即是使 JJJ 最大的 kkk 個投影方向。
我們來分析主成分的幾何意義
Ji=∥AiTα∥2=∑i(aiTα)2J_i = \|A^T_{i}\mathbf{\alpha}\|^2 \\ = \sum_i (\mathbf{a}^T_{i}\mathbf{\alpha})^2 Ji?=∥AiT?α∥2=i∑?(aiT?α)2
JiJ_iJi? 是矩陣 AiA_{i}Ai? 所有列向量投影平方和,則 JJJ 是所有矩陣 AiA_{i}Ai? 的所有列向量投影平方和,即把矩陣看作列向量組,求所有列向量的投影,投影平方和最大的方向即為主方向,其本質和PCA一樣!都是求向量組投影平方和最大值。
令矩陣 SSS 前 kkk 個主成分和特征值分別為 u1,?,uk\mathbf{u}_{1},\cdots,\mathbf{u}_{k}u1?,?,uk? 和 σ1,?,σk\sigma_1,\cdots,\sigma_kσ1?,?,σk? 。
則 vj=AiTuj\mathbf{v}_j = A^T_{i}\mathbf{u}_jvj?=AiT?uj? 表示樣本矩陣 AiA_{i}Ai? 每個列向量在主方向 uj\mathbf{u}_juj? 坐標值構成的向量,稱為主成分分量。令矩陣 U=[u1,?,uk]U = [\mathbf{u}_{1},\cdots,\mathbf{u}_{k}]U=[u1?,?,uk?],則 V=[AiTu1,?,AiTuk]=AiTUV = [A^T_{i}\mathbf{u}_1,\cdots,A^T_{i}\mathbf{u}_k] = A^T_{i}UV=[AiT?u1?,?,AiT?uk?]=AiT?U 為樣本 AiA_{i}Ai? 前 kkk 個主成分分量,即樣本矩陣 2DPCA 降維后的矩陣表示。利用樣本矩陣 2DPCA 降維后的矩陣表示重構原樣本矩陣為
AˉiT=VUT=∑jvjujT\bar A^T_{i} = VU^T = \sum_j \mathbf{v}_j \mathbf{u}^T_j AˉiT?=VUT=j∑?vj?ujT?
以上內容就是 2DPCA 的核心內容。實際計算過程中,計算廣義協方差矩陣 S=∑Ai∈A(AiAiT)S = \sum_{A_{i} \in A} (A_{i}A^T_{i})S=∑Ai?∈A?(Ai?AiT?) 的特征值分解時,需先對其進行中心化。由于 2DPCA 本質是求所有列向量的投影平方和,故僅需對樣本矩陣中列向量進行中心化。所以提出一種新的中心化方法,這種方法不同于提出 2DPCA 原始論文的方法。令所有樣本矩陣的所有列向量的平均向量為
aˉ=1mn∑i,jaji其中aji是樣本矩陣Ai的第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ˉ=mn1?i,j∑?aji?其中aji?是樣本矩陣Ai?的第j個列向量,n是樣本數量,m是樣本矩陣的列數
故中心化為 ajiˉ=aji?aˉ\bar{\mathbf{a}^i_j}= \mathbf{a}^i_j - \bar{\mathbf{a}}aji?ˉ?=aji??aˉ 。
原始論文的中心化方法為,求樣本矩陣的平均矩陣 Aˉ=1n∑iAi\bar A = \frac{1}{n} \sum_{i} A_iAˉ=n1?∑i?Ai? ,樣本中心化為 Aˉi=Ai?Aˉ\bar A_i = A_i - \bar AAˉi?=Ai??Aˉ ,即對樣本矩陣的每個列向量獨立進行中心化。
以上是對列向量計算投影平方和,同理可對行向量計算投影平方和,原理完全一致,即令 Ji=∥Aiα∥2J_i = \|A_{i}\mathbf{\alpha}\|^2Ji?=∥Ai?α∥2 則
J=∑iJi=αT[∑Ai∈A(AiTAi)]αJ = \sum_i J_i = \mathbf{\alpha}^T [\sum_{A_{i} \in A} (A^T_{i}A_{i})] \mathbf{\alpha} J=i∑?Ji?=αT[Ai?∈A∑?(AiT?Ai?)]α
令 S=∑Ai∈A(AiTAi)S = \sum_{A_{i} \in A} (A^T_{i}A_{i})S=∑Ai?∈A?(AiT?Ai?) 為對稱矩陣,可稱為廣義協方差矩陣。
主成分 α\mathbf{\alpha}α 是矩陣 SSS 的特征向量,則前 kkk 個主成分即是使 JJJ 最大的 kkk 個投影方向 ui\mathbf{u}_{i}ui?。令矩陣 U=[u1,?,uk]U = [\mathbf{u}_{1},\cdots,\mathbf{u}_{k}]U=[u1?,?,uk?],則 V=[Aiu1,?,Aiuk]=AiUV = [A_{i}\mathbf{u}_1,\cdots,A_{i}\mathbf{u}_k] = A_{i}UV=[Ai?u1?,?,Ai?uk?]=Ai?U 為樣本 AiA_{i}Ai? 前 kkk 個主成分分量,即樣本矩陣 2DPCA 降維后的矩陣表示。利用樣本矩陣 2DPCA 降維后的矩陣表示重構原樣本矩陣為
Aˉi=VUT=∑jvjujT\bar A_{i} = VU^T = \sum_j \mathbf{v}_j \mathbf{u}^T_j Aˉi?=VUT=j∑?vj?ujT?
令所有樣本矩陣的所有行向量的平均向量為
aˉ=1mn∑i,jajci其中ajci是樣本矩陣Ai的第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ˉ=mn1?i,j∑?ajci?其中ajci?是樣本矩陣Ai?的第j個行向量,n是樣本數量,m是樣本矩陣的行數
故中心化為 ajciˉ=ajci?aˉ\bar {\mathbf{a}^{ci}_j} = \mathbf{a}^{ci}_j - \bar {\mathbf{a}}ajci?ˉ?=ajci??aˉ 。
實際應用時,可先對樣本矩陣進行列方向的 2DPCA 得到樣本矩陣 VVV ,然后對 VVV 進行行方向的 2DPCA 得到樣本矩陣 WWW 。
上面介紹的所有PCA方法有兩點需要特別強調,第一,為什么需要先對數據進行中心化?中心化主要有兩個目的,第一,使矩陣 AATAA^TAAT 是協方差矩陣,奇異值平方為屬性方差,物理意義很明顯。第二,就不是那么明顯了,PCA主要目的是降維,利用少數幾個主成分表示樣本所有屬性,所以前提是樣本點云位于樣本空間中的低維子空間,如果點云覆蓋了整個樣本空間,則不可降維,PCA就失去意義。點云形狀本質上是由樣本屬性決定的,不可能通過中心化改變,中心化是樣本減去均值向量,是平移操作即把空間原點移到點云中心,平移操作看似平凡,但確實能對點云降維。舉個例子更能說明問題,假設三維空間中點云成一條直線,直線是一維的,所以其應該位于一維子空間中,但如果直線不通過空間原點,則該直線其實是位于二維子空間!只需要簡單的平移操作,使空間原點位于直線上,則直線就變為一維!這就是平移的力量!
再強調下旋轉操作的力量。如果同學對剛體運動比較了解,知道不管剛體運動如何復雜,都可以簡化為平移和旋轉復合運動。對數據點云的操作同樣如此,可以采用平移和旋轉。平移的力量已經展示了。旋轉的力量就是PCA操作,PCA本質是就是旋轉操作,根據公式 YT=UTAY^T = U^TAYT=UTA ,矩陣 UUU 是正交矩陣,就是對點云矩陣 AAA 的旋轉操作。所以可見,PCA加上中心化預處理,本質上就是對點云進行了剛體運動:平移和旋轉。注意沒有進行形變操作如尺度變換,加上尺度變換就是白化,后面詳細介紹。
平移操作有個比較麻煩的地方,不能用矩陣變換表示平移!根據奇異值分解,矩陣只能表示旋轉和尺度變換操作,沒有平移。但由于平移操作在物理學中十分重要,矩陣不能表示平移則會極大限制矩陣在物理學中的應用,為了使矩陣能表示平移,在數學上有個技巧,采用『齊次坐標』,增加一個維度就可以是矩陣『表示』平移操作。
第二點需要強調的是,對點云 AAA 進行PCA變換,樣本點的順序會對結果造成影響嗎?矩陣 AAA 列向量是樣本點向量,樣本點順序不同則矩陣 AAA 不同,所以表面上看可能會影響PCA結果。但前面指出,PCA本質上就是對點云進行了旋轉操作,旋轉由方差最大方向決定。樣本方差與樣本順序無關,所以PCA結果不會受到樣本順序的影響。實際上,PCA核心是計算協方差矩陣的特征值,協方差為 AAT=∑ai∈AaiaiTAA^T=\sum_{\mathbf{a}_{i} \in A} \mathbf{a}_{i}\mathbf{a}^T_{i}AAT=∑ai?∈A?ai?aiT? ,等于所有樣本外積之和,與樣本順序無關,所以PCA結果不會受到樣本順序的影響。這個結論可以推廣,對數據矩陣 AAA 的任何變換,一般來說,都與樣本順序無關,如果真的有關,則肯定哪里有問題。數據矩陣與樣本順序無關這個性質,是矩陣表示樣本的一個簡潔之處,是優點。但同時也是缺點,樣本順序一般會包含樣本很多信息,比如如果樣本是時間序列,即按時間順序采樣獲得的樣本,時間關系就包含在樣本順序里面。現在數據矩陣與順序無關即數據矩陣不能表示時間關系,這樣就會丟失很多信息,數據矩陣表示能力受限,這是矩陣論的一個致命缺陷,難以克服。例如圖像用矩陣表示,表面上看,矩陣列向量是按圖像的列對應排序,表示了圖像順序關系,但本質并沒有,因為對圖像矩陣的操作本質上是對列操作的集合,例如上面介紹的2DPCA,表面上是矩陣操作,本質是列操作。所以數據矩陣只能看作是樣本的集合,集合是不考慮元素的順序。
矩陣看成數據矩陣時,是列向量的集合;看成線性變換時,是個不可分割的整體,不能看成是列向量集合。矩陣乘法充分展示了這點 AB=A[b1,?,bn]=[Ab1,?,Abn]AB=A[\mathbf{b}_1,\cdots,\mathbf{b}_n]=[A\mathbf{b}_1,\cdots,A\mathbf{b}_n]AB=A[b1?,?,bn?]=[Ab1?,?,Abn?] ,矩陣 AAA 就是變換,是整體;矩陣 BBB 是列向量集合。
總結
以上是生活随笔為你收集整理的7.4.7 2DPCA的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 7.4.6 核PCA
- 下一篇: 7.4.8 数据压缩