SVD奇異值分解 機器學習

2021-10-25 08:46:04 字數 1914 閱讀 5413

簡介:奇異值分解(singular value decomposition)是線性代數中一種重要的矩陣分解,是在機器學習領域廣泛應用的演算法,它不光可以用於降維演算法中的特徵分解,還可以用於推薦系統,以及自然語言處理等領域。是很多機器學習演算法的基石。奇異值分解在資料降維中有較多的應用,這裡把它的原理簡單總結一下,以下僅為個人理解而整理,望指教。

三、應用

參考文章

以下圖為其分解過程:

svd(奇異值分解)python實現

#奇異值分解,從svd函式中得到的奇異值sigma它是從大到小排列的

#的大小是640×640×3

img_temp = img_eg.reshape(

640,3*

640)

u,sigma,vt = np.linalg.svd(img_temp)

# 取前40個奇異值

sval_nums =

40img_restruct1 =

(u[:,0

:sval_nums]

).dot(np.diag(sigma[

0:sval_nums]))

.dot(vt[

0:sval_nums,:]

)img_restruct1 = img_restruct1.reshape(

640,

640,3)

# 取前120個奇異值

sval_nums =

120img_restruct2 =

(u[:,0

:sval_nums]

).dot(np.diag(sigma[

0:sval_nums]))

.dot(vt[

0:sval_nums,:]

)img_restruct2 = img_restruct2.reshape(

640,

640,3)

#顯示fig, ax = plt.subplots(1,

3,figsize =(24

,32))

ax[0

].imshow(img_eg)

ax[0].

set(title =

"orignal img"

)#取前60個奇異值後的

ax[1

].imshow(img_restruct1.astype(np.uint8)

)ax[1]

.set

(title =

"60 sigma"

)#取前120個奇異值後的

取的奇異值越多,影象還原度越高

svd(奇異值分解)小結

奇異值分解(svd)原理與在降維中的應用

svd(奇異值分解)python實現

奇異值分解 SVD

最近不小心接觸到了svd,然後認真看下去之後發現這東西真的挺強大的,把乙個推薦問題轉化為純數學矩陣問題,看了一些部落格,把乙個寫個比較具體的博文引入進來,給自己看的,所以把覺得沒必要的就去掉了,博文下面附原始部落格位址。一 基礎知識 1.矩陣的秩 矩陣的秩是矩陣中線性無關的行或列的個數 2.對角矩陣...

SVD奇異值分解

原文出處 今天我們來講講奇異值分解和它的一些有意思的應用。奇異值分解是乙個非常,非常,非常大的話題,它的英文是 singular value decomposition,一般簡稱為 svd。下面先給出它大概的意思 對於任意乙個 m n 的矩陣 m 不妨假設 m n 它可以被分解為 m udv t 其...

奇異值分解(SVD)

svd是singular value decomposition的縮寫,是去除冗餘 資訊提取和資料約簡的強大工具。若a為p q實數矩陣,則存在p階正交矩陣u和q階正交矩陣v,使得 a u v 上式就是奇異值分解,其中p q矩陣 中,i,i 元素 i 0,i 1,2,3,min p,q 其他元素均為0...