主成分分析法詳解(PCA)

引用:http://www.javashuo.com/article/p-cjkvrihl-ne.html算法

將n維特徵映射到k維上,只保留包含絕大部分方差的維度特徵,而忽略包含方差幾乎爲0的特徵維度,實現對數據特徵的降維處理。ui

PCA算法有兩種實現方法:基於特徵值分解協方差矩陣實現PCA算法、基於SVD分解協方差矩陣實現PCA算法。spa

 

針對第一種方案基於特徵值分解協方差,步驟爲:

1:對原始矩陣X進行去平均值.net

2:求原始矩陣的協方差blog

3:根據協方差矩陣計算特徵值和對應的特徵向量和標準化特徵向量排序

4:根據特徵值,將對應的標準化特徵向量進行排序,每一個特徵向量寫做行向量Pip

5:最終降維結果:Y=Pk*Xget

如計算:

1首先去平均值,每一位特徵減去各自的平均值。平均值爲0,減0仍爲原值。class

2以後計算協方差,。得協方差矩陣。引用

3而後根據0,求得(5/6-λ)^2=16/25。求得λ:。根據,得當λ=2,X1=X2。令X1=1,則X2=1,特徵向量P1=[1;1],同理,P2=[1;-1].而後求出P1和P2的標準特徵向量。組成P。

4根據特徵值,進行排序並寫做行向量:,降到1維,則取第一行

5最終降維

 

 

針對第二種方案基於SVD分解協方差:

 

1:對原始矩陣X進行去平均值

2:根據SVD計算特徵值和對應的特徵向量和標準化特徵向量

3:根據特徵值,將對應的標準化特徵向量進行排序,每一個特徵向量寫做行向量P

4:最終降維結果:Y=Pk*X

選擇左奇異矩陣,進行使用,而後求得協方差矩陣的特徵值與特徵向量。

引用:https://link.zhihu.com/?target=https%3A//mp.weixin.qq.com/s/Dv51K8JETakIKe5dPBAPVg

SVD分解的算法過程爲:

針對任意矩陣A,分解爲:。U爲A的行爲參照的方陣,爲左奇異矩陣。Σ和A的行列相同,除了對角線其它元素都爲0。V爲A的列爲參照的方陣,爲右奇異矩陣。

分解的步驟爲:

1求出:,設爲M,做爲U的計算準備。,設爲N做爲V的計算準備。

2針對M矩陣求出特徵值,特徵向量。針對N矩陣求出特徵值,特徵向量。並將所求特徵向量標準化爲ui和vi。

3利用根據ui和vi求出σ的全部值。

4將全部值進行歸併,求出表達式。並利用U得到原始A的特徵值,特徵向量。

 

例如:計算

使用MATLAB的算法:

clear all,clc;
A=[[-1,1];[-2,-1];[-3,-2];[1,1];[2,1];[3,2]];
A_mean=A-mean(A);#去平均值
A_div=A_mean;
M=A_div'*A_div;
N=A_div*A_div';
[M_vector,M_val]=eig(M);
[N_vector,N_val]=eig(N);

M_vector=fliplr(M_vector);
N_vector=fliplr(N_vector);
%M_vector=flipud(M_vector)
%N_vector=flipud(N_vector)

M_val=diag(M_val);
N_val=diag(N_val);
M_val=flipud(M_val)
N_val=flipud(N_val)

theta1=sqrt(M_val(1));
theta2=sqrt(M_val(2));
cgma=zeros(size(A));
cgma(1,1)=theta1;
cgma(2,2)=theta2;
%-(N_vector*cgma*M_vector')
-N_vector*cgma

  取第一列即得到了降維哦!

相關文章
相關標籤/搜索