7.4.7 2DPCA
7.4.7 2DPCA
回顧PCA方法本質(zhì)是求向量 α\mathbf{\alpha}α 使所有樣本與之內(nèi)積最大,樣本只能是向量數(shù)據(jù)。
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
如果樣本是圖像,則樣本都是矩陣數(shù)據(jù),怎么推廣PCA使之能適用矩陣數(shù)據(jù)呢?一種最簡(jiǎn)單的方法是把矩陣?yán)鞛橄蛄?#xff0c;然后采用PCA。拉伸方法很簡(jiǎn)單,把矩陣所有列向量拼接為一個(gè)向量即可。例如矩陣有兩個(gè)列向量:(1,2),(3,4)(1,2),(3,4)(1,2),(3,4), 則拉伸為一個(gè)向量是 (1,2,3,4)(1,2,3,4)(1,2,3,4) 。這個(gè)方法很直觀,但缺點(diǎn)是當(dāng)矩陣尺寸很大時(shí),拉伸向量維度很高,進(jìn)行特征值分解或奇異值分解都比較困難,難以獲得精確的主成分。那能不能直接從矩陣計(jì)算呢,顯然是可以的。
樣本都是向量時(shí),
∑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 的特征向量,該矩陣為協(xié)方差矩陣。
如果樣本都是矩陣 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?) 為對(duì)稱(chēng)矩陣,可稱(chēng)為廣義協(xié)方差矩陣。
主成分 α\mathbf{\alpha}α 是矩陣 SSS 的特征向量,則前 kkk 個(gè)主成分即是使 JJJ 最大的 kkk 個(gè)投影方向。
我們來(lái)分析主成分的幾何意義
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? 的所有列向量投影平方和,即把矩陣看作列向量組,求所有列向量的投影,投影平方和最大的方向即為主方向,其本質(zhì)和PCA一樣!都是求向量組投影平方和最大值。
令矩陣 SSS 前 kkk 個(gè)主成分和特征值分別為 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? 每個(gè)列向量在主方向 uj\mathbf{u}_juj? 坐標(biāo)值構(gòu)成的向量,稱(chēng)為主成分分量。令矩陣 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 個(gè)主成分分量,即樣本矩陣 2DPCA 降維后的矩陣表示。利用樣本矩陣 2DPCA 降維后的矩陣表示重構(gòu)原樣本矩陣為
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?
以上內(nèi)容就是 2DPCA 的核心內(nèi)容。實(shí)際計(jì)算過(guò)程中,計(jì)算廣義協(xié)方差矩陣 S=∑Ai∈A(AiAiT)S = \sum_{A_{i} \in A} (A_{i}A^T_{i})S=∑Ai?∈A?(Ai?AiT?) 的特征值分解時(shí),需先對(duì)其進(jìn)行中心化。由于 2DPCA 本質(zhì)是求所有列向量的投影平方和,故僅需對(duì)樣本矩陣中列向量進(jìn)行中心化。所以提出一種新的中心化方法,這種方法不同于提出 2DPCA 原始論文的方法。令所有樣本矩陣的所有列向量的平均向量為
aˉ=1mn∑i,jaji其中aji是樣本矩陣Ai的第j個(gè)列向量,n是樣本數(shù)量,m是樣本矩陣的列數(shù)\bar{\mathbf{a}} = \frac{1}{mn} \sum_{i,j} \mathbf{a}^i_j \\ 其中 \mathbf{a}^i_j 是樣本矩陣 A_i 的第 j 個(gè)列向量,n 是樣本數(shù)量,m 是樣本矩陣的列數(shù) aˉ=mn1?i,j∑?aji?其中aji?是樣本矩陣Ai?的第j個(gè)列向量,n是樣本數(shù)量,m是樣本矩陣的列數(shù)
故中心化為 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ˉ ,即對(duì)樣本矩陣的每個(gè)列向量獨(dú)立進(jìn)行中心化。
以上是對(duì)列向量計(jì)算投影平方和,同理可對(duì)行向量計(jì)算投影平方和,原理完全一致,即令 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?) 為對(duì)稱(chēng)矩陣,可稱(chēng)為廣義協(xié)方差矩陣。
主成分 α\mathbf{\alpha}α 是矩陣 SSS 的特征向量,則前 kkk 個(gè)主成分即是使 JJJ 最大的 kkk 個(gè)投影方向 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 個(gè)主成分分量,即樣本矩陣 2DPCA 降維后的矩陣表示。利用樣本矩陣 2DPCA 降維后的矩陣表示重構(gòu)原樣本矩陣為
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個(gè)行向量,n是樣本數(shù)量,m是樣本矩陣的行數(shù)\bar {\mathbf{a}} = \frac{1}{mn} \sum_{i,j} \mathbf{a}^{ci}_j \\ 其中 \mathbf{a}^{ci}_j 是樣本矩陣 A_i 的第 j 個(gè)行向量,n 是樣本數(shù)量,m 是樣本矩陣的行數(shù) aˉ=mn1?i,j∑?ajci?其中ajci?是樣本矩陣Ai?的第j個(gè)行向量,n是樣本數(shù)量,m是樣本矩陣的行數(shù)
故中心化為 ajciˉ=ajci?aˉ\bar {\mathbf{a}^{ci}_j} = \mathbf{a}^{ci}_j - \bar {\mathbf{a}}ajci?ˉ?=ajci??aˉ 。
實(shí)際應(yīng)用時(shí),可先對(duì)樣本矩陣進(jìn)行列方向的 2DPCA 得到樣本矩陣 VVV ,然后對(duì) VVV 進(jìn)行行方向的 2DPCA 得到樣本矩陣 WWW 。
上面介紹的所有PCA方法有兩點(diǎn)需要特別強(qiáng)調(diào),第一,為什么需要先對(duì)數(shù)據(jù)進(jìn)行中心化?中心化主要有兩個(gè)目的,第一,使矩陣 AATAA^TAAT 是協(xié)方差矩陣,奇異值平方為屬性方差,物理意義很明顯。第二,就不是那么明顯了,PCA主要目的是降維,利用少數(shù)幾個(gè)主成分表示樣本所有屬性,所以前提是樣本點(diǎn)云位于樣本空間中的低維子空間,如果點(diǎn)云覆蓋了整個(gè)樣本空間,則不可降維,PCA就失去意義。點(diǎn)云形狀本質(zhì)上是由樣本屬性決定的,不可能通過(guò)中心化改變,中心化是樣本減去均值向量,是平移操作即把空間原點(diǎn)移到點(diǎn)云中心,平移操作看似平凡,但確實(shí)能對(duì)點(diǎn)云降維。舉個(gè)例子更能說(shuō)明問(wèn)題,假設(shè)三維空間中點(diǎn)云成一條直線,直線是一維的,所以其應(yīng)該位于一維子空間中,但如果直線不通過(guò)空間原點(diǎn),則該直線其實(shí)是位于二維子空間!只需要簡(jiǎn)單的平移操作,使空間原點(diǎn)位于直線上,則直線就變?yōu)橐痪S!這就是平移的力量!
再?gòu)?qiáng)調(diào)下旋轉(zhuǎn)操作的力量。如果同學(xué)對(duì)剛體運(yùn)動(dòng)比較了解,知道不管剛體運(yùn)動(dòng)如何復(fù)雜,都可以簡(jiǎn)化為平移和旋轉(zhuǎn)復(fù)合運(yùn)動(dòng)。對(duì)數(shù)據(jù)點(diǎn)云的操作同樣如此,可以采用平移和旋轉(zhuǎn)。平移的力量已經(jīng)展示了。旋轉(zhuǎn)的力量就是PCA操作,PCA本質(zhì)是就是旋轉(zhuǎn)操作,根據(jù)公式 YT=UTAY^T = U^TAYT=UTA ,矩陣 UUU 是正交矩陣,就是對(duì)點(diǎn)云矩陣 AAA 的旋轉(zhuǎn)操作。所以可見(jiàn),PCA加上中心化預(yù)處理,本質(zhì)上就是對(duì)點(diǎn)云進(jìn)行了剛體運(yùn)動(dòng):平移和旋轉(zhuǎn)。注意沒(méi)有進(jìn)行形變操作如尺度變換,加上尺度變換就是白化,后面詳細(xì)介紹。
平移操作有個(gè)比較麻煩的地方,不能用矩陣變換表示平移!根據(jù)奇異值分解,矩陣只能表示旋轉(zhuǎn)和尺度變換操作,沒(méi)有平移。但由于平移操作在物理學(xué)中十分重要,矩陣不能表示平移則會(huì)極大限制矩陣在物理學(xué)中的應(yīng)用,為了使矩陣能表示平移,在數(shù)學(xué)上有個(gè)技巧,采用『齊次坐標(biāo)』,增加一個(gè)維度就可以是矩陣『表示』平移操作。
第二點(diǎn)需要強(qiáng)調(diào)的是,對(duì)點(diǎn)云 AAA 進(jìn)行PCA變換,樣本點(diǎn)的順序會(huì)對(duì)結(jié)果造成影響嗎?矩陣 AAA 列向量是樣本點(diǎn)向量,樣本點(diǎn)順序不同則矩陣 AAA 不同,所以表面上看可能會(huì)影響PCA結(jié)果。但前面指出,PCA本質(zhì)上就是對(duì)點(diǎn)云進(jìn)行了旋轉(zhuǎn)操作,旋轉(zhuǎn)由方差最大方向決定。樣本方差與樣本順序無(wú)關(guān),所以PCA結(jié)果不會(huì)受到樣本順序的影響。實(shí)際上,PCA核心是計(jì)算協(xié)方差矩陣的特征值,協(xié)方差為 AAT=∑ai∈AaiaiTAA^T=\sum_{\mathbf{a}_{i} \in A} \mathbf{a}_{i}\mathbf{a}^T_{i}AAT=∑ai?∈A?ai?aiT? ,等于所有樣本外積之和,與樣本順序無(wú)關(guān),所以PCA結(jié)果不會(huì)受到樣本順序的影響。這個(gè)結(jié)論可以推廣,對(duì)數(shù)據(jù)矩陣 AAA 的任何變換,一般來(lái)說(shuō),都與樣本順序無(wú)關(guān),如果真的有關(guān),則肯定哪里有問(wèn)題。數(shù)據(jù)矩陣與樣本順序無(wú)關(guān)這個(gè)性質(zhì),是矩陣表示樣本的一個(gè)簡(jiǎn)潔之處,是優(yōu)點(diǎn)。但同時(shí)也是缺點(diǎn),樣本順序一般會(huì)包含樣本很多信息,比如如果樣本是時(shí)間序列,即按時(shí)間順序采樣獲得的樣本,時(shí)間關(guān)系就包含在樣本順序里面。現(xiàn)在數(shù)據(jù)矩陣與順序無(wú)關(guān)即數(shù)據(jù)矩陣不能表示時(shí)間關(guān)系,這樣就會(huì)丟失很多信息,數(shù)據(jù)矩陣表示能力受限,這是矩陣論的一個(gè)致命缺陷,難以克服。例如圖像用矩陣表示,表面上看,矩陣列向量是按圖像的列對(duì)應(yīng)排序,表示了圖像順序關(guān)系,但本質(zhì)并沒(méi)有,因?yàn)閷?duì)圖像矩陣的操作本質(zhì)上是對(duì)列操作的集合,例如上面介紹的2DPCA,表面上是矩陣操作,本質(zhì)是列操作。所以數(shù)據(jù)矩陣只能看作是樣本的集合,集合是不考慮元素的順序。
矩陣看成數(shù)據(jù)矩陣時(shí),是列向量的集合;看成線性變換時(shí),是個(gè)不可分割的整體,不能看成是列向量集合。矩陣乘法充分展示了這點(diǎn) 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 是列向量集合。
總結(jié)
以上是生活随笔為你收集整理的7.4.7 2DPCA的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 7.4.6 核PCA
- 下一篇: 7.4.8 数据压缩