主成分分析理論與MATLAB實現示例

2021-08-07 17:39:29 字數 1665 閱讀 2621

(x,

y)座標來描述,但是實際上對於這個資料結構,我們只要知道點在斜線上的位置,比如到原點的距離,就可以間接地確定點的座標。事實上,上面的過程就把二維的資料(x

,y) 轉變為了一維(點到原點的距離)。對於有幾百上千個分量的資料,我們同樣可以通過選取某些「主成分」來代表這些高維資料,自然地我們希望這些主成分能夠盡可能多的表示出原本資料的資訊。

接著上面的思想,我們將面對三個問題:

1:當資料很集中時,比如說都在乙個點的小鄰域內,資料之間差別很小,此時的資料除了體現出乙個總體趨勢(均值)外,沒有產生其他資訊,而如果資料是分散開的,那麼就認為它帶來了較多的資訊。因此在主成分分析中,我們選取資料的方差來表示所攜帶的資訊量。此外方差還有乙個性質:資料的方差等於資料每個座標上的方差之和。

2:無疑,對一組座標進行變換有很多種方法,主成分分析提供的便是最常見的線性變換,各個主成分也就是變換後的座標。進一步地,我們希望不同的「主成分」代表不同的資訊,或者說,他們之間是「無關的」,即各個座標的變換之間是相互正交的。到這裡,我們很容易想到正交變換,正交變換除了能滿足上面的要求時,還保持了變換前後方差不變(這是因為方差依賴於距離,而正交變換是保距離的),因此正交變換是乙個十分合理的選擇。

3:在第乙個問題中我們就指出了,我們選取方差作為資訊的度量,因此,要盡可能多的獲得資訊,換成數學語言,就是如下的優化問題:

設我們有資料xi

=(xi

(0),

⋯,xi

(m))

∈rm,

i=1,

⋯,n,

x=(x

1;⋯;

xn)∈

rn∗m

,最大化方差:

max|p|

=1∑i

=1n(

p⋅xt

i−p⋅

x¯¯¯

¯¯¯¯

¯)2/

(n−1

) 其中|

p|=1

是正交變換的要求,

p 就是從原座標變換到新的第乙個座標的變換係數。如果我們提前為了便捷起見,將資料減去均值xi

:=xi−

x¯¯¯

處理,這樣就成了

max|p|

=1∑i

=1n(

p⋅xt

i)2/

(n−1

)=∑i

=1np

⋅(xt

i⋅xi

)⋅pt

/(n−

1)=p

⋅(∑i

=1nx

ti⋅x

i)⋅p

t/(n

−1)=

p⋅a⋅

pt其中a=

(∑ni

=1xt

i⋅xi

)/(n

−1) ,其實它就是(x

(:,1

),⋯,

x(:,

m)) 的協方差矩陣

x 中一行代表乙個樣本此處是取各列),這個結果用定義就可以驗證。於是我們的優化最終化為:

max|p|

=1pa

pta 矩陣是上述的協方差矩陣。

這是乙個很常規的條件極值問題,我們可以用lagrange乘子法進行求解:

主成分分析Matlab實現

資料匯入及處理 clcclear all a xlsread coach.xlsx b2 h16 資料標準化處理 a size a,1 b size a,2 for i 1 b sa i a i mean a i std a i end 計算相關係數矩陣的特徵值和特徵向量 cm corrcoef s...

Matlab 主成分分析(PCA)

是一種資料降維方法。保留具有代表性的主成分,捨棄比重較小的成分。演算法步驟 matlab 實現 clear all close all clc load data.mat m,n size x step1 預處理資料。均值標準化 零均值 特徵縮放 x x repmat mean x 50,1 s s...

MATLAB實現主成分分析 PCA

function ds,com num,pv,new score,new score s pca dr a,t pca dr 主成分降維及分析函式 輸入變數 a 原始資料 未標準化處理 t 設定累積貢獻率的閾值 輸出變數 ds 特徵值及貢獻率 com num 閾值t對應的主成分數 pv 閾值t對應的...