降維-PCA

一.簡介

PCA(Principal Component Analysis)主成分分析(Principal Component Analysis)是一種常用的數(shù)據(jù)分析方法,它對多變量表示數(shù)據(jù)點集合尋找盡可能少的正交矢量表征數(shù)據(jù)信息特征??捎糜谔崛?shù)據(jù)的主要特征分量,常用于高維數(shù)據(jù)的降維。

二.原理

為了避免過于抽象的討論,我們?nèi)砸砸粋€具體的例子展開。假設(shè)我們的數(shù)據(jù)由五條記錄組成,將它們表示成矩陣形式:

其中每一列為一條數(shù)據(jù)記錄,而一行為一個字段。為了后續(xù)處理方便,我們首先將每個字段內(nèi)所有值都減去字段均值,其結(jié)果是將每個字段都變?yōu)榫禐?(這樣做的道理和好處后面會看到)。

我們看上面的數(shù)據(jù),第一個字段均值為2,第二個字段均值為3,所以變換后:

我們可以看下五條數(shù)據(jù)在平面直角坐標系內(nèi)的樣子:

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

這個問題實際上是要在二維平面中選擇一個方向,將所有數(shù)據(jù)都投影到這個方向所在直線上,用投影值表示原始記錄。這是一個實際的二維降到一維的問題。

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

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

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

方差

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

由于上面我們已經(jīng)將每個字段的均值都化為0了,因此方差可以直接用每個元素的平方和除以元素個數(shù)表示:

于是上面的問題被形式化表述為:尋找一個一維基,使得所有數(shù)據(jù)變換為這個基上的坐標表示后,方差值最大。

協(xié)方差

對于上面二維降成一維的問題來說,找到那個使得方差最大的方向就可以了。不過對于更高維,還有一個問題需要解決??紤]三維降到二維問題。與之前相同,首先我們希望找到一個方向使得投影后方差最大,這樣就完成了第一個方向的選擇,繼而我們選擇第二個投影方向。

如果我們還是單純只選擇方差最大的方向,很明顯,這個方向與第一個方向應該是“幾乎重合在一起”,顯然這樣的維度是沒有用的,因此,應該有其他約束條件。從直觀上說,讓兩個字段盡可能表示更多的原始信息,我們是不希望它們之間存在(線性)相關(guān)性的,因為相關(guān)性意味著兩個字段不是完全獨立,必然存在重復表示的信息。

數(shù)學上可以用兩個字段的協(xié)方差表示其相關(guān)性,由于已經(jīng)讓每個字段均值為0,則:

可以看到,在字段均值為0的情況下,兩個字段的協(xié)方差簡潔的表示為其內(nèi)積除以元素數(shù)m。

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

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

協(xié)方差矩陣

上面我們導出了優(yōu)化目標,但是這個目標似乎不能直接作為操作指南(或者說算法),因為它只說要什么,但根本沒有說怎么做。所以我們要繼續(xù)在數(shù)學上研究計算方案。

我們看到,最終要達到的目的與字段內(nèi)方差及字段間協(xié)方差有密切關(guān)系。因此我們希望能將兩者統(tǒng)一表示,仔細觀察發(fā)現(xiàn),兩者均可以表示為內(nèi)積的形式,而內(nèi)積又與矩陣相乘密切相關(guān)。于是我們來了靈感:

假設(shè)我們只有a和b兩個字段,那么我們將它們按行組成矩陣X:

然后我們用X乘以X的轉(zhuǎn)置,并乘上系數(shù)1/m:

奇跡出現(xiàn)了!這個矩陣對角線上的兩個元素分別是兩個字段的方差,而其它元素是a和b的協(xié)方差。兩者被統(tǒng)一到了一個矩陣的。

根據(jù)矩陣相乘的運算法則,這個結(jié)論很容易被推廣到一般情況:

設(shè)我們有m個n維數(shù)據(jù)記錄,將其按列排成n乘m的矩陣X,設(shè)C=\frac{1}{m} XX^T,則C是一個對稱矩陣,其對角線分別個各個字段的方差,而第i行j列和j行i列元素相同,表示i和j兩個字段的協(xié)方差。

協(xié)方差矩陣對角化

根據(jù)上述推導,我們發(fā)現(xiàn)要達到優(yōu)化目前,等價于將協(xié)方差矩陣對角化:即除對角線外的其它元素化為0,并且在對角線上將元素按大小從上到下排列,這樣我們就達到了優(yōu)化目的。這樣說可能還不是很明晰,我們進一步看下原矩陣與基變換后矩陣協(xié)方差矩陣的關(guān)系:

設(shè)原始數(shù)據(jù)矩陣X對應的協(xié)方差矩陣為C,而P是一組基按行組成的矩陣,設(shè)Y=PX,則Y為X對P做基變換后的數(shù)據(jù)(Y是一個對角矩陣)。設(shè)Y的協(xié)方差矩陣為D,我們推導一下D與C的關(guān)系:

現(xiàn)在事情很明白了!我們要找的P不是別的,而是能讓原始協(xié)方差矩陣對角化的P。換句話說,優(yōu)化目標變成了尋找一個矩陣P,滿足PCP^T是一個對角矩陣,并且對角元素按從大到小依次排列,那么P的前K行就是要尋找的基,用P的前K行組成的矩陣乘以X就使得X從N維降到了K維并滿足上述優(yōu)化條件。

至此,我們離“發(fā)明”PCA還有僅一步之遙!

現(xiàn)在所有焦點都聚焦在了協(xié)方差矩陣對角化問題上,有時,我們真應該感謝數(shù)學家的先行,因為矩陣對角化在線性代數(shù)領(lǐng)域已經(jīng)屬于被玩爛了的東西,所以這在數(shù)學上根本不是問題。

由上文知道,協(xié)方差矩陣C是一個是對稱矩陣,在線性代數(shù)上,實對稱矩陣有一系列非常好的性質(zhì):

1)實對稱矩陣不同特征值對應的特征向量必然正交。

2)設(shè)特征向量λ重數(shù)為r,則必然存在r個線性無關(guān)的特征向量對應于λ,因此可以將這r個特征向量單位正交化。

由上面兩條可知,一個n行n列的實對稱矩陣一定可以找到n個單位正交特征向量,設(shè)這n個特征向量為e_{1}、e_{2}、......e_{n},我們將其按列組成矩陣:

則對協(xié)方差矩陣C有如下結(jié)論:

其中Λ為對角矩陣,其對角元素為各特征向量對應的特征值(可能有重復)。

以上結(jié)論不再給出嚴格的數(shù)學證明,對證明感興趣的朋友可以參考線性代數(shù)書籍關(guān)于“實對稱矩陣對角化”的內(nèi)容。

到這里,我們發(fā)現(xiàn)我們已經(jīng)找到了需要的矩陣P:

P是協(xié)方差矩陣的特征向量單位化后按行排列出的矩陣,其中每一行都是C的一個特征向量。如果設(shè)P按照\Lambda 中特征值的從大到小,將特征向量從上到下排列,則用P的前K行組成的矩陣乘以原始數(shù)據(jù)矩陣X,就得到了我們需要的降維后的數(shù)據(jù)矩陣Y。

總結(jié)一下PCA的算法步驟:

設(shè)有m條n維數(shù)據(jù)。

1)將原始數(shù)據(jù)按列組成n行m列矩陣X

2)將X的每一行(代表一個屬性字段)進行零均值化,即減去這一行的均值

3)求出協(xié)方差矩陣C=\frac{1}{m} XX^T

4)求出協(xié)方差矩陣的特征值及對應的特征向量

5)將特征向量按對應特征值大小從上到下按行排列成矩陣,取前k行組成矩陣P

6)Y=PX即為降維到k維后的數(shù)據(jù)

三.算法實例

這里以上文提到的

為例,我們用PCA方法將這組二維數(shù)據(jù)其降到一維。

因為這個矩陣的每行已經(jīng)是零均值,這里我們直接求協(xié)方差矩陣:

然后求其特征值和特征向量,具體求解方法不再詳述,可以參考相關(guān)資料。求解后特征值為:

其對應的特征向量分別是:

其中對應的特征向量分別是一個通解,c1和c2可取任意實數(shù)。那么標準化后的特征向量為:

因此我們的矩陣P是:

可以驗證協(xié)方差矩陣C的對角化:

最后我們用P的第一行乘以數(shù)據(jù)矩陣,就得到了降維后的表示:

降維投影結(jié)果如下圖:

四.總結(jié)

根據(jù)上面對PCA的數(shù)學原理的解釋,我們可以了解到一些PCA的能力和限制。PCA本質(zhì)上是將方差最大的方向作為主要特征,并且在各個正交方向上將數(shù)據(jù)“離相關(guān)”,也就是讓它們在不同正交方向上沒有相關(guān)性。

因此,PCA也存在一些限制,例如它可以很好的解除線性相關(guān),但是對于高階相關(guān)性就沒有辦法了,對于存在高階相關(guān)性的數(shù)據(jù),可以考慮Kernel PCA,通過Kernel函數(shù)將非線性相關(guān)轉(zhuǎn)為線性相關(guān),關(guān)于這點就不展開討論了。另外,PCA假設(shè)數(shù)據(jù)各主特征是分布在正交方向上,如果在非正交方向上存在幾個方差較大的方向,PCA的效果就大打折扣了。

最后需要說明的是,PCA是一種無參數(shù)技術(shù),也就是說面對同樣的數(shù)據(jù),如果不考慮清洗,誰來做結(jié)果都一樣,沒有主觀參數(shù)的介入,所以PCA便于通用實現(xiàn),但是本身無法個性化的優(yōu)化。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容