奇異值分解(SVD)

2021-10-07 12:48:54 字數 2708 閱讀 9326

奇異值分解(singular value decomposition,以下簡稱svd)是在機器學習領域廣泛應用的演算法,它不光可以用於降維演算法中的特徵分解,還可以用於推薦系統,以及自然語言處理等領域。是很多機器學習演算法的基石.

svd也是對矩陣進行分解,但是和特徵分解不同,svd並不要求要分解的矩陣為方陣。假設我們的矩陣a是乙個m×n的矩陣,那麼我們定義矩陣a的svd為:

假設有 m×n的矩陣 a,那麼 svd 就是要找到如下式的這麼乙個分解,將 a 分解為 3 個矩陣的乘積:

其中u和v都是正交矩陣, 在複數域內的話就是酉矩陣(unitary matrix),即

換句話說,就是說u的轉置等於u的逆,v的轉置等於v的逆:

而 σ就是乙個非負實對角矩陣。

那麼 u和 v 以及σ是如何構成的呢?

u 和 v 的列分別叫做 a 的 左奇異向量(left-singular vectors)和 右奇異向量(right-singular vectors),σ 的對角線上的值叫做 a 的奇異值(singular values)。

其實整個求解 svd 的過程就是求解這 3 個矩陣的過程,而求解這 3 個矩陣的過程就是求解特徵值和特徵向量的過程,問題就在於求誰的特徵值和特徵向量。

u 的列由 a^t * a的單位化過的特徵向量構成

v 的列由 a^t * a的單位化過的特徵向量構成

σ 的對角元素**於 a^t * a或 a * a^t 的特徵值的平方根,並且是按從大到小的順序排列

知道了這些,那麼求解 svd 的步驟就顯而易見了:

求 a * a^t的特徵值和特徵向量,用單位化的特徵向量構成u

求 a * a^t的特徵值和特徵向量,用單位化的特徵向量構成v

將 a * at或者at * a的特徵值求平方根,然後構成 σ

假設

那麼可以計算得到

接下來就是求這個矩陣的特徵值和特徵向量了

要想該方程組有非零解(即非零特徵值),那麼係數矩陣 a * a ^ t − λe的行列式必須為 0

求解這個行列式我就不再贅述了,這個直接使用行列式展開定理就可以了,可以得到 λ1≈29.86606875,λ2≈0.13393125,λ3=λ4=0有 4 個特徵值,因為特徵多項式 ∣a*a^t−λe∣是乙個 4 次多項式。對應的單位化過的特徵向量為

這就是矩陣 u 了。

同樣的過程求解 at * a的特徵值和特徵向量,求得 λ1≈0.13393125,λ2≈29.86606875,將特徵值降序排列後對應的單位化過的特徵向量為

這就是矩陣 v 了。

而矩陣 σ 根據上面說的為特徵值的平方根構成的對角矩陣

到此,svd 分解就結束了,原來的矩陣 a 就被分解成了 3 個矩陣的乘積。

numpy 實現

python 中可以使用 numpy 包的 linalg.svd() 來求解 svd

import numpy as np

a = np.array([[

2,4]

,[1,

3],[

0,0]

,[0,

0]])

print

(np.linalg.svd(a)

)

(array([[

-0.81741556,-

0.57604844,0

.,0.

],[-

0.57604844

,0.81741556,0

.,0.

],[0

.,0.

,1.,

0.],

[0.,

0.,0

.,1.

]]),

array(

[5.4649857

,0.36596619])

, array([[

-0.40455358,-

0.9145143],

[-0.9145143

,0.40455358]]

))

奇異值分解 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...