免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
PCA算法學(xué)習(xí)

 

  前言

  在前面的博文PCA算法學(xué)習(xí)_1(OpenCV中PCA實現(xiàn)人臉降維)中已經(jīng)初步介紹了PCA算法的大概流程及在人臉降維上面的應(yīng)用。本文就進(jìn)一步介紹下其理論基礎(chǔ)和matlab的實現(xiàn)(也是網(wǎng)上學(xué)者的代碼)。

  開發(fā)環(huán)境:Matlab2012a

 

  基礎(chǔ)

  假設(shè)X是一個m*n的矩陣,是由樣本數(shù)據(jù)構(gòu)成的矩陣。其中m表示樣本的屬性維數(shù),n表示樣本的個數(shù)?,F(xiàn)在要對X進(jìn)行線性變換變成另一個矩陣Y,使得Y的協(xié)方差矩陣為對角矩陣,這樣的Y就認(rèn)為是對原始矩陣X提取主成分后的矩陣,實際過程中只需取Y的前面主要的行即可。

  X變換到Y(jié)的線性變換公式為:

  

  X和Y的協(xié)方差計算方法為:

  

  

  從下面的公式可以看出Cy和Cx的關(guān)系為:

  

  因為Cx是對稱矩陣,對Cx進(jìn)行特征值分解就可以將其變換成對角矩陣,見下面的公式推導(dǎo):

   

  公式中的P和E滿足:

   

  其中D是由Cx的特征向量構(gòu)成的對角矩陣。P是線性變換矩陣,P的每一行都是Cx矩陣的特征向量,且P是正交矩陣,一般情況下把特征值大的特征向量排在矩陣前面幾行。

  由此可知,求出P后就可以求出X主成分矩陣了。

  另外,還可以求出PCA的白化矩陣,PCA的白化矩陣就是特征向量去相關(guān)的矩陣,白化矩陣的協(xié)方差陣一般為單位矩陣,在PCA中可以這么求:inv(sqrt(D))*E'。普通的PCA算法可以將輸入矩陣X變成主成分矩陣Y,盡管Y的協(xié)方差矩陣是個對角矩陣,但不一定是單位矩陣,如果對Y繼續(xù)使用白化操作,則Y的協(xié)方差矩陣就變成了單位矩陣了。

 

  源碼

  該pca函數(shù)接口形式為:

[Y,V,E,D] = pca(X)

  其中X為輸入數(shù)據(jù),X的每一列是一個輸入樣本。返回值Y是對X進(jìn)行PCA分析后的投影矩陣。V是與X有關(guān)的協(xié)方差矩陣特征向量的白化矩陣,E是對應(yīng)的特征向量(列)構(gòu)成的矩陣,D是對應(yīng)的特征值構(gòu)成的對角矩陣(特征值處于對角線上)。返回值中的白化矩陣,特征向量和特征值都是按照對應(yīng)特征值大小進(jìn)行排序后了的。

  其matlab源碼如下:

function [Y,V,E,D] = pca(X)% do PCA on image patches%% INPUT variables:% X                  matrix with image patches as columns%% OUTPUT variables:% Y                  the project matrix of the input data X without whiting% V                  whitening matrix% E                  principal component transformation (orthogonal)% D                  variances of the principal components%去除直流成分X = X-ones(size(X,1),1)*mean(X);% Calculate the eigenvalues and eigenvectors of the new covariance matrix.covarianceMatrix = X*X'/size(X,2); %求出其協(xié)方差矩陣%E是特征向量構(gòu)成,它的每一列是特征向量,D是特征值構(gòu)成的對角矩陣%這些特征值和特征向量都沒有經(jīng)過排序[E, D] = eig(covarianceMatrix); % Sort the eigenvalues  and recompute matrices% 因為sort函數(shù)是升序排列,而需要的是降序排列,所以先取負(fù)號,diag(a)是取出a的對角元素構(gòu)成% 一個列向量,這里的dummy是降序排列后的向量,order是其排列順序[dummy,order] = sort(diag(-D));E = E(:,order);%將特征向量按照特征值大小進(jìn)行降序排列,每一列是一個特征向量Y = E'*X;d = diag(D); %d是一個列向量%dsqrtinv是列向量,特征值開根號后取倒,仍然是與特征值有關(guān)的列向量%其實就是求開根號后的逆矩陣dsqrtinv = real(d.^(-0.5)); Dsqrtinv = diag(dsqrtinv(order));%是一個對角矩陣,矩陣中的元素時按降序排列好了的特征值(經(jīng)過取根號倒后)D = diag(d(order));%D是一個對角矩陣,其對角元素由特征值從大到小構(gòu)成V = Dsqrtinv*E';%特征值矩陣乘以特征向量矩陣

 

 

 

 

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
PCA數(shù)學(xué)原理
機(jī)器學(xué)習(xí) | SVD矩陣分解算法,對矩陣做拆分,然后呢?
特征值和相似對角化
(轉(zhuǎn))Matlab做PCA分析(需要matlab2010b )
機(jī)器學(xué)習(xí)中的數(shù)學(xué)(4)-線性判別分析(LDA), 主成分分析(PCA)
特征值與特征向量:信號處理中的應(yīng)用
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服