使用協同濾波(Collaborative Filtering)實現內容推薦系統

貝塔狗發表於2021-01-03

協同濾波可以同時使用不同使用者與內容之間的相似度進行內容推薦,這樣可以產生一些意料之外的推薦結果。也就是說,如果使用者A和使用者B具有類似的興趣,它可以向使用者A推薦一些使用者B喜歡的內容。另外,協同濾波模型可以自動地學習對使用者和內容的特徵表達(Embedding),而不需要手工來設計這些特徵。假設內容的特徵表達是固定的,那麼該模型可以學習對使用者的特徵表達來最佳地解釋使用者的偏好。這樣的結果就是,具有類似偏好地使用者在特徵空間中也是相近的。類似的,如果使用者的特徵表達是固定的,我們便可以學習對內容的特徵表達,來最佳的闡釋使用者對內容的反饋。這樣的結果就是,被類似使用者喜歡的電影,他們在特徵空間中也是相近的。

假設我們有m個使用者以及n個可以推薦的內容(例如音樂、電影、軟體和商品等等),使用者對內容的反饋則儲存在一個矩陣A \in \mathbb{R}^{m \times n}當中。A_{ij}代表使用者i對內容j的反饋,它可以代表使用者是否喜歡該內容,也可以是對內容的評分。那麼,協同濾波(Collaborative Filtering)則會學習以下的內容:

  • 一個使用者的特徵表達矩陣U\in\mathbb{R}^{m \times d}, 其中第i行是對第i個使用者的特徵表達,d(d\ll m)是使用者特徵表達的維度
  • 一個內容的特徵表達矩陣V\in\mathbb{R}^{n \times d},其中第j行是對第j個內容的特徵表達,d(d\ll n)是內容特徵表達的維度

協同濾波模型學習的目標是,使得矩陣乘積UV^T近似逼近於反饋矩陣A,也就是說使得每一對特徵向量的內積(U_i,V_j),都儘可能地接近A_{i,j}的值。於是,我們可以寫出如下的目標函式,並設法求出使其達到最小值的引數UV

Loss(U,V)=\frac{1}{|\Omega|}\sum_{(i,j)\in\Omega}(A_{ij}-(U_i,V_j))^2

其中\Omega=\{(i,j)|A_{i,j} \neq \varnothing, i\in[1,m], j\in[1,n]\},即反饋矩陣A中非空元素的下標集合。可以看到,這也是一個矩陣分解問題,即把矩陣A分解成兩個矩陣的乘積UV^T,可以通過奇異值分解(Singular Value Decomposition)的方法求解。但由於實際應用中,使用者僅能對少量的內容進行反饋,A矩陣是極其稀疏的,大多數時候奇異值分解並不能很好的解決該問題。不過,我們還是可以使用一種通用的隨機梯度下降法(Stochastic Gradient Descent)來迭代求解該問題,一個基於Tensor Flow的實現例子在這裡可以找到。

協同濾波模型的優點有:1)不需要專業領域的知識,因為對使用者和內容的特徵表達都是通過自動學習完成的。2)通過比較相似使用者的偏好,該模型可以幫助使用者發現新的感興趣內容。3)它只需要一個使用者反饋矩陣作為輸入,因此實現起來相對簡潔。但是該模型的缺點在於,如果某內容在訓練時沒有出現,則無法對向使用者推薦該內容,這是由於在訓練時要計算每一對使用者特徵向量和內容特徵向量的內積。

內容推薦系統在音樂、電影、軟體、交友及電子商務網站上有著很廣泛的應用,它極大的方便了使用者對感興趣內容的探索,並一定程度提高了對網站內容的流量。隨著人們對該話題研究的深入,也出現了很多基於深度學習的實現方法,例如圖神經網路(Graph Neural Network)。對該方法的介紹將會在之後的文章中對其進行討論。

 

相關文章