推薦系統的各個矩陣分解模型

推薦系統的各個矩陣分解模型

1. SVD

當然提到矩陣分解,人們首先想到的是數學中經典的SVD(奇異值)分解,直接上公式:
M m × n = U m × k Σ k × k V k × n T M_{m \times n}=U_{m \times k} \Sigma_{k \times k} V_{k \times n}^{T}

  • 原理和流程
    • 當然SVD分解的形式爲3個矩陣相乘
    • 左右兩個矩陣分別表示用戶/項目隱含因子矩陣
    • 中間矩陣爲奇異值矩陣並且是對角矩陣,每個元素滿足非負性,並且逐漸減小
  • 目的
    • 推薦好
    • 計算得到三個矩陣
    • 左右兩個矩陣分別表示用戶/項目隱含因子矩陣
    • 中間矩陣爲奇異值矩陣並且是對角矩陣,每個元素滿足非負性,並且逐漸減小
  • 優點
    • 在很多情況下,前10%甚至1%的奇異值的和就佔了全部的奇異值之和的99%以上的比例。
    • 也就是說,我們也可以用最大的k個的奇異值和對應的左右奇異向量來近似描述矩陣
  • 缺點
    • 如果想運用SVD分解的話,有一個前提是要求矩陣是稠密的,即矩陣裏的元素要非空,否則就不能運用SVD分解。很顯然我們的任務還不能用SVD,所以一般的做法是先用均值或者其他統計學方法來填充矩陣,然後再運用SVD分解降維。
    • 要求矩陣稠密
    • 若用戶和物品數據量大,計算量大,耗時長
    • 冷啓動沒有解決

2. FunkSVD

剛纔提到的 SVD 首先需要填充矩陣,然後再進行分解降維,同時由於需要求逆操作(複雜度O(n^3)),存在計算複雜度高的問題,所以後來Simon Funk提出了FunkSVD的方法,它不在將矩陣分解爲3個矩陣,而是分解爲2個低秩的用戶項目矩陣,同時降低了計算複雜度,公式如下:
min q , p ( u , i ) K ( r u i q i T p u ) 2 \min _{q^{*}, p^{*}} \sum_{(u, i) \in \mathcal{K}}\left(r_{u i}-q_{i}^{T} p_{u}\right)^{2}
它借鑑線性迴歸的思想,通過最小化觀察數據的平方來尋求最優的用戶和項目的隱含向量表示。同時爲了避免過度擬合(Overfitting)觀測數據,又提出了帶有L2正則項的FunkSVD:
min q : p ( u , i ) κ ( r u i q i τ p u ) 2 + λ ( q i 2 + p u 2 ) \min _{q : p \cdot} \sum_{(u, i) \in \kappa}\left(r_{u i}-q_{i}^{\tau} p_{u}\right)^{2}+\lambda\left(\left\|q_{i}\right\|^{2}+\left\|p_{u}\right\|^{2}\right)
以上兩種最優化函數都可以通過梯度下降或者隨機梯度下降法來尋求最優解。

2.1 FunkSVD小結

  • 目的
    • 推薦好
    • 矩陣分解爲2個低維矩陣
  • 參數
    • 無須加工
    • 二元組
  • 優點
    • 思想簡單
    • 套用簡單
    • 模型的拓展性也很強,能夠應用於各種場景
    • 相比SVD計算複雜度降低
  • 缺點
    • 冷啓動沒有很好解決
    • 數據稀疏

3. PMF

來自論文:Salakhutdinov et al. Probabilistic matrix factorization. NIPS(2008): 1257-1264.

PMF是對於FunkSVD的概率解釋版本,它假設評分矩陣中的元素 R i j R_ij 是由用戶潛在偏好向量和 U i U_i 物品潛在屬性向量 V j V_j 的內積決定的,並且服從均值爲 U i T V j \mathbf{U}_{i}^{T} \mathbf{V}_{j} ,方差爲的正態分 σ 2 \sigma^{2} 布:
R i , j N ( U i T V j , σ 2 ) \mathbf{R}_{i, j} \sim \mathbf{N}\left(U_{i}^{T} V_{j}, \sigma^{2}\right)
則觀測到的評分矩陣條件概率爲:
p ( R U , V , σ 2 ) i = 1 N j = 1 M N ( U i T V j , σ 2 ) I i j p\left(\mathbf{R} | U, V, \sigma^{2}\right) \sim \prod_{i=1}^{N} \prod_{j=1}^{M} \mathrm{N}\left(U_{i}^{T} V_{j}, \sigma^{2}\right)^{I_{i j}}
同時,假設用戶偏好向量與物品偏好向量服從於均值都爲0,方差分別爲 σ U 2 I , σ V 2 I \sigma_{U}^{2} \mathbf{I}, \sigma_{V}^{2} \mathbf{I} 的正態分佈:
p ( U σ U 2 ) = i = 1 N N ( U i 0 , σ U 2 I ) p ( V σ V 2 ) = j = 1 M N ( V j 0 , σ V 2 I ) \begin{aligned} p\left(U | \sigma_{U}^{2}\right) &=\prod_{i=1}^{N} \mathcal{N}\left(U_{i} | 0, \sigma_{U}^{2} \mathbf{I}\right) \\ p\left(V | \sigma_{V}^{2}\right) &=\prod_{j=1}^{M} \mathcal{N}\left(V_{j} | 0, \sigma_{V}^{2} \mathbf{I}\right) \end{aligned}
根據貝葉斯公式,可以得出潛變量U,V的後驗概率爲:
p ( U , V R , σ 2 , σ V 2 , σ U 2 ) = p ( U , V , R , σ 2 , σ V 2 , σ U 2 ) p ( R , σ 2 , σ V 2 , σ U 2 ) = p ( R U , V , σ 2 ) × p ( U , V ρ V 2 , σ U 2 ) p ( R , σ 2 , σ V 2 , σ U 2 ) p ( R U , V , σ 2 ) × p ( U , V σ V 2 , σ U 2 ) = p ( R U , V , σ 2 ) × p ( U σ U 2 ) × p ( V σ V 2 ) = i = 1 N j = 1 M [ N ( R i j U i T V j , σ 2 ) ] I i j × i = 1 N [ N ( U i 0 , σ U 2 I ) ] × j = 1 M [ N ( V j 0 , σ V 2 I ) ] \begin{array}{l}{p\left(U, V | R, \sigma^{2}, \sigma_{V}^{2}, \sigma_{U}^{2}\right)=\frac{p\left(U, V, R, \sigma^{2}, \sigma_{V}^{2}, \sigma_{U}^{2}\right)}{p\left(R, \sigma^{2}, \sigma_{V}^{2}, \sigma_{U}^{2}\right)}=\frac{p\left(R | U, V, \sigma^{2}\right) \times p\left(U, V | \rho_{V}^{2}, \sigma_{U}^{2}\right)}{p\left(R, \sigma^{2}, \sigma_{V}^{2}, \sigma_{U}^{2}\right)}} \\ {\sim p\left(R | U, V, \sigma^{2}\right) \times p\left(U, V | \sigma_{V}^{2}, \sigma_{U}^{2}\right)} \\ {=p\left(R | U, V, \sigma^{2}\right) \times p\left(U | \sigma_{U}^{2}\right) \times p\left(V | \sigma_{V}^{2}\right)} \\ {=\prod_{i=1}^{N} \prod_{j=1}^{M}\left[N\left(R_{i j} | U_{i}^{T} V_{j}, \sigma^{2}\right)\right]^{I_{i j}} \times \prod_{i=1}^{N}\left[N\left(U_{i} | 0, \sigma_{U}^{2} I\right)\right] \times \prod_{j=1}^{M}\left[N\left(V_{j} | 0, \sigma_{V}^{2} I\right)\right]}\end{array}
接着,等式兩邊取對數 l n l n 後得到:
ln p ( U , V R , σ 2 , σ V 2 , σ U 2 ) = 1 2 σ 2 i = 1 N j = 1 M I i j ( R i j U i T V j ) 2 1 2 σ U 2 i = 1 N U i T U i 1 2 σ V 2 j = 1 M V j T V j 1 2 ( ( i = 1 N j = 1 M I i j ) ln σ 2 + N D ln σ U 2 + M Dln σ V 2 ) + C \begin{array}{l}{\ln p\left(U, V | R, \sigma^{2}, \sigma_{V}^{2}, \sigma_{U}^{2}\right)=-\frac{1}{2 \sigma^{2}} \sum_{i=1}^{N} \sum_{j=1}^{M} I_{i j}\left(R_{i j}-U_{i}^{T} V_{j}\right)^{2}-\frac{1}{2 \sigma_{U}^{2}} \sum_{i=1}^{N} U_{i}^{T} U_{i}-\frac{1}{2 \sigma_{V}^{2}} \sum_{j=1}^{M} V_{j}^{T} V_{j}} \\ {-\frac{1}{2}\left(\left(\sum_{i=1}^{N} \sum_{j=1}^{M} I_{i j}\right) \ln \sigma^{2}+N D \ln \sigma_{U}^{2}+M \operatorname{Dln} \sigma_{V}^{2}\right)+C}\end{array}
最後,經過推導,我們可以發現PMF確實是FunkSVD的概率解釋版本,它兩個的形式一樣一樣的。

**注:**爲了方便讀者理解,在此舉例推導中間項 N ( U i 0 , σ 2 I ) N\left(U_{i} | 0, \sigma^{2} \mathbf{I}\right) ,將此項展開,帶入多維正態分佈即可得到 D 2 ln ( σ U 2 ) U i T U i 2 σ U 2 + C -\frac{D}{2} \ln \left(\sigma_{U}^{2}\right)-\frac{U_{i}^{T} U_{i}}{2 \sigma_{U}^{2}}+C 。推導如下:

N ( U i 0 , σ U 2 I ) = 1 ( 2 π ) D / 2 σ U 2 I 1 / 2 e 1 2 1 2 w i T ( σ U 2 I ) 1 U i ln N ( U i 0 , σ U 2 I ) = ln ( 1 ( 2 π ) D / 2 σ U 2 I 1 / 2 ) U i T U i 2 σ U 2 = ln ( σ U 2 I 1 / 2 ) U i T U i 2 σ U 2 + C = 1 2 ln ( σ U 2 D ) U i T U i 2 σ U 2 + C = D 2 ln ( σ U 2 ) U i T U i 2 σ U 2 + C \begin{aligned} & N\left(U_{i} | 0, \sigma_{U}^{2} I\right)=-\frac{1}{(2 \pi)^{D / 2}\left|\sigma_{U}^{2} I\right|^{1 / 2}} e^{-\frac{1}{2} \frac{1}{2} w_{i}^{T}\left(\sigma_{U}^{2} I\right)^{-1} U_{i}} \\ \ln N\left(U_{i} | 0, \sigma_{U}^{2} I\right) &=\ln \left(-\frac{1}{(2 \pi)^{D / 2}\left|\sigma_{U}^{2} I\right|^{1 / 2}}\right)-\frac{U_{i}^{T} U_{i}}{2 \sigma_{U}^{2}} \\=&-\ln \left(\left|\sigma_{U}^{2} I\right|^{1 / 2}\right)-\frac{U_{i}^{T} U_{i}}{2 \sigma_{U}^{2}}+C \\=&-\frac{1}{2} \ln \left(\sigma_{U}^{2 D}\right)-\frac{U_{i}^{T} U_{i}}{2 \sigma_{U}^{2}}+C \\=&-\frac{D}{2} \ln \left(\sigma_{U}^{2}\right)-\frac{U_{i}^{T} U_{i}}{2 \sigma_{U}^{2}}+C \end{aligned}

3.1 PMF小結

  • 目的
    • 分數好
  • 參數
    • 無須加工
    • 二元組
  • 優點
    • 思想簡單
    • 套用簡單
    • 模型的拓展性也很強,能夠應用於各種場景
    • 相比SVD計算複雜度降低
    • PMF是對於FunkSVD的概率解釋版
  • 缺點
    • 冷啓動沒有很好解決
    • 數據稀疏

4. BiasSVD

來自論文:Koren et al. Matrix factorization techniques for recommender systems.Computer 42.8 (2009).

在FunkSVD提出來之後,陸續又提出了許多變形版本,其中相對流行的方法是BiasSVD,它是基於這樣的假設:某些用戶會自帶一些特質,比如天生願意給別人好評,心慈手軟,比較好說話,有的人就比較苛刻,總是評分不超過3分(5分滿分);同時也有一些這樣的項目,一被生產便決定了它的地位,有的比較受人們歡迎,有的則被人嫌棄,這也正是提出用戶和項目偏置項的原因;項亮給出的解釋是:對於一個評分系統有些固有屬性和用戶物品無關,而用戶也有些屬性和物品無關,物品也有些屬性與用戶無關,具體的預測公式如下:
r ^ i j = μ + b u + b i + q i T p u \hat{r}_{i j}=\mu+b_{u}+b_{i}+q_{i}^{T} p_{u}
其中, μ \mu 爲整個網站的平均評分,是真個網站的基調; b u b_u 爲用戶的評分偏置,代表某個用戶的評分基調, b i b_i 爲項目的被評分偏置,代表某個項目的屬性基調。

4.1 BiasSVD小結

  • 目的:
    • 分數好
  • 參數:
    • 二元組,無須處理
    • BiasSVD假設評分系統包括三部分的偏置因素:
    • 一些和用戶物品無關的評分因素,用戶有一些和物品無關的評分因素,稱爲用戶偏置項。
    • 而物品也有一些和用戶無關的評分因素,稱爲物品偏置項
  • 優點:
    • BiasSVD增加了一些額外因素的考慮,因此在某些場景會比FunkSVD表現好。
    • 電商或電影平臺場景可能比較適合
  • 缺點:
    • 冷啓動沒有很好解決
    • 數據稀疏

5. SVD++

來自論文:Koren Y. Factor in the neighbors: Scalable and accurate collaborative filtering[J]. ACM Transactions on Knowledge Discovery from Data (TKDD), 2010, 4(1): 1.

在用戶除了顯式評分外,隱式反饋信息同樣有助於用戶的偏好建模,因此隨後提出了SVD++。它是基於這樣的假設:用戶除了對於項目的顯式歷史評分記錄外,瀏覽記錄或者收藏列表等隱反饋信息同樣可以從側面一定程度上反映用戶的偏好,比如用戶對某個項目進行了收藏,可以從側面反映他對於這個項目感興趣,具體反映到預測公式爲:
r ^ i j = μ + b u + b i + q i T ( p u + N ( i ) 1 2 s N ( i ) y s ) \hat{r}_{i j}=\mu+b_{u}+b_{i}+q_{i}^{T}\left(p_{u}+|N(i)|^{-\frac{1}{2}} \sum_{s \in N(i)} y_{s}\right)
其中 N ( i ) N(i) 爲用戶 i i 所產生隱反饋行爲的物品集合; y s y_s 爲隱藏的對於項目的 s s 個人喜好偏置,是一個我們所要學習的參數;至於 N ( i ) 1 2 |N(i)|^{-\frac{1}{2}} 是一個經驗公式。

5.1 SVD++小結

  • 目的:

    • 推薦好
  • 參數:

    • 用戶評分
    • 用戶點擊
  • 優點:

    • SVD++增加了一些額外因素的考慮,如:用戶行爲不僅有評分,且有些隱反饋(點擊等)。
    • 視頻平臺、文章等媒體平臺都適合,電商平臺也適合
  • 缺點:

    • 冷啓動沒有很好解決
  • 數據稀疏

6. timeSVD

來自論文:Koren et al. Collaborative filtering with temporal dynamics. Communications of the ACM 53.4 (2010): 89-97.

它是基於這樣的假設:用戶的興趣或者偏好不是一成不變的,而是隨着時間而動態演化。於是提出了timeSVD,其中用戶的和物品的偏置隨着時間而變化,同時用戶的隱含因子也隨着時間而動態改變,在此物品的隱含表示並未隨時間而變化(假設物品的屬性不會隨着時間而改變)。
r ^ u i = μ + b i ( t u i ) + b u ( t u i ) + q i T p u ( t u i ) \hat{r}_{u i}=\mu+b_{i}\left(t_{u i}\right)+b_{u}\left(t_{u i}\right)+q_{i}^{T} p_{u}\left(t_{u i}\right)
其中, i i 爲時間因子,表示不同的時間狀態。

6.1 timeSVD小結

  • 目的:
    • 推薦好
  • 參數:
    • 用戶評分
    • 評分時間
  • 優點:
    • timeSVD++增加了一些額外因素的考慮,它假設用戶愛好隨時間的流動而變化
  • 缺點:
    • 冷啓動沒有很好解決
    • 數據稀疏

7. NMF

來自論文:Lee et al. Learning the parts of objects by non-negative matrix factorization. Nature 401.6755 (1999): 788.

這是一篇發表在Nature上的經典論文,谷歌學術顯示引用將近9k,它提出了一個假設:分解出來的小矩陣應該滿足非負約束。

因爲在大部分方法中,原始矩陣 R \mathbf{R} 被近似分解爲兩個低秩矩陣相 R = P T Q \mathbf{R}=\mathbf{P}^{T} \mathbf{Q} 乘的形式,這些方法的共同之處是,即使原始矩陣的元素都是非負的,也不能保證分解出的小矩陣都爲非負,這就導致了推薦系統中經典的矩陣分解方法可以達到很好的預測性能,但不能做出像User-based CF 那樣符合人們習慣的推薦解釋(即跟你品味相似的人也購買了此商品)。在數學意義上,分解出的結果是正是負都沒關係,只要保證還原後的矩陣元素非負並且誤差儘可能小即可,但負值元素往往在現實世界中是沒有任何意義的。比如圖像數據中不可能存在是負數的像素值,因爲取值在0~255之間;在統計文檔的詞頻時,負值也是無法進行解釋的。因此提出帶有非負約束的矩陣分解是對於傳統的矩陣分解無法進行科學解釋做出的一個嘗試。它的公式如下:
R P T Q  s.t.  P 0 Q 0 \begin{array}{c}{\mathbf{R} \approx \mathbf{P}^{T} \mathbf{Q}} \\ {\text { s.t. } \mathbf{P} \geq 0} \\ {\mathbf{Q} \geq 0}\end{array}
其中, P \mathbf{P} , Q \mathbf{Q} 兩個矩陣中的元素滿足非負約束。

7.1 NMF小結

  • 目的:
    • 分數好
  • 參數:
    • 二元組,無須加工處理
  • 優點:
    • 分解出來的矩陣裏的元素都是非負數
    • 應用場景多,如下:
    • NMF能被用於發現數據庫中的圖像特徵,便於快速自動識別應用
    • 能夠發現文檔的語義相關度,用於信息自動索引和提取
    • 能夠在DNA陣列分析中識別基因等等
    • 最有效的就是圖像處理領域,NMF是圖像處理的數據降維和特徵提取的一種有效方法。
  • 缺點:
    • 冷啓動沒有很好解決
    • 數據稀疏

8. WMF

來自論文:Pan et al. One-class collaborative filtering. ICDM, 2008.
Hu et al. Collaborative filtering for implicit feedback datasets. ICDM, 2008.

對於矩陣分解來說,我們一般是處理的推薦系統中的評分預測任務,但同樣矩陣分解也可以用來進行Top-N的推薦,即根據隱式信息來預測用戶是否點擊某項目。你可以把他看做是二分類問題,即點或者不點。但這不是普通的二分類問題,因爲在模型訓練的過程中負樣本並非都爲真正的負樣本,可能是用戶根本沒見過該項目,何來喜不喜歡,沒準他看到後喜歡呢,即正樣本告訴我們作者喜歡的信息,但負樣本並不能告訴我們該用戶不喜歡。由於只存在正樣本,所以我們把只有正反饋的問題定義爲one-class問題,即單類問題。對於單類問題,該作者提出了兩種解決策略,一種是加權的矩陣分解,另一種是負採樣技術。雖然只是加了一下權重,看起來比較naive,但在於當時的研究背景下,這一小步其實是推薦系統中的一大步。
L ( X ) = i j W i j ( R i j X i j ) 2 \mathcal{L}(\boldsymbol{X})=\sum_{i j} W_{i j}\left(R_{i j}-X_{i j}\right)^{2}
對於單類問題的研究一直沒有停止過,雖然負採樣技術是啓發式的,即不用通過數據建模的方式來進行預測,但效果還是很好用的。最近幾年人們提出了基於模型的方法來處理這種單類問題,即從缺失數據中來進行建模,具體可參見這兩篇論文【Hernández-Lobato et al 2014,Liang et al 2016】。

8.1 WMF小結

  • 目的:
    • 推薦好
  • 參數:
    • 用戶評分、點擊、評論等操作,這些操作都轉換爲 0或1 數據
    • 還要對樣本進行負採樣
  • 優點:
    • 符合TopN推薦
    • 採用了用戶的隱性數據
  • 缺點:
    • 冷啓動沒有很好解決
    • 數據稀疏

9. LLORMA

來自論文:Lee et al. Local low-rank matrix approximation.ICML. 2013.

經典的矩陣分解模型是假設整個用戶-項目矩陣(即UI矩陣)滿足低秩假設(即全局低秩假設),即在整個系統當中,用戶和項目總是滿足存在相似的某種模式,即物以類聚,人以羣分。

這種假設固然有道理,但在當今大數據時代下,全局意義上的低秩假設似乎太強了,尤其是在數據量巨大的情況下(即用戶數與項目數都很多的系統當中),因此該論文推翻了全局意義上經典的全局低秩假設,它認爲大千世界,林林總總,我們應該去尋找局部的低秩假設(即局部低秩假設)。首先根據某種相似測度來將整個大矩陣分爲若干個小矩陣,每個小矩陣當中滿足某種相似度閾值,然後再在局部的小矩陣當中做低秩假設。這樣,全局的大矩陣可以由多個局部的小矩陣來加權組合構成,具體可參見該論文。

在這裏插入圖片描述

9.1 LLORMA小結

  • 目的:
    • 推薦好
  • 參數:
    • 輸入:評分矩陣 M R  ⁣ ⁣ ×  ⁣ ⁣   n M\in {{\mathbb{R}}^{\text{m }\!\!\times\!\!\text{ }n}}
    • 局部模型個數q,局部矩陣的秩r,學習速率ν,正則化參數λ.
  • 優點:
    • 計算複雜度保證了LLORMA算法具有計算上的高效性
    • 並且LLORMA算法可以應用於大規模數據推薦場景.
  • 缺點:
    • 暫時不知

10. SRui

來自論文:Ma Hao. An experimental study on implicit social recommendation. SIGIR, 2013.

雖然經典的矩陣分解方法已經可以到達比較好的預測性能了,但它固有的弊病仍然是躲不開的,即數據稀疏與冷啓動問題。爲了緩解數據稀疏我們可以引入豐富的社交信息。即如果兩個用戶是朋友關係,那麼我們假設他們有相同的偏好,同時他們學得的用戶隱表示在向量空間應該有相近的距離。用戶維度如此,同理,項目維度亦可以利用此思路來約束項目隱表示。即如果兩個項目之間的關係較近,那麼在低維向量空間中的距離同樣也應該較小。這裏的項目關係是從UI矩陣中抽取出來的,論文中成爲項目隱社交關係(其實項目維度跟社交沒啥關係)。具體公式如下:
L = min U , V 1 2 i = 1 m j = 1 n I i j ( r i j u i T v j ) 2 + α 2 i = 1 m f F + ( i ) s i f u i u f F 2 + β 2 j = 1 n q Q + ( j ) s j q v j v q F 2 + λ 1 2 U F 2 + λ 2 2 V F 2 \begin{aligned} L=& \min _{U, V} \frac{1}{2} \sum_{i=1}^{m} \sum_{j=1}^{n} I_{i j}\left(r_{i j}-\mathbf{u}_{i}^{T} \mathbf{v}_{j}\right)^{2} \\ &+\frac{\alpha}{2} \sum_{i=1}^{m} \sum_{f \in \mathcal{F}^{+}(i)} s_{i f}\left\|\mathbf{u}_{i}-\mathbf{u}_{f}\right\|_{F}^{2} \\ &+\frac{\beta}{2} \sum_{j=1}^{n} \sum_{q \in \mathbb{Q}^{+}(j)} s_{j q}\left\|\mathbf{v}_{j}-\mathbf{v}_{q}\right\|_{F}^{2} \\ &+\frac{\lambda_{1}}{2}\|U\|_{F}^{2}+\frac{\lambda_{2}}{2}\|V\|_{F}^{2} \end{aligned}

相關文章
相關標籤/搜索