(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對應的...