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是從特徵的角度協方差角度 求出協方差矩陣的特徵值和特徵...