PCA的數學原理(經典)

PCA(Principal Component Analysis)是一種常用的數據分析方法。PCA通過線性變換將原始數據變換爲一組各維度線性無關的表示,可用於提取數據的主要特徵分量,常用於高維數據的降維。網上關於PCA的文章有很多,但是大多數只描述了PCA的分析過程,而沒有講述其中的原理。這篇文章的目的是介紹PCA的基本數學原理,幫助讀者瞭解PCA的工作機制是什麼。

當然我並不打算把文章寫成純數學文章,而是希望用直觀和易懂的方式敘述PCA的數學原理,所以整個文章不會引入嚴格的數學推導。希望讀者在看完這篇文章後能更好的明白PCA的工作原理。

數據的向量表示及降維問題

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

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

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

(500,240,25,13,2312.15)?(500,240,25,13,2312.15)T
。則在二維平面上A和B可以用兩條發自原點的有向線段表示,見下圖:

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

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

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

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

不過我們常常忽略,只有一個(3,2)本身是不能夠精確表示一個向量的。我們仔細看一下,這裏的3實際表示的是向量在x軸上的投影值是3,在y軸上的投影值是2。也就是說我們其實隱式引入了一個定義:以x軸和y軸上正方向長度爲1的向量爲標準。那麼一個向量(3,2)實際是說在x軸投影爲3而y軸的投影爲2。注意投影是一個矢量,所以可以爲負。

更正式的說,向量(x,y)實際上表示線性組合:

x(1,0)?+y(0,1)?x(1,0)T+y(0,1)T

不難證明所有二維向量都可以表示爲這樣的線性組合。此處(1,0)和(0,1)叫做二維空間中的一組基。

所以,要準確描述向量,首先要確定一組基,然後給出在基所在的各個直線上的投影值,就可以了。只不過我們經常省略第一步,而默認以(1,0)和(0,1)爲基。

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

例如,(1,1)和(-1,1)也可以成爲一組基。一般來說,我們希望基的模是1,因爲從內積的意義可以看到,如果基的模是1,那麼就可以方便的用向量點乘基而直接獲得其在新基上的座標了!實際上,對應任何一個向量我們總可以找到其同方向上模爲1的向量,只要讓兩個分量分別除以模就好了。例如,上面的基可以變爲(12,12)(12,12)。下圖給出了新的基以及(3,2)在新基上座標值的示意圖:

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

基變換的矩陣表示

下面我們找一種簡便的方式來表示基變換。還是拿上面的例子,想一下,將(3,2)變換爲新基上的座標,就是用(3,2)與第一個基做內積運算,作爲第一個新的座標分量,然後用(3,2)與第二個基做內積運算,作爲第二個新座標的分量。實際上,我們可以用矩陣相乘的形式簡潔的表示這個變換:

(1/21/21/21/2)(32)=(5/21/2)(1/21/2−1/21/2)(32)=(5/2−1/2)

我們可以看下五條數據在平面直角座標系內的樣子:

現在問題來了:如果我們必須使用一維來表示這些數據,又希望儘量保留原始的信息,你要如何選擇?

通過上一節對基變換的討論我們知道,這個問題實際上是要在二維平面中選擇一個方向,將所有數據都投影到這個方向所在直線上,用投影值表示原始記錄。這是一個實際的二維降到一維的問題。

那麼如何選擇這個方向(或者說基)才能儘量保留最多的原始信息呢?一種直觀的看法是:希望投影后的投影值儘可能分散。

以上圖爲例,可以看出如果向x軸投影,那麼最左邊的兩個點會重疊在一起,中間的兩個點也會重疊在一起,於是本身四個各不相同的二維點投影后只剩下兩個不同的值了,這是一種嚴重的信息丟失,同理,如果向y軸投影最上面的兩個點和分佈在x軸上的兩個點也會重疊。所以看來x和y軸都不是最好的投影選擇。我們直觀目測,如果向通過第一象限和第三象限的斜線投影,則五個點在投影后還是可以區分的。

下面,我們用數學方法表述這個問題。

方差

上文說到,我們希望投影后投影值儘可能分散,而這種分散程度,可以用數學上的方差來表述。此處,一個字段的方差可以看做是每個元素與字段均值的差的平方和的均值,即:

Var(a)=1mi=1m(aiμ)2Var(a)=1m∑i=1m(ai−μ)2
,則C是一個對稱矩陣,其對角線分別個各個字段的方差,而第i行j列和j行i列元素相同,表示i和j兩個字段的協方差。

協方差矩陣對角化

根據上述推導,我們發現要達到優化目前,等價於將協方差矩陣對角化:即除對角線外的其它元素化爲0,並且在對角線上將元素按大小從上到下排列,這樣我們就達到了優化目的。這樣說可能還不是很明晰,我們進一步看下原矩陣與基變換後矩陣協方差矩陣的關係:

設原始數據矩陣X對應的協方差矩陣爲C,而P是一組基按行組成的矩陣,設Y=PX,則Y爲X對P做基變換後的數據。設Y的協方差矩陣爲D,我們推導一下D與C的關係:

D=====1mYY?1m(PX)(PX)?1mPXX?P?P(1mXX?)

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