主成分分析(PCA)與資料白化

2021-09-23 14:36:04 字數 1759 閱讀 2767

matlab 例項

1.影象載入 12x12 的patch,共10000個,轉換為 144x10000的矩陣,即資料是144維

x = sampleimagesraw();

隨機顯示200個影象塊,如下圖:

2.零均值化

meanval = mean(x);

x = bsxfun(@minus,x,meanval);

此時 x

為零均值資料

3.求協方差矩陣,並對協方差矩陣進行奇異值分解,再對資料進行特徵向量投影

xrot = zeros(size(x)); 

[u,d] = svd(x*x'/size(x,2)); 

xrot = u' * x;

4.pca 檢測,計算協方差矩陣

covar = zeros(size(x, 1)); 

covar = xrot*xrot'/size(xrot,2);

此時的協方差矩陣為144x144的矩陣,顯示為影象如下:

對角線為資料的自相關,也就是方差,值最大,所以顏色最亮,兩邊為協方差,值比較小,故顏色較暗,這裡為藍色。

5. 尋找能夠保留90%方差的最小 k

值k = 0; 

dval = diag(d); % 列向量

sumdval = sum(dval);

kp = 0;

while kp<0.9

k = k+1;

kp = sum(dval(1:k)) / sumdval;

end此時 k為43,當設定為保留 99% 的方差時,k為116.

6. pca降維

xhat = zeros(size(x));  

xhat = u(:,1:k) * xrot(1:k,:);

將 144維的資料降維到43維,並用43維資料還原影象如下:

7. pca白化與規則化

epsilon = 0.1;

xpcawhite = zeros(size(x));

xpcawhite =  bsxfun(@rdivide,xrot,sqrt((dval+epsilon)));

8. 檢測pca白化是否正確,計算協方差矩陣並顯示

covar = xpcawhite * xpcawhite' / size(xpcawhite,2);

白化後的協方差矩陣影象如下:

如果沒有進行規則化,也就是我們將 ϵ

設定為0,此時白化後的協方差矩陣如下圖:

9.zca白化

xzcawhite = zeros(size(x));

xzcawhite = u*xpcawhite;

zca白化後影象如下:

pca主成分分析 PCA主成分分析(中)

矩陣 matrix,很容易讓人們想到那部著名的科幻電影 駭客帝國 事實上,我們又何嘗不是真的生活在matrix中。機器學習處理的大多數資料,都是以 矩陣 形式儲存的。矩陣是向量的組合,而乙個向量代表一組資料,資料又是多維度的。比如每個人的都具有身高 體重 長相 性情等多個維度的資訊資料,而這些多維度...

主成分分析PCA

主要參考這篇文章 個人總結 pca是一種對取樣資料提取主要成分,從而達到降維的目的。相比於上篇文章介紹到的svd降維不同,svd降維是指減少資料的儲存空間,資料的實際資訊沒有缺少。個人感覺pca更類似與svd的去噪的過程。pca求解過程中,涉及到了svd的使用。針對資料集d 假設di 的維度為 w ...

PCA 主成分分析

在進行影象的特徵提取的過程中,提取的特徵維數太多經常會導致特徵匹配時過於複雜,消耗系統資源,不得不採用特徵降維的方法。所謂特徵降維,即採用乙個低緯度的特徵來表示高緯度。將高緯度的特徵經過某個函式對映至低緯度作為新的特徵。pca和lda區別 pca是從特徵的角度協方差角度 求出協方差矩陣的特徵值和特徵...