主成分分析

Principal components analysis
來源:http://blog.csdn.net/m0_37788308/article/details/78115209

  我們在作數據分析處理時,數據往往包含多個變量,而較多的變量會帶來分析問題的複雜性。主成分分析(Principal components analysis,以下簡稱PCA)是一種通過降維技術把多個變量化爲少數幾個主成分的統計方法,是最重要的降維方法之一。它可以對高維數據進行降維減少預測變量的個數,同時經過降維除去噪聲,其最直接的應用就是壓縮數據,具體的應用有:信號處理中降噪,數據降維後可視化等。 
  PCA把原先的n個特徵用數目更少的m個特徵取代,新的m個特徵一要保證最大化樣本方差,二保證相互獨立的。新特徵是舊特徵的線性組合,提供一個新的框架來解釋結果。接下來分四部分來展開PCA的理論與實踐:

• 什麼時候用PCA,即數據特點;

• 什麼是主成分分析、主成分計算;

• 主成分分析爲什可以,即主成分理論基礎;

• python如何快速實現PCA;

一、數據特點
1.維度災難

  維度災難,簡單來說就是變量的個數多。如果變量個數增加,隨之需要估計的參數個數也在增加,在訓練集保持不變的情況下待估參數的方差也會隨之增加,導致參數估計質量下降。

2.變量關係不一般。

  變量關係不一般,指的是變量彼此之間常常存在一定程度的、有時甚至是相當高的相關性,這說明數據是有冗餘的,或者說觀測數據中的信息是有重疊的,這是我們利用主成分進行降維的前提條件,也可以說這使得變量降維成爲可能(觀察變量的相關係數矩陣,一般來說相關係數矩陣中多數元素絕對值大於0.5,非常適合做主成分分析,但也不是說小於的就不可以用這種方法)。 
  在變量個數多,相互的相關性比較大的時候,我們會不會去尋找變量中的“精華”呢?,尋找個數相對較少的綜合變量呢?這是我們利用主成分降維的動機。

  可參考被博文廣傳的例子:

•比如拿到一個汽車的樣本,裏面既有以“千米/每小時”度量的最大速度特徵,也有“英里/小時”的最大速度特徵,顯然這兩個特徵有一個多餘。

• 拿到一個數學系的本科生期末考試成績單,裏面有三列,一列是對數學的興趣程度,一列是複習時間,還有一列是考試成績。我們知道要學好數學,需要有濃厚的興趣,所以第二項與第一項強相關,第三項和第二項也是強相關。那是不是可以合併第一項和第二項呢?

(爲保證公式的顯示規範,方便討論,建議至原博客網頁進行查看呦http://blog.csdn.net/m0_37788308/article/details/78115209)

二、什麼是主成分分析
1.由來:
  主成分分析(principal component analysis)由皮爾遜(Pearson,1901)首先引入,後來被霍特林(Hotelling,1933)發展了。

2. 描述;
  主成分分析是一種通過降維技術把多個變量化爲少數幾個主成分(綜合變量)的統計分析方法。這些主成分能夠反映原始變量的絕大部分信息,它們通常表示爲原始變量的某種線性組合。 
  那爲了主成分的爲了是這些主成分所含的信息不互相重疊,應要求他們之間互不相關。 
主成分的目的: 
(1)變量的降維 
(2)主成分的解釋(在主成分有意義的情況下

3.計算步驟
例子:我們簡單粗暴直接上例子,我們帶着問題看例子,一步一步來。(例子來自《應用多元統計》,王學民老師著)

  在制定服裝標準的過程中,對128名成年男子的身材進行了測量,每人測得的指標中含有這樣六項:身高(x1)、坐高(x2) 、胸圍(x3) 、手臂長(x4) 、肋圍(x5)和腰圍(x6) 。

第一步,對原始數據標準化(減去對應變量的均值,再除以其方差),並計算相關矩陣(或協方差矩陣): 
表1男子身材六項指標的樣本相關矩陣

 
第二步,計算相關矩陣的特徵值及特徵向量。 
表2的前三個特徵值、特徵向量以及貢獻率


  特徵值從大到小排列,特徵向量和特徵值對應從大到小排列。前三個主成分分別爲:
  y^1=0.469x1∗+0.404x2∗+0.394x3∗+0.408x4∗+0.337x5∗+0.427x6

  y^2=−0.365x1∗−0.397x2∗+0.397x3∗−0.365x4∗+0.569x5∗+0.308x6

  y^3=−0.092x1∗+0.613x2∗−0.279x3∗−0.705x4∗+0.164x5∗+0.119x6


第三步,根據累計貢獻率(一般要求累積貢獻率達到85%)可考慮取前面兩個或三個主成分。

第四步,解釋主成分。觀察係數發現第一主成分系數多爲正數,且變量都與身材大小有關係,稱第一主成分爲(身材)大小成分;類似分析,稱第二主成分爲形狀成分(或胖瘦成分),稱第三主成分爲臂長成分。

結合一定的經驗和猜想,解釋主成分,不是所有的主成分都能被合理的解釋

  稱第一主成分爲(身材)大小成分,稱第二主成分爲形狀成分(或胖瘦成分),稱第三主成分爲臂長成分。

可考慮取前兩個主成分。

由於λ6 非常小,所以存在共線性關係: 
λ6^=0.126

t6^=(−0.786,0.433,−0.125,0.371,0.034,0.179)

=−0.786x1∗+0.433x2∗−0.125x3∗+0.371x4∗+0.034x5∗+0.179x6∗≈0
第五步,計算主成分得分。即對每一個樣本數據標準化後帶入第三步的主成分公式中,計算第一主成分得分,第二主成分得分。

第六步,將主成分可畫圖聚類,將主成分得分看成新的因變量可線性迴歸。

例子參考《多元統計分析》王學民老師著,上海財經大學出版社

總結一下PCA的算法步驟:
  設有m條n維數據,m個樣本,對原始數據標準化(減去對應變量的均值,再除以其方差),每個樣本對應p個變量,x=(x∗1,x∗2,⋯,x∗n)′x=(x1∗,x2∗,⋯,xn∗)′。

1.求出自變量的協方差矩陣(或相關係數矩陣);

2.求出協方差矩陣(或性關係數矩陣)的特徵值及對應的特徵向量;

3.將特徵向量按對應特徵值大小從上到下按行排列成矩陣,取前k行組成矩陣aa(爲k*p維);

4.Y=aT∗XaT∗X (Y 爲k*1維)即爲降維到k維後的數據,此步算出每個樣本的主成分得分;

5.可將每個樣本的主成分得分畫散點圖及聚類,或將主成分得分看成新的因變量,對其做線性迴歸等。

4.主成分的應用
  在主成分分析中,我們首先應保證所提取的前幾個主成分的累計貢獻率達到一個較高的水平,其次對這些被提取的主成分都能夠給出符合實際背景和意義的解釋。但是主成分的解釋其含義一般多少帶有點模糊性,不像原始變量的含義那麼清楚、確切,這是變量降維過程中不得不付出的代價。因此,提取的主成分個數m通常應明顯小於原始變量個數p(除非p本身較小),否則主成分維數降低的“利”,可能抵不過主成分含義不如原始變量清楚的“弊”。 
   在一些應用中,這些主成分本身就是分析的目的,此時我們需要給前幾個主成分一個符合實際背景和意義的解釋,以明白其大致的含義。 
  在更多的另一些應用中,主成分只是要達到目的的一箇中間結果(或步驟),而非目的本身。例如,將主成分用於聚類(主成分聚類)、迴歸(主成分迴歸)、評估正態性、尋找異常值,以及通過方差接近於零的主成分發現原始變量間的多重共線性關係等,此時的主成分可不必給出解釋。

三、主成分爲什麼可以?(主成分的原理)
小節內容有:.PCA理論基礎:方差最大理論、方差最大和協方差的關係、解釋方差最大和主成分的關係、貢獻率和累計貢獻率概念、主成分取多少個呢?、幾何意義。
   經過主成分在壓縮數據之後的數據(主成分得分數據),多個變量變爲更少的綜合變量,變量個數減少了,還能反映原有數據的信息嗎?答案是可以的。爲什麼可以呢?解決以上疑問前我們需要了解PCA理論基礎:

1.PCA理論基礎:方差最大理論
  我們以一個二維數據爲例: 
 
圖1:尋找主成分的正交旋轉 
將二維,降至一維 
• a二維經過投影,變爲一維; 
• b要儘可能保留原始信息。直觀的感受就是投影之後儘量分散,點分佈差異相對較大,沒有相關性。(相反的極端情況是投影后聚成一團,變量間的差別小,蘊含的信息就少了)所以樣本間有變化,纔有更多信息,變化就是差異; 
• c如何體現差異呢?,可量化的方差。這就需要找一個方向使得投影后它們在投影方向上的方差儘可能達到最大,即在此方向上所含的有關原始信息樣品間的差異信息是最多的; 
• d降維在線性空間中就是基變換,換一種說法就是,找到一組新的基向量,在此向量空間上進行投影。在圖中原本的基向量是(0,1),(1,0),現在基向量換成在橫貫1,3象限的那條,爲什麼不選橫貫2,4象限的呢,思考②條。

我們由二維空間向一維空間的轉換,如何才能儘可能的保留信息呢,這就需要找一個方向使得投影后它們在投影方向上的方差儘可能達到最大,即在此方向上所含的有關原始信息樣品間的差異信息是最多的。


1.我們由二維空間向一維空間的轉換,如何才能儘可能的保留信息呢,這就需要找一個方向使得投影后它們在投影方向上的方差儘可能達到最大,即在此方向上所含的有關原始信息樣品間的差異信息是最多的。
(再問一遍:小夥伴會不會有爲什麼是方差最大的疑惑呢?從數據體現信息的多少出發。極端的情況是樣本數據都是相同的,那就沒有更多信息了。所以樣本間有變化,纔有更多信息,變化就是差異,差異就用方差體現)

2.方差最大和協方差的關係
   要解釋方差最大和主成分的關係需要從方差和協方差的關係入手:

  設對原始數據標準化,減去對應變量的均值,再除以其方差,每個樣本對應P個變量,設x=(x1,x2,⋯,xp)′x=(x1,x2,⋯,xp)′爲P維隨機變量,u=E(x),∑=V(x)u=E(x),∑=V(x),找其線性組合,即綜合變量,進行線性變換:


  首先,我們試圖用綜合變量y1y1來代表原始的P個變量,爲使y1y1,在 x1,x2,⋯,xnx1,x2,⋯,xn的一切線性組合中最大限度的保留這組變量的信息,應使其方差最大化。在a1′a1=1的約束下,尋找a1,使得 
V(y1)=a1′∑a1, 
達到最大,就稱爲第一主成分。協方差矩陣 : 
∑=V(x)

爲對稱的,進行對稱矩陣的譜分解,分解後的對角矩陣元素λi,tiλi,ti都有着特殊的含義,即特徵值和對應的特徵向量。 
譜分解: 

3. 解釋方差最大和主成分的關係:

  計算要知道,T爲正交矩陣。t爲特徵向量,T’T爲1;a’t是一個數,不是向量;a’a已經設定爲1,本人第一次看好多遍無果,想到前面一句後才順利的推導上面的式子。
  直接驗證,當取a1=t1時,有t′1∑t1=t′1(λ1t1)=λ1,即此時y1=t′1x,具有最大方差值λ1。 
   如果第一主成分信息不夠多,還不足以代表原始的p個變量,則需要再考慮第二主成y2,爲了使與y2所含的信息與y1不重疊,要求第一主成分與第二主成分不相關 ,cov(y1,y2)=0。這裏的重疊是指線性關係上的,如果有重疊則說明還有進一步降維的空間。 
  第二主成分的推理於第一主成分類似,可得到y2=t′2x,具有方差值λ2。 
推理點撥:考慮到不同特徵值的特徵向量正交,相乘爲0,推理亦是會暢通。

4、 貢獻率和累計貢獻率概念:
  從上面的推導,我們也可以發現特徵值和主成分方差的關係,總方差中屬於第i主成分yi的比例爲

稱爲主成分yi的貢獻率。累計貢獻率就是多個主成分貢獻率的加和啦。
5、主成分取多少個呢?
  可人爲指定固定個數,但是往往取相對於變量個數p較小的m個,使得累計貢獻達到一個較高的百分比(80%——90%),此時y1,y2,y2……,ym可以來代替x1,x2,x3……xp,從而達到降爲的目的,而信息的損失卻不多。

6、幾何意義
  通過第三部分的計算過程,假設我們得到所有的主成分: 
y1,y2,y3,⋯,ypy1,y2,y3,⋯,yp,aiai爲特徵向量.在“方差最大和協方差的關係”小節內容中的的線性變換,是一個正交變換。 
  主成分幾何意義是將原由(x1,x2,x3……xp)′構成的原p維RP空間的座標軸作一正交旋轉,,一組正交單位向量(t1,t2,⋯,tp)(t1,t2,⋯,tp)表明了p個新座標軸的方向,這些新的座標軸彼此仍保持正交,yi是在ti上的投影值,λiλi反映了在t1上投影點的分散程度。

四、如何實現
  內部服務器博客,或者CSDN 雲南省高校數據化運營管理工程研究中心的博客.

1.我們可以按步編程(見程序《PCA算法 python實現(法一)一步一步實現》) 
http://blog.csdn.net/m0_37788308/article/details/78115229

2.快速代碼實現(《PCA python實現(法2)scikit-learn 快速實現》) 
http://blog.csdn.net/m0_37788308/article/details/78115229

sklearn官方文檔地址:http://scikit-learn.org/stable/modules/generated/sklearn.decomposition.PCA.html
 

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