米吉提·阿不里米提,吾米提·尤努斯,艾斯卡爾·艾木都拉
(新疆大學信息科學與工程學院,烏魯木齊 830046)
PCA(Principle Component Analysis)是一個有效、應用廣泛的信號轉換方法。因為簡單、無需多余的附加信息就能從復雜數(shù)據(jù)中抽取最重要的信息。PCA為降低維度、解開隱藏信息提供了捷徑。較少數(shù)據(jù)冗余度,轉換結果比轉換前減少至少一個成分。能量集中在前部分。轉換結果是個不相關的正交基,即是個正交線性變換。
PCA變換,在不同的應用場合有不同的名字,如Hotelling變換、KL變換POD變換、SVD變換等[1]。它是最簡單的特征向量為基礎的分析方法,他是通過方差分析數(shù)據(jù)的方法。由于能量集中在前部分,通過主要部分就可以代表整個多維數(shù)據(jù),并達到很好的降維目的。但是,PCA和多個抽象概念領域有密切關系,因此需要簡單案例來解釋才能達到最佳教學效果[2]。
雖然有很多這方面的資料[3-4],但是要么是過于抽象、難以理解并實現(xiàn),要么就是概念模糊,所以本文以通俗易懂的方式講解PCA變換。
我們的目的是找到一種變換Z=XW使得ZZT=I,最終使變換后的數(shù)據(jù)是個對角矩陣,這樣變換后相關性就會消除。提取特征向量最好的辦法是找出一個對稱矩陣。Covariance協(xié)方差是很好的對稱矩陣,它是正定矩陣,所以有正交特征向量,及實數(shù)特征值。
設X_由n個樣本構成,每個樣本的維數(shù)是p,則X_是n行p列,n*p,矩陣。設轉換矩陣W是p*p方陣,X_歸一化后的PCA變換是Z=XW。轉換前及轉換后的數(shù)據(jù)方差為:
covZ,covX都是p*p方陣。covX是對稱矩陣,covZ是對角矩陣,即消除了 covX的互相關性。特別需要說明的是,方差的計算方法covX=XTX需要先對樣本X_進行歸一化后才是正確的。歸一化是指,從X_的每列減去該列的平均值。
即:
因為,協(xié)方差矩陣是個對稱矩陣,它的特征向量之間是互相正交的[2]。這里需要些線性代數(shù)知識,尤其是特征向量(eigenvector)分解方法。簡單特征向量求解方法如下:
A=cov則Avi=λivi其中λi是特征值,vi是對應的特征向量
VTA=VTLI=AV=LIV,其中,L是由特征值構成的一行[…λi…]
求解方法是:AV=LIV→det(A-LI=)0
V對應的特征向量集,每列一個向量vi
I是單位對角矩陣;V是正交集,對每個向量進行標準化,就變成了標準正交集(orthonormal),我們直接取W=V。標準正交矩陣有性質(zhì)W-1=WT。
對于對稱矩陣 covXW=WTcovX=LW
WTcovXW=LWW-1→WTcovXW=LI=diag(λi)
簡單PCA變換步驟是:
①對X_的標準化。
②covX特征向量的求解,并由大到小排序,排序依據(jù)是對應的特征值幅度的大小。
③轉換矩陣W的構造。
④計算Z=XW。
假設有三個樣本數(shù)據(jù)X_,對每列歸一化變成X,然后計算 covX。
要計算特征值和特征向量,可以用行列式方法
大家可以用Python或MATLAB獲得結果。也可以根據(jù)行列式的算法構成一個多項式函數(shù),然后求解。
特 征 值L=[λ1λ2λ3λ4]=[9.8630.32400.003]對應的特征向量是:
我們將特征值根據(jù)幅度從大到小排列L=[λ1λ2λ4λ3]=[9.8630.3240.0030],對應的特征向量也要換位置。
然后計算PCA變換Z=XW
我們可以看到能量集中在前2列,我們將后2列設置成0,然后進行反變換。
我們可以看到X的值比原始值變化很小。因此,通過小小的損失,將原來的樣本的特征從4個減少到2個,有效消除了數(shù)據(jù)冗余。
本文我們用簡單概念講解及實例來詳細介紹了PCA轉換的方法和步驟。雖然相關資料很多,但大部分資料要么概念形過于抽象,要么實例模糊。我門盡量用最簡單的概念和典型的例子將概念和實踐聯(lián)系起來,為學生提供了教學案例。本文可能有不足之處,希望大家給予批評指正。