SVD奇異矩陣分解


奇異矩陣分解SVD

奇異矩陣分解的核心思想認為用戶的興趣只受少數幾個因素的影響,因此將稀疏且高維的User-Item評分矩陣分解為兩個低維矩陣,即通過User、Item評分信息來學習到的用戶特征矩陣P和物品特征矩陣Q,通過重構的低維矩陣預測用戶對產品的評分.SVD的時間復雜度是O(m3).

在了解奇異矩陣分解前, 先要了解矩陣分解, 矩陣分解就是特征值分解, 特征值分解和奇異值分解的目的都是一樣,就是提取出一個矩陣最重要的特征.先談談特征值分解吧:

一.特征值分解:

如果說一個向量v是方陣A的特征向量,將一定可以表示成下面的形式:

 

image這時候λ就被稱為特征向量v對應的特征值,特征值不改變向量的方向,只會對向量進行伸縮的長度變換,一個矩陣的一組特征向量是一組正交向量.特征值分解是將一個矩陣分解成下面的形式:

image其中Q是這個矩陣A的特征向量組成的矩陣,Σ是一個對角陣,每一個對角線上的元素就是一個特征值.一個矩陣其實就是一個線性變換,因為一個矩陣乘以一個向量后得到的向量,其實就相當於將這個向量進行了線性變換.特征值分解可以得到特征值與特征向量,特征值表示的是這個特征到底有多重要,而特征向量表示這個特征是什么,特征值分解也有很多的局限,比如說變換的矩陣必須是方陣.

二.奇異值分解:

特征值分解是一個提取矩陣特征很不錯的方法,但是它只是對方陣而言的,在現實的世界中,我們看到的大部分矩陣都不是方陣,比如說有N個用戶,每個用戶對應M個物品,這樣形成的一個N * M的矩陣就不可能是方陣,我們怎樣才能描述這樣普通的矩陣呢的重要特征呢?奇異值分解可以用來干這個事情,奇異值分解是一個能適用於任意的矩陣的一種分解的方法:

設 A 為一個 $m\times n$ 階實矩陣, $r=\mathrm{rank}A $,SVD 具有以下形式:

    $A=U\Sigma V^T$

其中 U 是 $m\times m$ 階, V 是 $n\times n $階, $\Sigma$ 是 $m\times$ n 階.特別的是,方陣 U 和 V 都是實正交矩陣(orthogonal matrix),也就是說, $U^T=U^{-1}$ ,$ V^T=V^{-1}$, $\Sigma$ 是(類)對角矩陣,對角線上的值對應於對角矩陣的特征值,(類)對角矩陣上是奇異值,

圖示可以幫助我們了解SVD 的矩陣結構. SVD 最特別的地方是 \Sigma 的多數元為零,圖中的白色區塊以及黃色區塊的非對角元皆為零.

令 U 的行向量(column vector)為$ \mathbf{u}_i $, $i=1,\ldots,m $, V 的行向量為$ \mathbf{v}_j $,$ j=1,\ldots,n $,$ A=U\Sigma V^T$ 可以表示為 r 個秩-1 (rank-one) 矩陣之和:

  

上式指出 A 僅由 U 的前 r 個行向量(以 $U_r $表示),$ V^T $的前 r 個列向量(以 $V_r^T$ 表示),以及 $\Sigma$ 的左上 $r\times r$ 分塊決定(以 $\Sigma_r$ 表示), 矩陣 A 總共有 $m\times n $個元,$ U_r$ 有 $m\times r $個元, $V_r^T$ 有$ r\times n$ 個元,$ \Sigma_r$ 則只需儲存主對角的 r 個非零元. 若以SVD 形式儲存,總計有 $(m+n+1)\times r $個元. 當 r 遠小於 m 和 n 時,利用矩陣的SVD 可以大幅減少儲存量.

三.推薦系統隱語義模型中應用

1.假定有U個用戶, V個item, R為打分矩陣

 假定有K個隱含變量, 我們需要找到矩陣P(U*K)和Q(K*V):

  

2.如何才能找到最佳的P和Q呢?

  梯度下降(由於用戶和物品的特征向量維度比較低,因而可以通過梯度下降(Gradient Descend)的方法高效地求解):

    1.定義損失函數(加正則化項)

      

    2.求梯度/偏導, 更新迭代公式:

      

 

3.再還原回矩陣乘積, 即可補充未打分項.

 

四.矩陣分解在推薦中的優缺點

矩陣分解方法將高維User-Item評分矩陣映射為兩個低維用戶和物品矩陣,解決了數據稀疏性問題.使用矩陣分解具有以下優點:

1.比較容易編程實現,隨機梯度下降方法依次迭代即可訓練出模型.

2.比較低的時間和空間復雜度,高維矩陣映射為兩個低維矩陣節省了存儲空間,訓練過程比較費時,但是可以離線完成;評分預測一般在線計算,直接使用離線訓練得到的參數,可以實時推薦.

3.預測的精度比較高,預測准確率要高於基於領域的協同過濾以及內容過濾等方法.

4.非常好的擴展性,很方便在用戶特征向量和物品特征向量中添加其它因素,例如添加隱性反饋因素的SVD++,添加時間動態time SVD++,此方法將偏置部分和用戶興趣都表示成一個關於時間的函數,可以很好的捕捉到用戶的興趣漂移.

矩陣分解的不足主要有:

1.模型訓練比較費時.

2.推薦結果不具有很好的可解釋性,分解出來的用戶和物品矩陣的每個維度* 無法和現實生活中的概念來解釋,無法用現實概念給每個維度命名,只能理解為潛在語義空間.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM