PCA協方差矩陣之主成分分析

2022-10-10 09:12:02 字數 1454 閱讀 8493

將這些樣本組織成樣本矩陣的形式,即每行為乙個樣本,每一列為乙個維度,得到樣本矩陣。我們先將樣本進行中心化,即保證每個維度的均值為零,只需讓矩陣的每一列除以對應的均值即可。很多演算法都會先將樣本中心化,以保證所有維度上的偏移都是以零為基點的。

然後,對樣本

矩陣計算其協方差矩陣,按照《**協方差矩陣》裡末尾的update,我們知道,協方差矩陣可以簡單的按下式計算得到:

下面,根據我們上文的推理,將協方差矩陣c對角化。注意到,這裡的矩陣c是是對稱矩陣,對稱矩陣對角化就是找到乙個正交矩陣p,滿足:。具體操作是:先對c進行特徵值分解,得到特徵值

矩陣(對角陣)即為,得到特徵向量矩陣並正交化即為。顯然,。假如我們取最大的前p(p實際上,這個新的特徵向量矩陣就是投影矩陣,為什麼這麼說呢?假設pca降維後的樣本矩陣為,

顯然,根據pca的目的,中的各個維度間的協方差基本為零,也就是說,的協方差矩陣應該為。

即滿足:

而我們又有公式:

代入可得:

由於樣本矩陣的每一行是乙個樣本,特徵向量矩陣的每一列是乙個特徵向量。右乘相當

於每個樣本以的特徵向量為基進行線性變換,得到的新樣本矩陣中每個樣本的維數變為

了p,完成了降維操作。實際上,中的特徵向量就是低維空間新的座標系,稱之為「主成分」。這就

是「主成分分析」的名稱由來。同時,的協方差矩陣為近對角陣,說明不同維度間已經基本獨立,噪

聲和冗餘的資料已經不見了。至此,整個pca的過程已經結束,小小總結一下:

1. 形成樣本矩陣,樣本中心化

2. 計算樣本矩陣的協方差矩陣

3. 對協方差矩陣進行特徵值分解,選取最大的p個特徵值對應的特徵向量組成投影矩陣

4. 對原始樣本矩陣進行投影,得到降維後的新樣本矩陣

matlab中pca實戰

首先,隨機產生乙個10*3維的整數矩陣作為樣本集,10為樣本的個數,3為樣本的維數。

s = fix(rand(10,3)*50);

為了驗證,我們呼叫matlab自帶的主成分分析函式princomp:

[coeff,score] = princomp(s) % coeff表示投影矩陣,score表示投影後新樣本矩陣

對比,可以發現,score和s1在不考慮維度順序和正負的情況下是完全吻合的,之所以我們計算的s1的維度順序不同,是因為通常都是將投影矩陣p按能量(特徵值)的降序排列的,而剛才我們用eig函式得到的結果是公升序。另外,在通常的應用中,我們一般是不使用matlab的princomp函式的,因為它不能真正的降維(不提供相關引數,還是我沒發現?)。

一般情況下,我們都是按照協方差矩陣分解後特徵值所包含的能量來算的,比如取90%的能量,那就從最大的特徵值開始加,一直到部分和佔特徵值總和的90%為止,此時部分和含有的特徵值個數即為p。

經過了一番推公式加敲**的過程,相信大家對主成分分析應該不陌生了吧,同時對協方差矩陣也有了更深層次的認識了吧,它可不只是花花槍啊。我個人覺得pca在數學上的理論還是很完備的,想必這也是它能在多種應用中博得鰲頭的原因吧。