熱線電話:13121318867

登錄
首頁精彩閱讀簡單易學的機器學習算法—SVD奇異值分解
簡單易學的機器學習算法—SVD奇異值分解
2017-03-24
收藏

簡單易學的機器學習算法—SVD奇異值分解

一、SVD奇異值分解的定義
    假設M是一個的矩陣,如果存在一個分解:

其中的酉矩陣,的半正定對角矩陣,的共軛轉置矩陣,且為的酉矩陣。這樣的分解稱為M的奇異值分解,對角線上的元素稱為奇異值,稱為左奇異矩陣,稱為右奇異矩陣。
二、SVD奇異值分解與特征值分解的關系

特征值分解與SVD奇異值分解的目的都是提取一個矩陣最重要的特征。然而,特征值分解只適用于方陣,而SVD奇異值分解適用于任意的矩陣,不一定是方陣。

這里,是方陣,為單位矩陣,特征向量,特征向量。特征值為M的奇異值的平方。
三、SVD奇異值分解的作用和意義
    奇異值分解最大的作用就是數據降維,當然,還有其他很多的作用,這里主要討論數據的降維,對于的矩陣m,進行奇異值分解

取其前r個非零奇異值,可以還原原來的矩陣M,即前R個非零奇異值對應的奇異向量代表了M矩陣的主要特征??梢员硎緸?br />
五、實驗的仿真
    我們在手寫體上做實驗,原始矩陣為

原始矩陣
對應的圖像為

對應圖像
經過SVD分解后的奇異值矩陣為

部分奇異值矩陣
取前14個非零奇異值

前14個非零奇異值
還原原始矩陣B,還原后的圖像為

還原后的圖像
對比圖像

對比圖像
MATLAB代碼
[plain] view plain copy
%% 測試奇異值分解過程  
load data.mat;%該文件是做好的一個手寫體的圖片  
B = zeros(28,28);%將行向量重新轉換成原始的圖片  
  數據分析師培訓
for i = 1:28  
    j = 28*(i-1)+1;  
    B(i,:) = A(1,j:j+27);  
end  
 
%進行奇異值分解  
[U S V] = svd(B);  
 
%選取前面14個非零奇異值  
for i = 1:14  
    for j = 1:14  
        S_1(i,j) = S(i,j);  
    end  
end  
 
%左奇異矩陣  
for i = 1:28  
    for j = 1:14  
        U_1(i,j) = U(i,j);  
    end  
end  
 
%右奇異矩陣  
for i = 1:28  
    for j = 1:14  
        V_1(i,j) = V(i,j);  
    end  
end  
 
B_1 = U_1*S_1*V_1';  
 
%同時輸出兩個圖片  
subplot(121);imshow(B);  
subplot(122);imshow(B_1); 

數據分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數據分析師資訊
更多

OK
客服在線
立即咨詢
日韩人妻系列无码专区视频,先锋高清无码,无码免费视欧非,国精产品一区一区三区无码
客服在線
立即咨詢