1. 程式人生 > >PCA的數學原理(轉)

PCA的數學原理(轉)

首先我們直接給出PCA演算法步驟:

設有m條n維資料。
1)將原始資料按列組成n行m列矩陣X
2)將X的每一行(代表一個特徵欄位)進行零均值化,即減去這一行的均值
3)求出協方差矩陣C=1mXXT
4)求出協方差矩陣的特徵值及對應的特徵向量
5)將特徵向量按對應特徵值大小從上到下按行排列成矩陣,取前k行組成矩陣P
6)Y=PX即為降維到k維後的資料

PCA通過線性變換將原始資料變換成一組各維度線性無關的表示,可用於提取資料的主要特徵分量。我們通過幾個問題來一步步瞭解其過程

1、先了解一些數學概念

通常我們可以將一條樣本資料表示成多維向量。我們需要知道在多維空間中,存在一組基可以用來表示這個多維空間。比如,二維空間可以使用

(1,0),(0,1)這兩個二維向量來表示整個二維空間中的向量(x,y)=x(1,0)+y(0,1)。當然基不是唯一的,如(1/2,1/2),(1/2,1/2)也可以構成一組基。

2、如何降維?

資料在不通過基底下可以表示成不同的矩陣,這個變換過程可以表示稱

=
如果我們選擇的新基數目少於原始基底,那麼就可以做到降維的目的。因為資料的表示維度是由基決定的。

3、如何選擇新基?

我們如何選擇最優的新基,以保證我們的資料經過變換能最大程度保留原有的資訊。還是以二維空間為例,我們可以將基矩陣變換看成在原始座標系下,資料點對新的座標系的投影。那麼我們希望投影后的資料點儘可能地分開不要重合。如果點發生重合也就意味著資訊缺失。

而這種分散程度可以使用數學上的方差來表示,所以問題變換成尋找新基使得資料變換後方差最大。

4、高維情形?

上面我們提到了在二維下,只需要找到使得方差最大的方向就行了。那麼對於高維,完成了第一個方向的選擇,我們需要選擇第二個投影方向。

如果我們仍然選擇方差最大的方向,那麼很顯然這個方向與第一個方向幾乎重合在一起的。直觀上看,讓兩個特徵欄位儘可能保留更多資訊,那麼我們希望它們之間線性無關,線性相關就是意味著欄位存在重複資訊。

5、如何表示相關性?

數學上使用協方差來表示變數之間的相關性,當協方差為0時,即選擇的第二個基在第一個基正交的方向上選擇是可以保證兩個欄位完全獨立。

通過計算協方差矩陣

1mXXT(需要經過0均值化處理,便於計算分析),可以發現對角線上是各個欄位的方差,其他元素是它們的協方差。

那麼問題就簡單了,我們需要找到協方差矩陣對角化後,對角線上的k個最大特徵值,對應的特徵向量就是我們需要的基底。

以上就是對PCA演算法的通俗描繪,轉載自知乎。