天天看點

推薦算法之潛在因子(Latent Factor)算法

緣起:

  • 在閱讀Facebook論文DLRM時,涉及到了潛在因子(LF)算法,通過查詢閱讀有了初步了解:通過對稀疏矩陣(稀疏的原因是有未知值)R進行uv分解,得到u、v矩陣,再通過u\v中向量乘積估計R矩陣中未知值。下面轉載通俗易懂的知乎帖,并對文章中沒有說清楚的部分進行了補充并以粗體形式标記。
  • 原帖标題:

    網易雲音樂的歌單推薦算法是怎樣的?

  • 回答内容:

    這裡我想給大家介紹另外一種推薦系統,這種算法叫做潛在因子(Latent

    Factor)算法。這種算法是在NetFlix(沒錯,就是用大資料捧火《紙牌屋》的那家公司)的推薦算法競賽中獲獎的算法,最早被應用于電影推薦中。這種算法在實際應用中比現在排名第一的 @邰原朗 所介紹的算法誤差(RMSE)會小不少,效率更高。我下面僅利用基礎的矩陣知識來介紹下這種算法。

    算法的思想是這樣:每個使用者(user)都有自己的偏好,比如A喜歡帶有小清新的、吉他伴奏的、王菲等元素(latent factor),如果一首歌(item)帶有這些元素,那麼就将這首歌推薦給該使用者,也就是用元素去連接配接使用者和音樂。每個人對不同的元素偏好不同,而每首歌包含的元素也不一樣。我們希望能找到這樣兩個矩陣:

    一,使用者-潛在因子矩陣Q,表示不同的使用者對于不用元素的偏好程度,1代表很喜歡,0代表不喜歡。比如下面這樣:

    推薦算法之潛在因子(Latent Factor)算法

二,潛在因子-音樂矩陣P,表示每種音樂含有各種元素的成分,比如下表中,音樂A是一個偏小清新的音樂,含有小清新這個Latent Factor的成分是0.9,重口味的成分是0.1,優雅的成分是0.2……

推薦算法之潛在因子(Latent Factor)算法

利用這兩個矩陣,我們能得出張三對音樂A的喜歡程度是:張三對小清新的偏好音樂A含有小清新的成分+對重口味的偏好音樂A含有重口味的成分+對優雅的偏好音樂A含有優雅的成分+……

推薦算法之潛在因子(Latent Factor)算法
推薦算法之潛在因子(Latent Factor)算法

即:0.60.9+0.80.1+0.10.2+0.10.4+0.70=0.69

每個使用者對每首歌都這樣計算可以得到不同使用者對不同歌曲的評分矩陣 R ~ \widetilde{R} R

。(注,這裡的破浪線表示的是估計的評分,接下來我們還會用到不帶波浪線的 R R R表示實際的評分):

推薦算法之潛在因子(Latent Factor)算法

是以我們隊張三推薦四首歌中得分最高的B,對李四推薦得分最高的C,王五推薦B。

如果用矩陣表示即為:

R ~ = Q P T \widetilde{R}=QP^T R

=QPT

我們所說的“潛在因子”指的就是以上例子中的 Q Q Q和 P T P^T PT矩陣,那麼

下面問題來了,以上的潛在因子(latent factor)是怎麼得到的呢?由于面對海量的讓使用者自己給音樂分類并告訴我們自己的偏好系數顯然是不現實的,事實上我們能獲得的資料隻有使用者行為資料。我們沿用 @邰原朗的量化标準:單曲循環=5, 分享=4, 收藏=3, 主動播放=2 , 聽完=1, 跳過=-2 , 拉黑=-5,在分析時能獲得的實際評分矩陣R,也就是輸入矩陣大概是這個樣子:

推薦算法之潛在因子(Latent Factor)算法

事實上這是個非常非常稀疏的矩陣,因為大部分使用者隻聽過全部音樂中很少一部分。如何利用這個矩陣去找潛在因子呢?這裡主要應用到的是矩陣的UV分解(即将矩陣 R R R通過矩陣UV分解分解成矩陣 Q Q Q、 P T P^T PT的矩陣乘積,這裡 Q Q Q、 P T P^T PT的乘積記為 R ~ \widetilde{R} R

隻是矩陣 R R R的近似)。也就是将上面的評分矩陣分解為兩個低次元的矩陣,用Q和P兩個矩陣的乘積去估計實際的評分矩陣,而且我們希望估計的評分矩陣 R ~ \widetilde{R} R

推薦算法之潛在因子(Latent Factor)算法

和實際的評分矩陣不要相差太多(指的是與矩陣 R R R非缺失值部分值接近),也就是求解下面的目标函數:

推薦算法之潛在因子(Latent Factor)算法

這裡涉及到最優化理論,在實際應用中,往往還要在後面加上2範數的罰項,然後利用梯度下降法就可以求得這P,Q兩個矩陣的估計值。這裡我們就不展開說了。例如我們上面給出的那個例子可以分解成為這樣兩個矩陣:

推薦算法之潛在因子(Latent Factor)算法

這兩個矩陣相乘就可以得到估計的得分矩陣:

推薦算法之潛在因子(Latent Factor)算法

将使用者已經聽過的音樂剔除後,選擇分數最高音樂的推薦給使用者即可(紅體字)。

在這個例子裡面使用者7和使用者8有強的相似性:

推薦算法之潛在因子(Latent Factor)算法

從推薦的結果來看,正好推薦的是對方評分較高的音樂:

推薦算法之潛在因子(Latent Factor)算法

繼續閱讀