1. 程式人生 > >主成分分析方法和matlab函式中的princomp

主成分分析方法和matlab函式中的princomp

主成分分析方法

在許多實際問題中,多個變數之間是具有一定的相關關係的。因此,我們就會很自然地想到,能否在各個變數之間相關關係研究的基礎上,用較少的新變數代替原來較多的變數,而且使這些較少的新變數儘可能多地保留原來較多的變數所反映的資訊?事實上,這種想法是可以實現的,這裡介紹的主成分分析方法就是綜合處理這種問題的一種強有力的方法。

一、主成分分析的基本原理

主成分分析是把原來多個變數化為少數幾個綜合指標的一種統計分析方法,從數學角度來看,這是一種降維處理技術。假定有n個地理樣本,每個樣本共有p個變數描述,這樣就構成了一個n×p階的地理資料矩陣:

1

如何從這麼多變數的資料中抓住地理事物的內在規律性呢?要解決這一問題,自然要在

p維空間中加以考察,這是比較麻煩的。為了克服這一困難,就需要進行降維處理,即用較少的幾個綜合指標來代替原來較多的變數指標,而且使這些較少的綜合指標既能儘量多地反映原來較多指標所反映的資訊,同時它們之間又是彼此獨立的。那麼,這些綜合指標(即新變數)應如何選取呢?顯然,其最簡單的形式就是取原來變數指標的線性組合,適當調整組合係數,使新的變數指標之間相互獨立且代表性最好。

如果記原來的變數指標為x1x2xp,它們的綜合指標——新變數指標為z1z2zmm≤p)。則

2

在(2)式中,係數lij由下列原則來決定:

1)zizji≠jij=12m)相互無關;

2)z1

x1x2xp的一切線性組合中方差最大者;z2是與z1不相關的x1x2xp的所有線性組合中方差最大者;……zm是與z1z2……zm-1都不相關的x1x2xp的所有線性組合中方差最大者。

這樣決定的新變數指標z1z2zm分別稱為原變數指標x1x2xp的第一,第二,,第m主成分。其中,z1在總方差中佔的比例最大,z2z3zm的方差依次遞減。在實際問題的分析中,常挑選前幾個最大的主成分,這樣既減少了變數的數目,又抓住了主要矛盾,簡化了變數之間的關係。

從以上分析可以看出,找主成分就是確定原來變數xjj=12p)在諸主成分zii=1

2m)上的載荷liji=12mj=12p),從數學上容易知道,它們分別是x1x2xp的相關矩陣的m個較大的特徵值所對應的特徵向量。

二、主成分分析的計算步驟

通過上述主成分分析的基本原理的介紹,我們可以把主成分分析計算步驟歸納如下:

(1) 計算相關係數矩陣

3

在公式(3)中,rijij=12p)為原來變數xixj的相關係數,其計算公式為

 

因為R是實對稱矩陣(即rij=rji),所以只需計算其上三角元素或下三角元素即可。

2)計算特徵值與特徵向量

首先解特徵方程|λI-R=0求出特徵值λii=12p),並使其按大小順序排列,即λ1≥λ2≥…≥λp≥0;然後分別求出對應於特徵值λi的特徵向量eii=12p)

(2) 計算主成分貢獻率及累計貢獻率

主成分貢獻率:,累計貢獻率:

一般取累計貢獻率達85-95%的特徵值λ1λ2λm所對應的第一,第二,……,第mm≤p)個主成分。

(3) 計算主成分載荷

5

由此可以進一步計算主成分得分:

6

matlab:princomp解釋

主成分分析函式:
[coeff,score,letent]=princomp(x);
供獻率:每一維資料對於區分全部資料的供獻,供獻率最大的顯然是主成分,第二大的是次主成分......

[coefscorelatentt2] = princompx;

x:為要輸入的n維原始資料。帶入這個matlab自帶函式,將會生成新的n維加工後的資料(即score)。此資料與之前的n維原始資料一一對應。

score:生成的n維加工後的資料存在score裡。它是對原始資料進行的解析,進而在新的座標系下獲得的資料。他將這n維資料按供獻率由大到小分列。(即在改變座標系的景象下,又對n維資料排序)

latent是一維列向量,每一個數據是對應score裡響應維的供獻率,因為數佔領n維所以列向量有n個數據。由大到小分列(因為score也是按供獻率由大到小分列)。

coef:是係數矩陣。經由過程coef可以知道x是如何轉換成score的。但這個轉換不是單純的轉換,必須使用下列計算方法,即score(:,i=coef*x(:,i-meanx(:,i))),這樣才能得到。

用你的原矩陣x*coeff(:,1:n)才是你要的的新資料,其中的n是你想降到多少維。

n的取值取決於對特徵值的累計貢獻率的計算。