機器學習 SVD分解

2021-09-25 13:14:48 字數 2157 閱讀 8461

3 svd的舉例

4 svd的應用

5 svd的優缺點

參考經常看到svd奇異值分解,但一直沒有去了解它講的什麼,剛好在李航老師統計學習方法第二版上是單獨的一章,下面看了一些部落格總結一下~

任意乙個m×n

m×nm×

n的矩陣 =m

mm階正交陣×

××降序排列的非負對角線元素組成的m×n

m×nm×

n對角陣×

××n

nn階正交陣

首先,對於方陣我們是可以直接分解的,比較簡單,(也是考研那時候數學必考題),即乙個方陣等於三部分乘積,中間是特徵值組成的,兩邊是特徵向量組成的矩陣以及它的逆。這部分就屬於基礎的線性代數部分了,具體見下圖:

ok,有小夥伴就會問了,為什麼要做上述的分解?我記得考研那時候宇哥就說過,分解成這樣的形式,最後矩陣就可以寫成二項式的形式了,比如如果特徵值為1,2,3,那麼a就可以表示成

f =x

12+4

x22+

9x32

f=^2+4^2+9^2

f=x1​2

+4x2

​2+9

x3​2

,寫成這樣更簡單?具體我也有點遺忘了,但今天看到一篇寫的很好地部落格,裡面做出了解釋,即為什麼要做矩陣的特徵值分解?

ok,上面提到了矩陣的特徵值分解的目的是提取特徵的最重要的特徵,特徵值是表示這個特徵到底多重要,而特徵向量表示這個特徵是什麼意思,那既然有了矩陣的特徵值分解,還為什麼要有個奇異值分解呢?

原因是上面提到了矩陣的特徵值分解必須為方陣!而現實生活很多實際場景並不一定就是方陣,很可能行和列不一致,那這時候我們同樣希望能夠提取特徵,該怎麼處理呢?奇異值分解svd!

上面的2.2小節提到了svd是我們用來分解普通的矩陣(非方陣),進而描述普通矩陣的重要特徵!那具體是如何實現的呢?首先上兩張特別好的圖:

上述就是完全奇異值分解的過程,其實工作還是比較簡單的,就涉及到了線代中求矩陣的特徵值和特徵向量!以及矩陣乘積的運算!

相信大家肯定有疑問,上面這種部分分解好是好,但為什麼可以這麼做呢?

因為在很多情況下,前10%甚至1%的奇異值的和就佔了全部的奇異值之和的99%以上了。也就是說,我們也可以用前r

rr大的奇異值來近似描述矩陣!

這裡借用劉建平老師的部落格的例子:

同時,我們可以在乙個wolframalpha**計算,計算結果見下圖:

結果一致,完美!

但有乙個小的問題,上述pca用到的也僅僅是svd的右奇異矩陣v

tv^t

vt,左奇異矩陣是否有用武之地呢?答案是有的。

這個也是比較有意思的乙個實際問題,吳軍老師在數學之美這本書也提到了這個問題。我們來稍微概括總結一下:

書中吳軍老師提到了兩種方法:

首先是對文件進行分詞,然後根據tf-idf來計算詞彙的重要性得分!於是將一篇文件變成了數值,即tf-idf得分向量。接下來就採用模型的方法進行分類處理!

方法2:基於svd分解的方式進行分類。

之前的預處理後的資料格式為:

svd分解之後的為:

如何解讀上述分解的結果呢?

後續還進行了降維,二維平面視覺化,實現了聚類的效果,完美!

適用資料型別:數值型資料

劉建平老師部落格:奇異值分解(svd)原理與在降維中的應用

機器學習Python實現 SVD 分解

任何乙個矩陣都可以分解為svd的形式 其實svd意義就是利用特徵空間的轉換進行資料的對映,後面將專門介紹svd的基礎概念,先給出python,這裡先給出乙個簡單的矩陣,表示使用者和物品之間的關係 這裡我自己有個疑惑?對這樣乙個data u z vt 這裡的u和v真正的幾何含義 書上的含義是u將物品對...

SVD奇異值分解 機器學習

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

機器學習實戰學習筆記4 奇異值分解(SVD)

奇異值分解 singular value decomposition 演算法,可以將資料對映到低維空間,常用於從有雜訊資料中抽取相關特徵。1 先利用svd從資料中構建乙個主題空間 2 然後在該空間下計算相似度 1 優點 簡化資料,去除雜訊,提高演算法的結果 2 缺點 資料的轉換可能難以理解 3 應用...