主成分分析PCA的前世今生


這篇博客會以攻略形式介紹PCA在前世今生

    其實,主成分分析知識一種分析算法,他的前生:應用場景;后世:輸出結果的去向,在網上的博客都沒有詳細的提示。這里,我將從應用場景開始,介紹到得出PCA結果后,接下來的后續操作。

 

前世篇

  

我們要先從多元線性回歸開始。對圖9-3作一下多遠線性回歸

X1——總產值,X2——存儲量,X3——總消費,Y——進口總額

從最直白的講,對Y進行多元線性回歸分析,就是在X1,X2,X3前加個系數,然后總體相加的結果,越接近越好。

用R的多遠線性歸回方法分析看看:

conomy<-data.frame(
  x1=c(149.3, 161.2, 171.5, 175.5, 180.8, 190.7,202.1, 212.4, 226.1, 231.9, 239.0),
  x2=c(4.2, 4.1, 3.1, 3.1, 1.1, 2.2, 2.1, 5.6, 5.0, 5.1, 0.7),
  x3=c(108.1, 114.8, 123.2, 126.9, 132.1, 137.7,
       146.0, 154.1, 162.3, 164.3, 167.6),
  y=c(15.9, 16.4, 19.0, 19.1, 18.8, 20.4, 22.7,
      26.5, 28.1, 27.6, 26.3)
)

lm.sol <- lm(y~x1+x2+x3, data=conomy)
summary(lm.sol)

結果:

因此,通過簡單粗暴(未經刪選變量)的線性回歸分析,也可以得出結果Y=-10.12799-0.0514X1+0.58695X2+0.28685X3

但我們發現X1沒有*(sigif,*越多越好),而且X1的系數是負數,就是說國內總產值越高,進口量卻降低,

其主要原因是三個變量存在多重共線性,矩陣的行列式接近0。

所以,就引發了一個問題,如何篩選有效變量和降維,這里就要正式介紹主成分分析算法了。

 

主成分分析的今生

 Pearson於1901年提出,再由Hotelling(1933)加以發展的一種多變量統計方法

 通過析取主成分顯出最大的個別差異,也用來削減回歸分析和聚類分析中變量的數目

 可以使用樣本協方差矩陣或相關系數矩陣作為出發點進行分析

 成分的保留:Kaiser主張(1960)將特征值小於1的成分放棄,只保留特征值大於1的成分

 如果能用不超過3-5個成分就能解釋變異的80%,就算是成功

主成分實際研究的是變量與變量之間的關系,不管你有多少樣本,其相關矩陣只和樣本的維度有關。比如上例中,X1,X2,X3是維度,1~11是樣本數。主成分分析第一步獲取樣本的協方差陣:而且顯然cov(Xi,Xj)=cov(Xj,Xi)。

 

根據矩陣定理,實對角矩陣必定存在正交矩陣Q(),使得:

這里的∑即協方差矩陣。

因為我們要篩選最能表現Y的X分量,從集合意義上來說,就是找X之間差異最大的,比如要體現“人”的特點

,那么找一個黑人和一個白人的觀測值,要比找兩個白人好。而表現差異的統計量,我們在初中就接觸過,

不錯,就是方差(或標准差),接下來我們要找協方差之間差距(方差)最大的變量。

 

數學家又來刷存在感了:

                         
有上式可以推到出:

                            

這里λi就是特征值,σii就是第i個對角元素,表明特征值λ可以表示X之間的方差,即X之間的差異程度,在F1方向上的X分量最大。

好了,現在我們縷一縷思路,要找可以表示Y的最好X變量,我們現在已經找到了差距最大的兩兩X分量(λ最大),

可以把X1和X2的差距看成是在F1軸上的距離,接下來,我們要做的是把X1,X2映射(投影)到F1,F2軸上,

即用F=a1*X1+a2*X2的形式。我們驚奇的發現,a1,a2構成的向量正好就是協方差對應的特征向量!!!

 

順理成章的,我們求得特征向量A[a1,a2,a3,a4,a5……an],這里要說明的是,λ從大到小排列后,

A中的an是對應λ的特征向量。至此,關於X的主成分分析完成,找到了相互正交的特征向量A(矩陣定理:實對稱矩陣的特征向量兩兩正交)。

好的,我們用matalb和R分別實現。

matlab:

1,自己實現

A=[1 2 3 4 5
    4 2 3 6 1
     5 8 11 4 6];%自定義矩陣
 [n,p]=size(A);
AA
=cov(A)%求A的協方差矩陣
[T,lambda]
=eig(AA);%T是特征向量,lambda是特征值 lambda=diag(lambda); % p*1向量 [lambda ind]=sort(lambda,'descend');%降序排列lambda T=T(:,ind); % (fliplr) %方差貢獻率; Xsum=sum(lambda); rate=lambda/Xsum; % 累計方差貢獻率和主成分數 sumrate=0; for m=1:p sumrate=sumrate+rate(m); if sumrate>0.85 break end end
m%取前幾個主成分
 

結果:

2,用matlab自帶princecomp()函數計算

[coeff, score, latent2, tsquare] = princomp(A)
%A—原始數據或無量綱化后的數據,每一行是樣品,每一列是變量(指標)
%coeff — 是p階矩陣,每一列是主成分的系數向量,即特征值對應的標准正交向量
%score — 是p階矩陣,每個元素都是主成分的得分,第一列是第一主成分,依此類推
%latent— 特征值,按從大到小的順序排列的列向量
%tsquare — T統計量

        

結果:和我自己的T計算一致(后面三個系數不同是由於累積貢獻率不同所致),score就是用主成分反表示X,latent2是特征值,tsquare是檢驗函數,沒什么用。

 

這里補充說明:pcacov()函數.

在Matlab軟件中,進行主成分分析的命令有兩個,一個是直接對協方差矩陣進行計算,另一個是對無量綱化以后的數據矩陣進行計算.
[pc, latent, explained] = pcacov(X)
    X—(原始數據或無量綱化后的數據)的協方差矩陣
    pc — 每一列是主成分的系數向量,即特征值對應的標准正交向量
    latent— 特征值,按從大到小的順序排列的列向量
    explained— 每個特征值的方差貢獻率


[coeff, score, latent, tsquare] = princomp(X)
    X—原始數據或無量綱化后的數據,每一行是樣品,每一列是變量(指標)
    coeff — 是p階矩陣,每一列是主成分的系數向量,即特征值對應的標准正交向量
    score — 是p階矩陣,每個元素都是主成分的得分,第一列是第一主成分,依此類推
    latent— 特征值,按從大到小的順序排列的列向量
    tsquare — T統計量

 

這兩個函數就是輸入值不一樣,其實可以明顯發現:pcacov(cov(A))=princomp(A)%cov()為求A的協方差函數

R語言:

   這里繼續前文的法國經濟數據做研究。

conomy

 

conomy.pr<-princomp(~x1+x2+x3, data=conomy, cor=T)//建立模型
summary(conomy.pr, loadings=TRUE)//觀察

        

結果:staandard deviation表示標准擦,即aqrt(λ),proportion of variance表示主成分貢獻率,Cumulative Proportion是累積貢獻率。

而loadings是用主成分反表示X變量的系數,也可叫載重,在matlab中是score。我的理解就是新的主成分變量占原來變量的比重。

 

主成分分析后世

 

介紹完主成分分析,其實並沒有結束,還有最后一步,用新得到的主成分去建立多遠線性回歸(降維后)。

pre<-predict(conomy.pr)
conomy$z1<-pre[,1]; conomy$z2<-pre[,2]
lm.sol<-lm(y~z1+z2, data=conomy)
summary(lm.sol)

                              

來解釋一下Z1和Z2:

根據Z1計算的結果:

x1平均值 194.59 3.3 139.73
sd標准差 29.9999 1.6492 20.6344

再乘以主成分1的系數,正好就是-0.706*(149.3-194.59)/29.999-0.707*(108.1-139.73)/20.644=2.229.

依次類推,得到原響應變量和主成分的關系。

 

還有一步,可以進行,也可以不進行,就是通過主成分為媒介,建立yuan因變量和原自變量的關系(連乘系數即可,變回原坐標)

 

 最后補充兩個主成分分析圖:

這叫碎石圖(好逗逼的名字),橫軸是主成分的個數,縱軸是特征值。有條虛線是隨機數模擬計算出的特征值。此圖用來確定主成分個數,特征值大於1的保留,最大拐點之上的保留。

這是bi圖(名字忘了),是研究一對主成分對某個樣本的關系,箭頭長短代表着主成分矩陣系數的大小(我覺得沒什么卵用)

 

 ps:以上數據和公式摘自薛毅《機器學習》一書,部分圖像代碼參考煉數成金課程ppt。

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM