簡介:奇異值分解(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...