PCA(主成分分析方法)

 

目錄

1. 降維問題

2. 向量與基變換

2.1 內積與投影

2.2 基

2.3 基變換的矩陣

3. 協方差矩陣及優化目標

3.1 方差

3.2 協方差

3.3 協方差矩陣

3.4 協方差矩陣對角化

4. 算法與實例

4.1 PCA算法

4.2 實例

5. 討論


      PCA(Principal Component Analysis)是常用的數據分析方法。PCA是通過線性變換,將原始數據變換爲一組各維度線性無關的數據表示方法,可用於提取數據的主要特徵分量,常用於高維數據的降維。

1. 降維問題

      數據挖掘和機器學習中,數據以向量表示。例如某個淘寶店2012年全年的流量及交易情況可以看成一組記錄的集合,其中每一天的數據是一條記錄,格式如下:

                          (日期, 瀏覽量, 訪客數, 下單數, 成交數, 成交金額)

其中“日期”是一個記錄標誌而非度量值,而數據挖掘關心的大多是度量值,因此如果我們忽略日期這個字段後,我們得到一組記錄,每條記錄可以被表示爲一個五維向量,其中一條樣本如下所示: 

                          

一般習慣上使用列向量表示一條記錄,本文後面也會遵循這個準則。

      機器學習的很多算法複雜度和數據的維數有着密切關係,甚至與維數呈指數級關聯。這裏區區5維的數據,也許無所謂,但是實際機器學習中處理成千上萬甚至幾十萬維的數據也並不罕見,在這種情況下,機器學習的資源消耗是不可接受的,因此就會對數據採取降維的操作。降維就意味着信息的丟失,不過鑑於實際數據本身常常存在相關性,所以在降維時想辦法降低信息的損失。

       例如上面淘寶店鋪的數據,從經驗可知,“瀏覽量”和“訪客數”往往具有較強的相關性,而“下單數”和“成交數”也具有較強的相關性。可以直觀理解爲“當某一天這個店鋪的瀏覽量較高(或較低)時,我們應該很大程度上認爲這天的訪客數也較高(或較低)”。因此,如果刪除瀏覽量或訪客數,最終並不會丟失太多信息,從而降低數據的維度,也就是所謂的降維操作。如果把數據降維用數學來分析討論,用專業名詞表示就是PCA,這是一種具有嚴格數學基礎並且已被廣泛採用的降維方法。

2. 向量與基變換

2.1 內積與投影

      兩個大小相同向量的內積被定義如下:

                              

      

2.2 基

       在代數中,經常用線段終點的點座標表示向量。假設某個向量的座標爲(3,2),這裏的3實際表示的是向量在x軸上的投影值是3,在y軸上的投影值是2。也就是說隱式引入了一個定義:以x軸和y軸上正方向長度爲1的向量爲標準。那麼一個向量(3,2)實際是在x軸投影爲3而y軸的投影爲2。注意投影是一個矢量,可以爲負。向量(x, y)實際上表示線性組合:

                                               

由上面的表示,可以得到所有二維向量都可以表示爲這樣的線性組合。此處(1,0)和(0,1)叫做二維空間中的一組基。

                               

      之所以默認選擇(1,0)和(0,1)爲基,當然是爲了方便,因爲它們分別是x和y軸正方向上的單位向量,因此就使得二維平面上點座標和向量一一對應。但實際上任何兩個線性無關的二維向量都可以成爲一組基,所謂線性無關在二維平面內,從直觀上就是兩個不在一條直線的向量。

      例如,(1,1)和(-1,1)也可以成爲一組基。一般來希望基的模是1,因爲從內積的意義可以看到,如果基的模是1,那麼就可以方便的用向量點乘基而直接獲得其在新基上的座標。實際上,對應任何一個向量我們總可以找到其同方向上模爲1的向量,只要讓兩個分量分別除以模,則上面的基變爲。於是座標(3,2)在新的基上的座標爲,其中計算的過程是用座標(3,2)分別與兩個基做內積。

                                

       另外這裏的基是正交的(即內積爲0,或直觀說相互垂直),可以成爲一組基的唯一要求就是線性無關,非正交的基也是可以的。不過因爲正交基有較好的性質,所以一般使用的基都是正交的。

2.3 基變換的矩陣

     上述例子中的基變換,可以採用矩陣的乘法來表示,即

                                         

      如果推廣一下,假設有M個N維向量,想將其變換爲由R個N維向量表示的新空間中,那麼首先將R個基按行組成矩陣A,然後將向量按列組成矩陣B,那麼兩矩陣的乘積AB就是變換結果,其中AB的第m列爲A中第m列變換後的結果,通過矩陣相乘表示爲:

                           

其中是一個行向量表示第i個基,是一個列向量表示第i個原始數據記錄。特別要注意的是,這裏R可以小於N,而R決定了變換後數據的維數。也就是說,將N維數據變換到更低維度的空間中,變換後的維度取決於基的數量。

最後,矩陣的乘法運算的物理解釋:兩個矩陣相乘的意義是將右邊矩陣中的每一列列向量變換到左邊矩陣中每一行行向量爲基所表示的空間中去

3. 協方差矩陣及優化目標

      在進行數據降維的時候,關鍵的問題是如何判定選擇的基是最優。也就是選擇最優基是最大程度的保證原始數據的特徵。這裏假設有5條數據爲

                                           

計算每一行的平均值,然後再讓每一行減去得到的平均值,得到

                                             

通過座標的形式表現矩陣,得到的圖如下:

                                   

      那麼現在的問題是:用一維向量來表示這些數據,又希望儘量保留原有的信息,該如何選擇呢?這個問題實際上是要在二維平面中選擇一個方向的向量,將所有數據點都投影到這條直線上,用投影的值表示原始記錄,即二維降到一維的問題。那麼如何選擇這個方向(或者說基)才能儘量保留最多的原始信息呢?一種直觀的看法是:希望投影后的投影值儘可能分散。

3.1 方差

上述問題是希望投影后投影的值儘可能在一個方向上分散,而這種分散程度,可以採用數學上的方差來表述,即:

                                  

於是上面的問題被形式化表述爲:尋找一個一維基,使得所有數據變換爲這個基上的座標後,方差值最大。

3.2 協方差

數學上可以用兩個特徵的協方差表示其相關性,即:

                               

當協方差爲0時,表示兩個特徵完全獨立。爲了讓協方差爲0,選擇第二個基時只能在與第一個基正交的方向上選擇。因此最終選擇的兩個方向一定是正交的。

至此獲得降維問題的優化目標:將一組N維向量降爲K維(K<N),其目標是選擇K個單位(模爲1)正交基,使得原始數據變換到這組基上後,各字段兩兩間協方差爲0,而字段的方差則儘可能大(在正交的約束下,取最大的K個方差)。

3.3 協方差矩陣

假設只有x和y兩個字段,將它們按行組成矩陣,其中是通過中心化的矩陣,也就是每條字段減去每條字段的平均值得到的矩陣:

                                        

然後用乘以的轉置,並乘上係數

                               

於是得到矩陣,其中對角線上的值正好是兩個字段的方差,而其他值便是兩個字段的協方差。如果把上面換成的矩陣,則字段就變成個。

3.4 協方差矩陣對角化

4. 算法與實例

4.1 PCA算法

4.2 實例

                                

5. 討論

根據上面對PCA的數學原理的解釋,可以瞭解到一些PCA的能力和限制。PCA本質上是將方差最大的方向作爲主要特徵,並且在各個正交方向上將數據“離相關”,也就是讓它們在不同正交方向上沒有相關性。

因此,PCA也存在一些限制,例如它可以很好的解除線性相關,但是對於高階相關性就沒有辦法了,對於存在高階相關性的數據,可以考慮Kernel PCA,通過Kernel函數將非線性相關轉爲線性相關。另外,PCA假設數據各主特徵是分佈在正交方向上,如果在非正交方向上存在幾個方差較大的方向,PCA的效果就大打折扣了。

最後需要說明的是,PCA是一種無參數技術,也就是說面對同樣的數據,如果不考慮清洗,誰來做結果都一樣,沒有主觀參數的介入,所以PCA便於通用實現,但是本身無法個性化的優化。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章