1. 程式人生 > >【推薦演算法筆記二】矩陣因式分解(Matrix Factorization)

【推薦演算法筆記二】矩陣因式分解(Matrix Factorization)

基於顯示反饋(explicit feedback)的推薦

將使用者的顯式反饋記錄,記錄在一個評分矩陣中:


矩陣中的數字代表使用者對物品的評分、?表示缺失值。如果我們能夠估計矩陣中每個?的值,我們就可以為每個使用者做推薦。

為什麼選擇矩陣因式分解(Matrix Factorization)?

Memory-based方法的侷限性:
  • 非傳遞性(Non-transitivity):如果兩個使用者的評分物品集沒有交集,既沒有都評分過的物品,那麼即使他們有相同的鄰居,他們也永遠不會被關聯起來。
  • 低效率:必須要計算每一對使用者間的相似度,以及每一對物品間的相似度。

什麼是矩陣因式分解?

評分矩陣被分解為兩個小矩陣:

  • Uu· ∈ R1×d : 使用者u的特定潛在特徵向量 ,

       Uu· 表示使用者u在d層面的興趣模型

  • Vi· ∈ R1×d :  物品i的特定潛在特徵向量, 

        Vi· 表示物品i在d層面的描述(description)

  •  使用者u對物品i的整體偏好

   

符號表(notations)

n  使用者數量
物品數量
u ∈ {1, 2, . . . , n}
使用者id
i, i′ ∈ {1, 2, . . . ,m}
物品id

觀測到的u對i的評分

可選評分集合

若u對i有評分則為1,否則為0

訓練集中觀測到的評分記錄數量
μ全域性平均評分

使用者u的bias

物品i的bias

潛在特徵向量的維數

權重引數

使用者u對物品i的預測評分
T演算法的迭代次數

概率矩陣分解PMF(Probabilistic Matrix Factorization)

預測公式(使用者u對物品i):


目標函式:

 

    其中的是需要被學習的模型引數。

梯度及更新公式

梯度更新使用隨機梯度下降演算法,對於任一隨機取樣的評分,我們有如下定義:


可得兩個特徵矩陣的梯度為:


因此更新公式(6-7)為:


其中γ>0是學習率

PMF的隨機梯度下降(SGD)演算法虛擬碼為:


正則化奇異值分解RSVD(Regularized Singular Value Decomposition)

在PMF的預測公式中,我們加入使用者bias、物品bias以及全域性評分均值μ

預測公式(使用者u對物品i):


目標函式:


梯度及更新公式

梯度更新使用隨機梯度下降演算法,對於任一隨機取樣的評分,我們有如下定義:


可得各個引數的梯度為:


    其中

因此更新公式(9-13)為:


模型引數初始化:


    其中r為[0,1)區間內的隨機變數。

RSVD的隨機梯度下降(SGD)演算法虛擬碼為:


    總結:矩陣因式分解的方法的目標函式是最小化預測值和真實值之間的誤差。也就是儘可能使訓練後模型計算出來的值能與可觀測到的真實值吻合,這樣在原矩陣中的?可以用模型計算而得的可靠的值替代。但是純粹使用矩陣的因式來還原評分矩陣可能並不那麼可靠,所以在預測時添加了使用者和物品的偏好以及全域性平均值來增加準確度。

本文內容來自W.K. Pan (CSSE, SZU)的課件