LFM MF SVD SVD++ FM 之間的關係

Ref:https://zhuanlan.zhihu.com/p/98058812  在原文的基礎上進行補充

基於行爲的推薦系統算法我們稱之爲協同過濾,包括基於鄰域、基於模型(隱語義模型LFM)和基於圖的隨機遊走。這次我們詳細說說LFM模型。

我們的目標是對一個user-item的評分矩陣進行一個補充,得到未知的分數,進而進行推薦。

user和item是沒有直接關係的,無法直接得到二者的關係,這個時候我們就想使用中間一種潛在因子將二者聯繫起來,比如userA和item《復仇者聯盟》的聯繫,對於一個用戶一個人來說我們是無法直接預測分數的,我們需要尋找一種潛在因子,比如userA對“科幻劇”的喜愛程度,item《復仇者聯盟》這部劇有多少“科幻”成分,然後將這兩個值乘起來就得到了最終的分數,而這個“科幻”成分就是一種潛在因子,當然了我們對一個用戶對一部電影的分數不可能只用“科幻”這一個成分來決定,因該有很多潛在因子。

以上就是LFM的原本意思,即隱因子模型,尋找一些潛在因子,作爲橋樑將user和item聯繫起來。而在LFM中應用最成功的算法就是矩陣分解MF(Matrix factorization)

矩陣分解是指將一個矩陣分解成倆個矩陣相乘,mn的一個矩陣分解成mk、kn的兩個矩陣相乘,這裏的k即潛在因子的個數。

矩陣分解MF中,我們使用最多的就是SVD(奇異值分解),SVD是指將一個矩陣分解成三個矩陣相乘,其中第一個矩陣即user和潛在因子的關係程度,第三個矩陣是item和潛在因子的關係程度,中間矩陣爲潛在因子的程度。其實三個矩陣也可以看成是兩個矩陣相乘。

接下來細說SVD是如何做推薦的,即如何預測分數的。

  • 首先,我們拿到的是一個稀疏的空卻的矩陣,無法直接SVD,我們的第一步即是使用均值或者0將這些矩陣填充。
  • 其次,進行SVD分解。
  • 第三:我們抽取前k個特徵來代表原來的矩陣,將其表示成兩個矩陣相乘P* Q
  • 第四,使用梯度下降法和RMSE更新這些參數 

訓練結束後,得到PQ矩陣,然後相乘補全全部矩陣。

SVD 與 SVD++ 的區別請參考https://blog.csdn.net/qfikh/article/details/103994319

好了我們先討論了LFM然後引出MF然後SVD SVD++,以上這些LFM技術我們都可以認爲是FM。

FM是指(Factorization Machine)因子分解機,即將一個矩陣分解成兩個矩陣相乘,具體到點擊率預估處,我們使用FM做一層embedding(即WX),然後再內積進行二階特徵組合。

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章