一.K-L變換
說PCA的話,必須先介紹一下K-L變換了。
K-L變換是Karhunen-Loeve變換的簡稱,是一種特殊的正交變換。它是建立在統計特性基礎上的一種變換,有的文獻也稱其為霍特林(Hotelling)變換,因為他在1933年最先給出將離散信號變換成一串不相關系數的方法。
K-L變換的突出優點是它能去相關性,而且是均方誤差(Mean Square Error,MSE)意義下的最佳變換。下面就簡單的介紹一下K-L變換了。
設,隨機向量X ∈Rn(n階列向量),它的均值向量為mX,則其協方差矩陣可以表示為
Cx= E{(X-mx)*(X-mx)T} (2.1)
Cx是一個n*n階的實對稱陣。
K-L變換定義了一正交變換A ∈Rn*n,將X ∈Rn的向量映射到用Y ∈Rn代表的向量,並且使Y向量中各分量間不相關:
Y = A*(X-mx) (2.2)因為Y的各分量間不相關,則其協方差矩陣Cy為對角陣,即
Cy = diag(λ1,λ2,...,λn)
而矩陣A總是可以找到的,因為對於實對稱陣,總能找到一個正交陣A,使得ACxAT的運算結果為對稱陣。K-L變換中,將A的每一行取為Cx的特征向量,並且將這些特征向量按對應的特征值大小進行降序排序,使最大特征值對應的特征向量在A的第一行,而最小特征值對應的特征向量在A的最后一行。而Cy是Cx對角化后的結果,所以兩個矩陣的特征值是一致的(λ1,λ2,...,λn)。
這樣就可以通過矩陣A實現由隨機向量X到隨機向量Y的K-L變換了,而由
X = ATY +mx (2.3)
就可以實現Y反變換到X。
若選擇的最大k個特征值對應的k個特征向量,組成k×n的轉換矩陣A,則變換后Y降為k維的,則由Y對X的恢復公式如下:X‘ = AKY +mx (2.4)
這時候Cy = diag(λ1,λ2,...,λk),X與X’之間的均方誤差可以由下式表達:
λk+1+.λk+2...+λn (2.5) (沒有公式編輯器啊)
上面我們提到了對於特征值λ是從大到小排序的,那么這時候通過式子2.5可以表明通過選擇k個具有最大特征值的特征向量來降低誤差。因此,從可以將向量X和它的近似X‘之間的均方誤差降至最小這方面來說,K-L變換是最佳變換。
二.PCA,主成分分析
在二十世紀九十年代初,Kirby和Sirovich開始討論利用PCA技術進行人臉圖像的最優表示問題。並且由M.Turk和A.Pentland將此技術用於人臉識別中,並稱為特征臉方法。M.Turk和A.Pentland將m×n的人臉圖像,重新排列為m *n維的列向量。則所有的訓練圖像經此變換后得到一組列向量:{ xi },xi∈Rm*n,其中N代表訓練樣本集中圖像的個數。將圖像看成一隨機列向量,並通過訓練樣本對其均值向量和協方差矩陣進行估計。
均值向量μ通過下式估計:
μ = (1/N)*((x1+x2+...+xN) (3.1)
協方差矩陣ST = E{(xi-u)*(xi-u)T} = X'X'T (3.2)
其中X’ = [x1-μ, x2-μ,...., xN-μ]
則將投影變換矩陣A取為ST的前k個最大特征值對應的特征向量。利用K-L變換式對原圖像進行去相關並降維:
Y = AK*(X-mx) (3.3)
因為ST =X'X'T,而X‘為(m*n)*N矩陣,但是因為X’為N階矩陣,所以ST的秩最大為N-1,這樣只要計算出ST的特征向量就可以計算出K-L變換矩陣了。
但是因為ST是(m*n)*(m*n)階的矩陣,所以計算它的特征向量比較復雜,這里使用了一個技巧:
XTXvi=δivi (3.4)
(XXT)(Xvi)=δi(Xvi) (3.5)
根據式子3.4與3.5可以看出,只要計算出XTX的特征值和特征向量δi與vi,然后就可以計算出XXT的 特征值和特征向量δi與Xvi,而XTX為N*N階的矩陣,計算起來比較容易,除此以外,也可以使用SVD,這里就不提了。
三.PCA流程整理
PCA的整個變換過程整理了一下,如下:
1.將mxn的訓練圖像重新排列為m *n維的列向量。計算均值向量,並利用均值向量將所有樣本中心化。
2.利用中心化后的樣本向量,根據式(3.2)計算其協方差矩陣;對其特征值分解,並將特征向量按其對應的特征值大小進行降序排列。
3.選取第2步所得的k ≤N-1個最大特征值對應的特征向量組成投影矩陣A,將每幅已中心化的訓練圖像(x1-μ, x2-μ,...., xN-μ),向矩陣A投影,得到每幅訓練圖像的降維表示為(y1-μ, y2-μ,...., yN)
4.對測試圖像中心化,並投影到矩陣A,得到測試圖像的降維表示。
5.選擇合適的分類器,對測試圖像進行分類。

