1. 程式人生 > >主元分析(PCA)理論分析及應用

主元分析(PCA)理論分析及應用

(主要基於外文教程翻譯)

什麼是PCA?

PCAPrincipal component analysis的縮寫,中文翻譯為主元分析。它是一種對資料進行分析的技術,最重要的應用是對原有資料進行簡化。正如它的名字:主元分析,這種方法可以有效的找出資料中最“主要”的元素和結構,去除噪音和冗餘,將原有的複雜資料降維,揭示隱藏在複雜資料背後的簡單結構。它的優點是簡單,而且無引數限制,可以方便的應用與各個場合。因此應用極其廣泛,從神經科學到計算機圖形學都有它的用武之地。被譽為應用線形代數價值的結果之一。

在以下的章節中,不僅有對PCA的比較直觀的解釋,同時也配有較為深入的分析。首先將從一個簡單的例子開始說明

PCA應用的場合以及想法的由來,進行一個比較直觀的解釋;然後加入數學的嚴格推導,引入線形代數,進行問題的求解。隨後將揭示PCASVD(Singular Value Decomposition)之間的聯絡以及如何將之應用於真實世界。最後將分析PCA理論模型的假設條件以及針對這些條件可能進行的改進。

一個簡單的模型

在實驗科學中我常遇到的情況是,使用大量的變數代表可能變化的因素,例如光譜、電壓、速度等等。但是由於實驗環境和觀測手段的限制,實驗資料往往變得極其的複雜、混亂和冗餘的。如何對資料進行分析,取得隱藏在資料背後的變數關係,是一個很困難的問題。在神經科學、氣象學、海洋學等等學科實驗中,假設的變數個數可能非常之多,但是真正的影響因素以及它們之間的關係可能又是非常之簡單的。

下面的模型取自一個物理學中的實驗。它看上去比較簡單,但足以說明問題。如圖表 1所示。這是一個理想彈簧運動規律的測定實驗。假設球是連線在一個無質量無摩擦的彈簧之上,從平衡位置沿軸拉開一定的距離然後釋放。

圖表 1

對於一個具有先驗知識的實驗者來說,這個實驗是非常容易的。球的運動只是在x軸向上發生,只需要記錄下軸向上的運動序列並加以分析即可。但是,在真實世界中,對於第一次實驗的探索者來說(這也是實驗科學中最常遇到的一種情況),是不可能進行這樣的假設的。那麼,一般來說,必須記錄下球的三維位置。這一點可以通過在不同角度放置三個攝像機實現(如圖所示),假設以的頻率拍攝畫面,就可以得到球在空間中的運動序列。但是,由於實驗的限制,這三臺攝像機的角度可能比較任意,並不是正交的。事實上,在真實世界中也並沒有所謂的

軸,每個攝像機記錄下的都是一幅二維的影象,有其自己的空間座標系,球的空間位置是由一組二維座標記錄的:。經過實驗,系統產生了幾分鐘內球的位置序列。怎樣從這些資料中得到球是沿著某個軸運動的規律呢?怎樣將實驗資料中的冗餘變數剔除,化歸到這個潛在的軸上呢?

這是一個真實的實驗場景,資料的噪音是必須面對的因素。在這個實驗中噪音可能來自空氣、摩擦、攝像機的誤差以及非理想化的彈簧等等。噪音使資料變得混亂,掩蓋了變數間的真實關係。如何去除噪音是實驗者每天所要面對的巨大考驗。

上面提出的兩個問題就是PCA方法的目標。PCA主元分析方法是解決此類問題的一個有力的武器。下文將結合以上的例子提出解決方案,逐步敘述PCA方法的思想和求解過程。

線形代數:基變換

從線形代數的角度來看,PCA的目標就是使用另一組基去重新描述得到的資料空間。而新的基要能儘量揭示原有的資料間的關係。在這個例子中,沿著某軸上的運動是最重要的。這個維度即最重要的“主元”。PCA的目標就是找到這樣的“主元”,最大程度的去除冗餘和噪音的干擾。

A.標準正交基

為了引入推導,需要將上文的資料進行明確的定義。在上面描述的實驗過程中,在每一個取樣時間點上,每個攝像機記錄了一組二維座標,綜合三臺攝像機資料,在每一個時間點上得到的位置資料對應於一個六維列向量。

如果以的頻率拍攝10分鐘,將得到這樣的向量資料。

抽象一點來說,每一個取樣點資料都是在維向量空間(此例中)內的一個向量,這裡的是牽涉的變數個數。由線形代數我們知道,在維向量空間中的每一個向量都是一組正交基的線形組合。最普通的一組正交基是標準正交基,實驗取樣的結果通常可以看作是在標準正交基下表示的。舉例來說,上例中每個攝像機記錄的資料座標為,這樣的基便是。那為什麼不取或是其他任意的基呢?原因是,這樣的標準正交基反映了資料的採集方式。假設採集資料點是,一般並不會記錄(在基下),因為一般的觀測者都是習慣於取攝像機的螢幕座標,即向上和向右的方向作為觀測的基準。也就是說,標準正交基表現了資料觀測的一般方式。

線上形代數中,這組基表示為行列向量線形無關的單位矩陣。

B.基變換

從更嚴格的數學定義上來說,PCA回答的問題是:如何尋找到另一組正交基,它們是標準正交基的線性組合,而且能夠最好的表示資料集?

這裡提出了PCA方法的一個關鍵的假設:線性。這是一個非常強的假設條件。它使問題得到了很大程度的簡化:1)資料被限制在一個向量空間中,能被一組基表示;2)隱含的假設了資料之間的連續性關係。

這樣一來資料就可以被表示為各種基的線性組合。令表示原資料集。是一個的矩陣,它的每一個列向量都表示一個時間取樣點上的資料,在上面的例子中,表示轉換以後的新的資料集表示。是他們之間的線性轉換。

(1)

有如下定義:

l表示的行向量。

l表示的列向量(或者)。

l表示的列向量。

公式(1)表示不同基之間的轉換,線上性代數中,它有如下的含義:

Ø是從的轉換矩陣。

Ø幾何上來說,進行旋轉和拉伸得到

Ø的行向量,是一組新的基,而是原資料在這組新的基表示下得到的重新表示。

下面是對最後一個含義的顯式說明:

注意到的列向量:

可見表示的是中對應列的點積,也就是相當於是在對應向量上的投影。所以,的行向量事實上就是一組新的基。它對原資料進行重新表示。在一些文獻中,將資料成為“源”,而將變換後的稱為“訊號”。這是由於變換後的資料更能體現訊號成分的原因。

C.問題

線上性的假設條件下,問題轉化為尋找一組變換後的基,也就是的行向量,這些向量就是PCA中所謂的“主元”。問題轉化為如下的形式:

l怎樣才能最好的表示原資料

l基怎樣選擇才是最好的?

解決問題的關鍵是如何體現資料的特徵。那麼,什麼是資料的特徵,如何體現呢?

方差和目標

“最好的表示”是什麼意思呢?下面的章節將給出一個較為直觀的解釋,並增加一些額外的假設條件。在線性系統中,所謂的“混亂資料”通常包含以下的三種成分:噪音、旋轉以及冗餘。下面將對這三種成分做出數學上的描述並針對目標作出分析。

A.噪音和旋轉

噪音對資料的影響是巨大的,如果不能對噪音進行區分,就不可能抽取資料中有用的資訊。噪音的橫樑有多種方式,最常見的定義是信噪比(signal-to-noise ratio),或是方差比

(2)

比較大的信噪比表示資料的準確度高,而信噪比低則說明資料中的噪音成分比較多。那麼怎樣區分什麼是訊號,什麼是噪音呢?這裡假設,變化較大的資訊被認為是訊號,變化較小的則是噪音。事實上,這個標準等價於一個低通的濾波器,是一種標準的去噪準則。而變化的大小則是由方差來描述的。

它表示了取樣點在平均值兩側的分佈,對應於圖表 2(a)就是取樣點雲的“胖瘦”。顯然的,方差較大,也就是較“寬”較“胖”的分佈,表示了取樣點的主要分佈趨勢,是主訊號或主要分量;而方差較小的分佈則被認為是噪音或次要分量。

圖表 2(a)攝像機A的採集資料。圖中黑色垂直直線表示一組正交基的方向。是取樣點雲在長線方向上分佈的方差,而是資料點在短線方向上分佈的方差。(b)的基向量進行旋轉使SNR和方差最大。

假設攝像機A拍攝到的資料如圖表 2(a)所示,圓圈代表取樣點,因為運動理論上是隻存在於一條直線上,所以偏離直線的分佈都屬於噪音。此時描述的就是取樣點雲在某對垂直方向上的概率分佈的比值。那麼,最大限度的揭示原資料的結構和關係,找出某條潛在的,最優的軸,事實上等價尋找一對空間內的垂直直線(圖中黑線表示,也對應於此空間的一組基),使得信噪比儘可能大的方向。容易看出,本例中潛在的軸就是圖上的較長黑線方向。那麼怎樣尋找這樣一組方向呢?直接的想法是對基向量進行旋轉。如圖表 2(b)所示,隨著這對直線的轉動以及方差的變化情況。應於最大值的一組基,就是最優的“主元”方向。在進行數學中求取這組基的推導之前,先介紹另一個影響因素。

B.冗餘

有時在實驗中引入了一些不必要的變數。可能會使兩種情況:1)該變數對結果沒有影響;2)該變數可以用其它變量表示,從而造成資料冗餘。下面對這樣的冗餘情況進行分析和分類。

圖表 3:可能冗餘資料的頻譜圖表示。分別是兩個不同的觀測變數。(比如例子中的)。最佳擬合線用虛線表示。

圖表 3所示,它揭示了兩個觀測變數之間的關係。(a)圖所示的情況是低冗餘的,從統計學上說,這兩個觀測變數是相互獨立的,它們之間的資訊沒有冗餘。而相反的極端情況如(c)高度相關,完全可以用表示。一般來說,這種情況發生可能是因為攝像機A和攝像機B放置的位置太近或是資料被重複記錄了,也可能是由於實驗設計的不合理所造成的。那麼對於觀測者而言,這個變數的觀測資料就是完全冗餘的,應當去除,只用一個變數就可以表示了。這也就是PCA中“降維”思想的本源。

C.協方差矩陣

對於上面的簡單情況,可以通過簡單的線性擬合的方法來判斷各觀測變數之間是否出現冗餘的情況,而對於複雜的情況,需要藉助協方差來進行衡量和判斷:

分別表示不同的觀測變數所記錄的一組值,在統計學中,由協方差的性質可以得到:

l,且當且僅當觀測變數相互獨立。

l,當=

等價的,將寫成行向量的形式:

協方差可以表示為:

(3)

那麼,對於一組具有觀測變數,取樣時間點的取樣資料,將每個觀測變數的值寫為行向量,可以得到一個的矩陣:

(4)

接下來定義協方差矩陣如下:

(5)

容易發現協方差矩陣性質如下:

l是一個的平方對稱矩陣。

l對角線上的元素是對應的觀測變數的方差。

l非對角線上的元素是對應的觀測變數之間的協方差。

協方差矩陣包含了所有觀測變數之間的相關性度量。更重要的是,根據前兩節的說明,這些相關性度量反映了資料的噪音和冗餘的程度。

l在對角線上的元素越大,表明訊號越強,變數的重要性越高;元素越小則表明可能是存在的噪音或是次要變數。

l在非對角線上的元素大小則對應於相關觀測變數對之間冗餘程度的大小。

一般情況下,初始資料的協方差矩陣總是不太好的,表現為信噪比不高且變數間相關度大。PCA的目標就是通過基變換對協方差矩陣進行優化,找到相關“主元”。那麼,如何進行優化?矩陣的那些性質是需要注意的呢?

D.協方差矩陣的對角化

總結上面的章節,主元分析以及協方差矩陣優化的原則是:1)最小化變數冗餘,對應於協方差矩陣的非對角元素要儘量小;2)最大化訊號,對應於要使協方差矩陣的對角線上的元素儘可能的大。因為協方差矩陣的每一項都是正值,最小值為0,所以優化的目標矩陣的非對角元素應該都是0,對應於冗餘最小。所以優化的目標矩陣應該是一個對角陣。即只有對角線上的元素可能是非零值。同時,PCA假設所對應的一組變換基必須是標準正交的,而優化矩陣對角線上的元素越大,就說明訊號的成分越大,換句話就是對應于越重要的“主元”。

對於協方差矩陣進行對角化的方法很多。根據上面的分析,最簡單最直接的演算法就是在多維空間內進行搜尋。和圖表 2(a)的例子中旋轉的方法類似:

1)維空間中進行遍歷,找到一個方差最大的向量,令作

2)在與垂直的向量空間中進行遍歷,找出次大的方差對應的向量,記作

3)對以上過程迴圈,直到找出全部的向量。它們生成的順序也就是“主元”的排序。

這個理論上成立的演算法說明了PCA的主要思想和過程。在這中間,牽涉到兩個重要的特性:a)轉換基是一組標準正交基。這給PCA的求解帶來了很大的好處,它可以運用線性代數的相關理論進行快速有效的分解。這些方法將在後面提到。b)在PCA的過程中,可以同時得到新的基向量所對應的“主元排序”,利用這個重要性排序可以方便的對資料進行光順、簡化處理或是壓縮。

A.PCA的假設和侷限

PCA的模型中存在諸多的假設條件,決定了它存在一定的限制,在有些場合可能會造成效果不好甚至失效。對於學習和掌握PCA來說,理解這些內容是非常重要的,同時也有利於理解基於改進這些限制條件的PCA的一些擴充套件技術。

PCA的假設條件包括:

1.線形性假設。

如同文章開始的例子,PCA的內部模型是線性的。這也就決定了它能進行的主元分析之間的關係也是線性的。現在比較流行的kernel-PCA的一類方法就是使用非線性的權值對原有PCA技術的拓展。

2.使用中值和方差進行充分統計。

使用中值和方差進行充分的概率分佈描述的模型只限於指數型概率分佈模型。(例如高斯分佈),也就是說,如果我們考察的資料的概率分佈並不滿足高斯分佈或是指數型的概率分佈,那麼PCA將會失效。在這種模型下,不能使用方差和協方差來很好的描述噪音和冗餘,對教化之後的協方差矩陣並不能得到很合適的結果。

事實上,去除冗餘的基礎的方程是:

其中代表概率分佈的密度函式。基於這個方程進行冗餘去除的方法被稱作獨立主元分析(ICA)方法(Independent Component Analysis)。不過,所幸的是,根據中央極限定理,現實生活中所遇到的大部分取樣資料的概率分佈都是遵從高斯分佈的。所以PCA仍然是一個使用於絕大部分領域的穩定且有效的演算法。

3.大方差向量具有較大重要性。

PCA方法隱含了這樣的假設:資料本身具有較高的信噪比,所以具有最高方差的一維向量就可以被看作是主元,而方差較小的變化則被認為是噪音。這是由於低通濾波器的選擇決定的。

4.主元正交。

PCA方法假設主元向量之間都是正交的,從而可以利用線形代數的一系列有效的數學工具進行求解,大大提高了效率和應用的範圍。

PCA求解:特徵根分解

線上形代數中,PCA問題可以描述成以下形式:

尋找一組正交基組成的矩陣,有,使得是對角陣。則P的行向量(也就是一組正交基),就是資料的主元向量。

進行推導:

定義,則是一個對稱陣。對進行對角化求取特徵向量得:

是一個對角陣而則是對稱陣的特徵向量排成的矩陣。

這裡要提出的一點是,是一個的矩陣,而它將有特徵向量。其中是矩陣。如果,則即為退化陣。此時分解出的特徵向量不能覆蓋整個空間。此時只需要在保證基的正交性的前提下,在剩餘的空間中任意取得維正交向量填充的空格即可。它們將不對結果造成影響。因為此時對應於這些特徵向量的特徵值,也就是方差值為零。

求出特徵向量矩陣後我們取,則,由線形代數可知矩陣有性質,從而進行如下計算:

可知此時的就是我們需要求得變換基。至此我們可以得到PCA的結果:

l的主元即是的特徵向量,也就是矩陣的行向量。

l矩陣對角線上第i元素是資料在方向的方差。

我們可以得到PCA求解的一般步驟:

1)採集資料形成的矩陣。為觀測變數個數,為取樣點個數。

2)在每個觀測變數(矩陣行向量)上減去該觀測變數的平均值得到矩陣

3)對進行特徵分解,求取特徵向量以及所對應的特徵根。

總結和討論

lPCA技術的一大好處是對資料進行降維的處理。我們可以對新求出的“主元”向量的重要性進行排序,根據需要取前面最重要的部分,將後面的維數省去,可以達到降維從而簡化模型或是對資料進行壓縮的效果。同時最大程度的保持了原有資料的資訊。在前文的例子中,經過PCA處理後的資料只剩下了一維,也就是彈簧運動的那一維,從而去除了冗餘的變數,揭示了實驗資料背後的物理原理。

lPCA技術的一個很大的優點是,它是完全無引數限制的。在PCA的計算過程中完全不需要人為的設定引數或是根據任何經驗模型對計算進行干預,最後的結果只與資料相關,與使用者是獨立的。但是,這一點同時也可以看作是缺點。如果使用者對觀測物件有一定的先驗知識,掌握了資料的一些特徵,卻無法通過引數化等方法對處理過程進行干預,可能會得不到預期的效果,效率也不高。

圖表 4:黑色點表示取樣資料,排列成轉盤的形狀。容易想象,該資料的主元是或是旋轉角

圖表 4中的例子,PCA找出的主元將是。但是這顯然不是最優和最簡化的主元。之間存在著非線性的關係。根據先驗的知識可知旋轉角是最優的主元。則在這種情況下,PCA就會失效。但是,如果加入先驗的知識,對資料進行某種劃歸,就可以將資料轉化為以為線性的空間中。這類根據先驗知識對資料預先進行非線性轉換的方法就成為kernel-PCA,它擴充套件了PCA能夠處理的問題的範圍,又可以結合一些先驗約束,是比較流行的方法。

l有時資料的分佈並不是滿足高斯分佈。如圖表 5所示,在非高斯分佈的情況下,PCA方法得出的主元可能並不是最優的。在尋找主元時不能將方差作為衡量重要性的標準。要根據資料的分佈情況選擇合適的描述完全分佈的變數,然後根據概率分散式

來計算兩個向量上資料分佈的相關性。等價的,保持主元間的正交假設,尋找的主元同樣要使。這一類方法被稱為獨立主元分解(ICA)

圖表 5:資料的分佈並不滿足高斯分佈,呈明顯的十字星狀。這種情況下,方差最大的方向並不是最優主元方向。

lPCA方法和線形代數中的奇異值分解(SVD)方法有內在的聯絡,一定意義上來說,PCA的解法是SVD的一種變形和弱化。對於的矩陣,通過奇異值分解可以直接得到如下形式:

其中是一個的矩陣,是一個的矩陣,而的對角陣。形式如下:

其中,是原矩陣的奇異值。由簡單推導可知,如果對奇異值分解加以約束:的向量必須正交,則矩陣即為PCA的特徵值分解中的,則說明PCA並不一定需要求取,也可以直接對原資料矩陣進行SVD奇異值分解即可得到特徵向量矩陣,也就是主元向量。

計算機視學領域的應用

PCA方法是一個具有很高普適性的方法,被廣泛應用於多個領域。這裡要特別介紹的是它在計算機視覺領域的應用,包括如何對影象進行處理以及在人臉識別方面的特別作用。

A.資料表示

如果要將PCA方法應用於視覺領域,最基本的問題就是影象的表達。如果是一幅大小的影象,它的資料將被表達為一個維的向量:

在這裡影象的結構將被打亂,每一個畫素點被看作是一維,最直接的方法就是將影象的畫素行行的頭尾相接成一個一維向量。還必須要注意的是,每一維上的資料對應於對應畫素的亮度、灰度或是色彩值,但是需要劃歸到同一緯度上。

B.模式識別

假設資料來源是一系列的20幅影象,每幅影象都是大小,那麼它們都可以表示為一個維的向量。將它們排成一個矩陣:

然後對它們進行PCA處理,找出主元。

為什麼這樣做呢?據人臉識別的例子來說,資料來源是20幅不同的人臉影象,PCA方法的實質是尋找這些影象中的相似的維度,因為人臉的結構有極大的相似性(特別是同一個人的人臉影象),則使用PCA方法就可以很容易的提取出人臉的內在結構,也及時所謂“模式”,如果有新的影象需要與原有影象比較,就可以在變換後的主元維度上進行比較,則可衡量新圖與原有資料集的相似度如何。

對這樣的一組人臉影象進行處理,提取其中最重要的主元,即可大致描述人臉的結構資訊,稱作“特徵臉”(EigenFace)。這就是人臉識別中的重要方法“特徵臉方法”的理論根據。近些年來,基於對一般PCA方法的改進,結合ICAkernel-PCA等方法,在主元分析中加入關於人臉影象的先驗知識,則能得到更好的效果。

C.影象資訊壓縮

使用PCA方法進行影象壓縮,又被稱為Hotelling演算法,或者Karhunen and Leove(KL)變換。這是視覺領域內影象處理的經典演算法之一。具體演算法與上述過程相同,使用PCA方法處理一個影象序列,提取其中的主元。然後根據主元的排序去除其中次要的分量,然後變換回原空間,則影象序列因為維數降低得到很大的壓縮。例如上例中取出次要的5個維度,則影象就被壓縮了1/4。但是這種有損的壓縮方法同時又保持了其中最“重要”的資訊,是一種非常重要且有效的演算法。

參考文獻

[1]Lindsay I Smith. (2002) “A tutorial on Principal Components Analysis”

[2]Jonathon Shlens. (2005) “A Tutorial on Principal Component Analysis”

[3]Will, Todd (1999) “Introduction to the Singular Value Decomposition” Davidson College. http://www.davidson.edu/academic/math/will/svd/index.html

[4]Bell, Anthony and Sejnowski, Terry. (1997) “The Independent Components of Natural Scenes are EdgeFilters.” Vision Research 37(23), 3327-3338.

[5]T.F. Cootes and C.J.Taylor (2004) “Statistical Models of Appearance for Computer Vision”
http://www.isbe.man.ac.uk/~bim/Models/app_models.pdf

[6]張翠平 蘇光大 (2000)“人臉識別技術綜述”《中國影象圖形學報》第五卷A版第11

[7]何國輝 甘俊英 (2006)PCA類內平均臉法在人臉識別中的應用研究”《計算機應用研究》2006年第三期

[8]牛麗平 付仲良 魏文利 (2006)“人臉識別技術研究”《電腦開發與應用》2006年第五期

[9]Wikipedia “principal components analysis”詞條解釋 From Answers.com