小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

【簡化數(shù)據(jù)】奇異值分解(SVD)

 心不留意外塵 2016-03-28

from http://blog.csdn.net/u012162613/article/details/42214205

2014-12-28 15:28  

目錄(?)[+]

【簡化數(shù)據(jù)】奇異值分解(SVD)

@author:wepon

@blog:http://blog.csdn.net/u012162613/article/details/42214205


1、簡介

奇異值分解(singular Value Decomposition),簡稱SVD,線性代數(shù)中矩陣分解的方法。假如有一個矩陣A,對它進行奇異值分解,可以得到三個矩陣:


這三個矩陣的大小:


矩陣sigma(即上圖U和V中間的矩陣)除了對角元素不為0,其他元素都為0,并且對角元素是從大到小排列的,前面的元素比較大,后面的很多元素接近0。這些對角元素就是奇異值。

sigma中有n個奇異值,但是由于排在后面的很多接近0,所以我們可以僅保留比較大的r個奇異值:



實際應用中,我們僅需保留著三個比較小的矩陣,就能表示A,不僅節(jié)省存儲量,在計算的時候更是減少了計算量。SVD在信息檢索(隱性語義索引)、圖像壓縮、推薦系統(tǒng)、金融等領域都有應用。


在上一篇文章



2、在python中使用SVD

numpy中的linalg已經(jīng)實現(xiàn)了SVD,可以直接調用

[python] view plain copy
  1. >>> A=mat([[1,2,3],[4,5,6]])  
  2. >>> from numpy import linalg as la  
  3. >>> U,sigma,VT=la.svd(A)  
  4. >>> U  
  5. matrix([[-0.3863177 , -0.92236578],  
  6.         [-0.92236578,  0.3863177 ]])  
  7. >>> sigma  
  8. array([ 9.508032  ,  0.77286964])  
  9. >>> VT  
  10. matrix([[-0.42866713, -0.56630692, -0.7039467 ],  
  11.         [ 0.80596391,  0.11238241, -0.58119908],  
  12.         [ 0.40824829, -0.81649658,  0.40824829]])  

有一點需要注意,sigma本來應該跟A矩陣的大小2*3一樣,但linalg.svd()只返回了一個行向量的sigma,并且只有2個奇異值(本來應該有3個),這是因為第三個奇異值為0,舍棄掉了。之所以這樣做,是因為當A是非常大的矩陣時,只返回奇異值可以節(jié)省很大的存儲空間。當然,如果我們要重構A,就必須先將sigma轉化為矩陣。



推薦文章,也是本文參考的一篇文章:機器學習中的數(shù)學(5)-強大的矩陣奇異值分解(SVD)及其應用

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多