-
主成份分析:
主成份分析是最經典的基於線性分類的分類系統。這個分類系統的最大特點就是利用線性擬合的思路把分布在多個維度的高維數據投射到幾個軸上。如果每個樣本只有兩個數據變量,這種擬合就是 其中
和
分別是樣本的兩個變量,而
和
則被稱為loading,計算出的P值就被稱為主成份。實際上,當一個樣本只有兩個變量的時候,主成份分析本質上就是做一個線性回歸。公式
本質上就是一條直線。
插入一幅圖(主成份坐標旋轉圖,來自:PLS工具箱參考手冊)
如果一個樣本有n個變量,那主成份就變為:
其中PC1 稱為第一主成份,而且,我們還可以獲得一系列與PC這個直線正交的其它軸,如:
被稱為第二主成份
以此類推,若令,
此時向量A稱為主成份的載荷(loading),計算出的主成份的值PC稱為得分(score)。
-
主成份分析舉例
作為一個典型的降維方法,主成份分析在數據降維方面非常有用,而且也是所有線性降維方法的基礎。很多時候,如果我們拿着一個非常復雜的數據不知所措的話,可以先考慮用主成份分析的方法對其進行分解,找出數據當中的種種趨勢。在這里,我們利用數據挖掘研究當中非常常見的一個數據集對主成份分析的使用舉例如下:
1996年,美國時代周刊(Times)發表了一篇關於酒類消費,心臟病發病率和平均預期壽命之間關系的科普文章,當中提到了10個國家的烈酒,葡萄酒和啤酒的人均消費量(升/年)與人均預期壽命(年)一級心臟病發病率(百萬人/年)的數據,這些數據單位不一,而且數據與數據之間僅有間接關系。因此直接相關分析不能獲得重要且有趣的結果。另外一方面,總共只有10個國家作為樣本,各種常見的抽樣和假設檢驗在這方面也沒有用武之地,我們看看用何種方法能夠從這個簡單的數據表中獲得重要知識
作為數據挖掘的第一步,首先應該觀察數據的總體分布情況。無論是EXCEL軟件,還是R語言,我們都能夠很方便的從下表中獲得表征數據分布的條形圖。
從圖中可以看出,總共10個國家,有5類數據,由於各類數據性質各不相同,因此數值上大小也很不相同。各類數據看起來分布也沒有明顯規律。如果仔細觀察,頂多能夠獲得俄國人心臟病發病率較高,捷克人啤酒消費量較高,法國人葡萄酒消費量較高這樣的一般性結論。而且由於數據性質不同,但有一些已知的重要變量,如烈性酒消費量,在圖中顯示得並不明顯。顯然,如果不進行深入的分析,只是將這些數據"畫"出來,直觀固然是直觀了(這種情況下,我們只能說數據的可視化做得很好),然而並不能幫助我們理解到數據之間的關系,並形成新的知識。
那么,我們就自己動手來對這組數據進行分析,看看會得到什么樣的
有很多軟件可以對數據進行主成份分析,從SAS,SPSS等經典統計學軟件,到R語言,MATLAB等數學分析軟件。因此,完成主成份分析並不困難,重要的是需要正確理解主成份分析的結果並且了解它對數據挖掘以及模式識別的影響。我們現在從數據本身的角度來分析主成份分析法能夠獲得的各種信息。
首先,在完成主成份分析之前,一般需要把數據進行中心化,所謂中心化,是指將所有分布的數據取消因為量綱不同,互相變異
如果完成主成份分析,我們可以得到如圖所示的表格:
Eigenvalueof Cov(X) |
% VarianceThis PC |
% VarianceCumulative |
RMSEC |
RMSECV |
2.3014 |
46.0276 |
46.0276 |
0.69696 |
1.4511 |
1.6057 |
32.1148 |
78.1424 |
0.44353 |
1.7551 |
0.58424 |
11.6847 |
89.8271 |
0.30258 |
3.6918 |
0.42221 |
8.4443 |
98.2713 |
0.12473 |
21.6468 |
0.086433 |
1.7287 |
100 |
2.861e-15 |
21.6468 |
在這個表格中,很重要的的variance this PC這個變量,這個變量代表的就是我們生成的這根主成份軸能夠代表整個數據分布多少的變化。而在上表中,第一主成份占據了46.02%的變異,第二主成份占據了32.11%的變異。這說明這些數據的分布是有規律的,在某一個方向上的投影比另外一些方向大。其中有46.02%的變異是落在第一個方向上。要理解variance this PC,我們可以看下圖:
如下圖所示:一個二維樣本,那么主成份計算公式為,它所能夠代表的數據就需要通過整理獲得一個數據結果:如果x1和x2的分布如圖所示,那么獲得的第一個主成份會占據97%以上的變異。而與之正交的第二主成份,則只可能獲得少於3%的變異,反之如圖2,則第一主成份可以代表70.3%的變異,而第二主成份(與第一主成份正交)則代表29.6%的變異。
反之我們可以想象,如果上圖的散點分布為類似隨機打靶一樣的球形,那么無論坐標軸如何旋轉,兩個主成份所占的變異依然是50%。此時進行主成份分析就沒有太大的意義。因為兩組隨機分布的數據內無法找出重要的信息。
如上所述,由於主成份本質上是一種對於數據分布的擬合,這種擬合的結果剛好在某一方面可以對數據的分布特征(特別是變異程度)進行描述,我們自然就會很感興趣主成份是如何計算出來的。在很多主成份分析里面可以導出載荷(loading)進行計算:計算結果一般可以用下表表示:
|
PC 1 (46.03%) |
PC 2 (32.11%) |
PC 3 (11.68%) |
Q Residuals (10.17%) |
HotellingT^2(89.83%) |
烈酒 |
-3.458964338207E-01 |
-5.680919448155E-01 |
0.214391080836 |
1.616237328762 |
1.953345344946 |
紅酒 |
4.450394524233E-01 |
-3.783631226272E-01 |
0.617713498575 |
0.822477146498 |
2.891154932399 |
啤酒 |
-7.396122081167E-02 |
7.244048393302E-01 |
0.424780191034 |
0.354252438668 |
2.842683376497 |
壽命預期 |
5.849799128031E-01 |
8.642298147150E-02 |
0.269427614166 |
1.422547209831 |
1.689046677538 |
心臟病 |
-5.784667512397E-01 |
4.337726017205E-02 |
0.565187622091 |
0.362301486416 |
2.623769668620 |
從圖中可以看出載荷的數量等於考察樣本的參數數量,它意味着:
這三個主成份占據了所有數據變化的90%以上的變異。
其中第一個主成份的值同葡萄酒消費量成正相關,而同啤酒和酒精消費量呈負相關,與預期壽命呈正相關,與心臟病發病呈現負相關。它意味着至少從這個數據表上來看,某個國家的葡萄酒飲酒越高,那么這個國家的預期壽命越長,心臟病發病率越低。我們不妨將其命名為健康飲酒指數。
第二主成份與酒精和葡萄酒消費量呈負相關,與啤酒消費量呈正相關。同時與預期壽命和心臟病發病率都呈現微弱的正相關。這個主成份反應的主要是某種與啤酒消費的生活習慣。說明啤酒消費可以抑制紅酒和葡萄酒消費。且啤酒消費對於健康在正面和負面的影響都不大。我們不妨將其命名為啤酒指數。
第三主成份和所有變量都呈現正相關,代表了矩陣10%所有的變異程度。實際上很可能代表的是居民的一般飲酒狀況和熱量攝入情況。可以設想,居民經濟狀況好,熱量攝入高,就更容易獲得各種酒精飲料,人均壽命也會較高,當然作為富貴病的心臟疾病發病率也會較高。我們不妨將這個成分命名為一般經濟指數。
理論上還可以提取出第四、第五成份,但是這些主成份和整個系統的變異程度關系不大,也很難說明問題。
既然獲得任何一個國家的Liquor /Wine /Beer /LifeEx /HeartD參數就可以使用上述系數做出主成份,那么我們不妨將上述每個國家的第一主成份,第二主成份計算出來,將第一主成份的值作為橫坐標,第二主成份的值作為縱坐標。這樣,10個樣本(國家)就變成了分布在平面上的10個點。這樣的根據主成份的值畫出來的圖被稱為得分圖(Score plot)。得分圖可以反映出樣本國家的區分情況。
從得分圖上可以看出,在健康飲酒指數和啤酒指數這兩個方面,各個國家還是有區別的。總體上說俄國是一個另類,在健康飲酒指數和啤酒指數上和其它國家都不太一樣。
除開俄國,捷克到法國等9個國家在得分圖上排列成一道從第二象限到第四象限的線狀結構,捷克代表高啤酒指數低健康指數,反之法國意大利則代表低啤酒指數,高健康指數。最后,美國,墨西哥,日本等國處於原點附近,說明這幾個國家的兩項指標(健康指數和啤酒指數)絕對值不大,處於各項指標的均衡狀態。
利用主成份分析的得分圖可以獲得樣本之間的信息,我們知道每個樣本都是由數個變量屬性特征構成的,如果我們想知道這些屬性特征之間的關系,則可以利用載荷圖(loading)來對圖像特征進行描述。
載荷圖本質上描述的是構成第一主成份和第二主成份的線性方程的系數,如Wine的系數就是0.45和-0.38,從主成份的計算方法可以看出,載荷的絕對值越大,對於主成份的影響就越大。而這種影響則可以通過載荷所代表的點到原點之間的距離來進行衡量。如果某個點在進行主成份分析之后位置在原點附近,則說明這個該特征屬性的波動對於樣本之間的區別貢獻不大。我們從上圖中可以看出,載荷圖上每個屬性都分布在不同的方向,這就意味着這些屬性相互之間並沒有太大的相似性。但是根據這些屬性的分布方向,我們也可以找出很多重要信息:
首先在第一主成份(橫坐標)上,預期壽命和心臟病發病率剛好處於兩級,這說明,對於健康飲酒指數來說,預期壽命和心臟病分別處於相反的兩個方向。心臟病發病率越高,預期壽命也就越低,反之亦然。而在第一主成份上,烈酒(liquor)和葡萄酒(wine)也是處在兩個相反方向。這在一定程度上說明,烈酒消費量很可能和健康負相關,而葡萄酒呈現正相關。啤酒則不太相關。當然,相關性並不等於因果性,對於這種分析,我們不能輕易的得出烈酒有可能造成預期壽命降低的結論。對於啤酒,烈性酒和葡萄酒三種酒類,它們的分布剛好在三個不同的方向上,且各自與原點的距離都非常相似,這說明這三種酒的消費量相互之間沒有相關性。根據圖上分析,我們可以得出如下結論:如果我們僅考慮這三種酒的話,三種酒的總消費量對於各個國家酒類消費總量的貢獻是差不多的。總有一種酒類會占據消費的主導性地位,且與其他兩種酒的消費無關。存在沒有特別酒類偏好的國家(如美國,墨西哥),但不存在沒有國家偏好的酒。如果某種酒沒有特別的國家偏好,世界各國消費量都差不多,那么這種酒就會分布在原點附近。
對於主成份分析的模式識別來說,當把載荷圖和得分圖結合起來的時候,我們有可能獲得更多的信息。
對於國家來說,在主成份得分圖上的分布方向代表了國家的特征,比如俄國的分布方向是左下,那么哪一類變量對於左下分布的貢獻最大?很自然,我們可以發現心臟病發病率HeartD和烈性酒消費量Liquor這兩個變量對於俄國的"離經叛道"最為重要。可以說,就是這兩個方向上的變化把俄國推離了主要國家分布。實際上這個現象也和其它的研究以及我們的直觀印象相符合,俄國人確實很喜歡喝烈性酒。利用類似的思路我們可以發現,如果一個國家的心臟病發病率較高,那么心臟病發病率就會推動該國向數軸左邊移動。反之預期壽命越長,我們可以想象有一股力把國家推向右邊。啤酒消費量則可以看成一股向上方的力量。在啤酒,葡萄酒,預期壽命三股力量的驅動下,捷克,奧地利,到法國意大利形成一個從左上到右下的趨勢。這種趨勢下壽命逐漸延長,葡萄酒消費量逐漸升高,啤酒消費量逐漸下降。當然,必須指出的是,上述趨勢依然描繪的是針對數據本身的一種相關性而非因果性分布,不能輕易得出多喝葡萄酒有利於延長壽命的結論。
在上圖中,我們還可以看到,美國,英國,奧地利以及墨西哥在得分圖上較近。從飲酒習慣上說,英美生活習慣較為接近比較好理解,但是墨西哥實際上和英美在飲酒模式上還是有重要的差別的,此時我們有兩個方法可以對墨西哥的情況進行考察,第一是加入第三主成份,將三個主成份的值放入到一個三維空間坐標中進行考察:
此時加入第三個主成份之后,我們可以發現墨西哥實際上在三維空間中與英美具有相當遠的距離。這說明單看飲酒健康指數和啤酒指數,墨西哥人與美國相似,但是,如果開始計算國民的飲酒量以及與之相關的一般經濟指數,墨西哥人就和英美具有較大的差異了。在進行主成份分析的過程中,還有一個指標可以顯示樣本距離第一主成份和第二主成份形成的平面的距離,這個指標被稱為Q殘差。
對Q殘差作圖可以得到:
從圖中可以看到,如果把第一、二主成份看成一個平面Q殘差本質上就代表各個國家在一、二主成份形成平面的距離。墨西哥離開這個平面的距離相當遠。這說明在所有考察國家當中,墨西哥由於其一般經濟情況和其它國家不太一樣,以至於第三主成份到了不得不被考察的地步了。那么讓墨西哥偏離一、二主成份平面的最主要的原因是什么呢?一方面我們可以直接去看第三主成份的系數,第三主成份是所有的值都是正值。而墨西哥在第三主成份的軸上向負方向遠離原點非常明顯,我們可以直覺墨西哥的各種值都比較低,我們也可以直接通過矩陣變換的方式由計算機計算出墨西哥的Q殘差,並發現對於墨西哥來說所有的Q殘差都是負的,這就意味着墨西哥偏離主平面的原因是它所有的值都比其他國家要小。
從上述的分析我們可以看出,主成份分析是基於線性判別的復雜模式識別的基礎。就最開始的數據表上來說,我們知道關於飲酒模式每個國家都是獨一無二的。但是我們哪怕是通過直覺也能感受得到,從酒類的消費來說.俄國人、墨西哥人和英國人美國人確實有些不一樣。熟知這些國家飲酒信息的人可以通過模糊的語言從很多方面描繪出來從而形成一種模式判別。而根據數據和基於恰當的數學分析重新理解這種模式判別則需要強有力的數學工具,主成份分析就是這樣一種數學工具。如果有一個國家在飲酒數據分布上和俄國很相似,將這個國家的數據帶入上述分析所獲得的線性方程組,計算獲得的第一、二、三主成份也會比較相似。因此我們就可以用客觀的計算代替普通人對於復雜模式進行主觀判斷。
-
主成份回歸:
了解主成份分析的基本原理之后,研究者自然可以想到,可以通過提取的主成份來和一些重要的臨床結局進行回歸。此時這種回歸的信息就有可能對復雜臨床問題的處理帶來新的知識。例如,在上面的例子中,傳統的思路是利用還原的方法分別考察某種酒的飲酒量和我們感興趣的某種臨床結局之間的的相關性。但是,如果我們能夠通過計算獲得復雜指標與臨床決策之間的關系。例如,在判斷急診病人應該接受哪一種治療方案方面,我們就可以做出如下應用:
2008年的512地震給中國西部的急診醫療途徑帶來了巨大的挑戰。在短短的數天時間內,大量的急診患者涌入成都市的各家醫院急診科。醫生在盡力救治病人的同時也積累了海量的數據。當我們拿到這些寶貴的數據的時候,我們就希望通過對這些數據的學習和挖掘得到更多的新的知識,這些新的知識有可能意味着在未來遇到上述緊急情況的時候帶來更多更好的救治措施。