機器學習數據降維方法:PCA主成分分析

PCA在機器學習中很常用,是一種無參數的數據降維方法。PCA步驟:

  1. 將原始數據按列組成n行m列矩陣X
  2. 將X的每一行(代表一個屬性字段)進行零均值化,即減去這一行的均值
  3. 求出協方差矩陣
  4. 求出協方差矩陣的特徵值及對應的特徵向量
  5. 將特徵向量按對應特徵值大小從上到下按行排列成矩陣,取前k行組成矩陣P
  6. Y=PX即爲降維到k維後的數據

1. PCA的推導

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

我們知道PCA是一種數據降維的方法,在降低維度的過程中,我們當然想要保留更多的特徵,PCA就是經過數學推導,保留最多特徵同時降維的方法。

在推導之前要先知道幾個基礎知識:

  1. 內積與投影

兩個維數相同的向量的內積被定義爲:

 

 

假設A和B是兩個n維向量,我們知道n維向量可以等價表示爲n維空間中的一條從原點發射的有向線段,爲了簡單起見我們假設A和B均爲二維向量,則A=(x1,y1),B=(x2,y2)。則在二維平面上A和B可以用兩條發自原點的有向線段表示,見下圖:

 

現在我們從A點向B所在直線引一條垂線。我們知道垂線與B的交點叫做A在B上的投影,再設A與B的夾角是a,則投影的矢量長度爲|A|cos(a),其中|A|是向量A的模,也就是A線段的標量長度。

到這裏還是看不出內積和這東西有什麼關係,不過如果我們將內積表示爲另一種我們熟悉的形式:

 

現在事情似乎是有點眉目了:A與B的內積等於A到B的投影長度乘以B的模。再進一步,如果我們假設B的模爲1,即讓|B|=1,那麼就變成了:

 

也就是說,設向量B的模爲1,則A與B的內積值等於A向B所在直線投影的矢量長度!這就是內積的一種幾何解釋,也是我們得到的第一個重要結論。在後面的推導中,將反覆使用這個結論。

下面我們繼續在二維空間內討論向量。上文說過,一個二維向量可以對應二維笛卡爾直角座標系中從原點出發的一個有向線段。例如下面這個向量:

 

在代數表示方面,我們經常用線段終點的點座標表示向量,例如上面的向量可以表示爲(3,2),這是我們再熟悉不過的向量表示。

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

3. 基變換的矩陣表示

一般的,如果我們有M個N維向量,想將其變換爲由R個N維向量表示的新空間中,那麼首先將R個基按行組成矩陣A,然後將向量按列組成矩陣B,那麼兩矩陣的乘積AB就是變換結果,其中AB的第m列爲A中第m列變換後的結果。(新基按行,向量按列)

特別要注意的是,這裏R可以小於N,而R決定了變換後數據的維數。也就是說,我們可以將一N維數據變換到更低維度的空間中去,變換後的維度取決於基的數量。因此這種矩陣相乘的表示也可以表示降維變換。

最後,上述分析同時給矩陣相乘找到了一種物理解釋:兩個矩陣相乘的意義是將右邊矩陣中的每一列列向量變換到左邊矩陣中每一行行向量爲基所表示的空間中去。更抽象的說,一個矩陣可以表示一種線性變換。很多同學在學線性代數時對矩陣相乘的方法感到奇怪,但是如果明白了矩陣相乘的物理意義,其合理性就一目瞭然了。

4. 協方差矩陣與優化目標

我們從上面的矩陣乘法與基變換可以看出,當新基的維數小於原來的維數時可以做到數據的降維,但是究竟如何選擇新基就是我們現在面臨的問題,我們想要選擇一個維數更小的新基,同時新基保留有更多的信息。我們知道矩陣向新基投影的形式,也就是PCA是將一組N維的特徵投影到K維(K<N)同時保留更多的特徵。

那麼怎麼衡量更多的特徵,也就是投影后儘量少的重疊,投影值儘可能分散。

協方差

從二維到一維的降維,只需要找到一個一維基使得方差最大,但是三維降到二維呢?我們需要找到兩個基讓這個三維數據投影到兩個基上,如果我們找方差最大的兩個基,會發現他們完全一樣或者線性相關,這和一個基沒什麼區別,不能表達更多的信息,所以我們需要添加限制條件,我們希望這兩個基彼此線性無關,擴展到K個基也是一樣。

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

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

關於PCA的貢獻率與K的選擇

在我的文章特徵值和特徵向量中說過,特徵值反映了矩陣對於特徵向量的拉伸程度,只有拉伸而沒有旋轉,也就是在特徵向量方向上的作用程度,所以在PCA中我們選取前K個特徵向量組成新基進行投影,就是因爲原特徵在前K個特徵向量有最大的作用程度。

投影過後可以保留更多的信息,作用程度是用特徵值表示的,所以我們可以使用下面的式子表示貢獻率,貢獻率是表示投影后信息的保留程度的變量,也就是特徵值的總和比上前K個特徵值,一般來說貢獻率要大於85%。

(1)獲取更多優質內容及精彩資訊,可前往:https://www.cda.cn/?seo

(2)瞭解更多數據領域的優質課程:

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