http://blog.csdn.net/lin360580306/article/details/51255285
2016.04
主成分分析(PCA)是一個(gè)被廣泛用于降維、有損數(shù)據(jù)壓縮、特征提取和數(shù)據(jù)可視化的技術(shù)。PCA有兩種常用的定義,分別是從最大化投影后數(shù)據(jù)的方差和最小化投影后數(shù)據(jù)與原始數(shù)據(jù)之間的誤差兩個(gè)角度考慮的。兩個(gè)定義最終的結(jié)果是一致的,我們從方差最大化的角度具體討論一下PCA。
方差最大化
考慮一個(gè)觀察的數(shù)據(jù)集{xn},n=1,...,N,并且xn是一個(gè)D維的變量。當(dāng)我們從方差最大化的角度去考慮PCA的時(shí)候,我們的目標(biāo)其實(shí)是要將原始數(shù)據(jù)投影到一個(gè)低維(維數(shù)M<D)空間,并且要最大化投影后的數(shù)據(jù)的方差。為了討論的簡便,我們假設(shè)M是給定的。
首先我們考慮M=1的情況。我們用一個(gè)D維的單位向量u1來表示低維空間的方向。從原始數(shù)據(jù)到低維空間的投影可以由uT1xn來獲得。所以低維空間上數(shù)據(jù)的均值為uT1xˉ,其中xˉ=1N∑Nn=1xn,方差為1N∑Nn=1{uT1xn?uT1xˉ}2=uT1Su1。這里的S=1N∑Nn=1(xn?xˉ)(xn?xˉ)T是原始數(shù)據(jù)的協(xié)方差矩陣。
我們現(xiàn)在只需要通過改變u1來最大化uT1Su1就解決問題了,這里很容易看出來,如果u1的模沒有約束的話,這個(gè)最大化問題是沒有解的。由此也可以說明前面假設(shè)u1為單位向量是有利于問題的討論且不失一般性的。為了求解這個(gè)帶約束的優(yōu)化問題,我們引入拉格朗日乘子λ1,問題可以轉(zhuǎn)化為最大化uT1Su1+λ1(1?uT1u1)。我們可以利用求導(dǎo)數(shù)并令導(dǎo)數(shù)為0得到問題的可行解是Su1=λ1u1,這說明u1應(yīng)當(dāng)是S的特征向量。我們通過簡單變換可以得到uT1Su1=λ1。由此我們可以得出結(jié)論,如果想要最大化方差,就需要u1是最原始數(shù)據(jù)協(xié)方差矩陣的大特征值所對應(yīng)的特征向量。
對于M>1的情況,我們可以考慮是在M=1的情況下每次給低維空間添加一個(gè)與之前已有的方向向量正交的新的方向向量并且它可以最大化低維數(shù)據(jù)的方差。
所以對于一般的M,這個(gè)問題的結(jié)果應(yīng)當(dāng)是根據(jù)原始數(shù)據(jù)的協(xié)方差矩陣S的特征值從大到小選擇對應(yīng)的特征向量組成低維向量空間的方向向量。
pca的代碼實(shí)現(xiàn)
matlab已經(jīng)實(shí)現(xiàn)了pca,有以下兩個(gè)函數(shù)可以調(diào)用:
[coeff,score,latent,tsquared,explained]= pca(X) (1)[COEFF,SCORE,latent,tsquare] = princomp(X) (2)
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請
點(diǎn)擊舉報(bào)。