[Notes] Matrix Factorization Techniques for Recommender Systems
論文連結 Paper Link
摘要 Abstract
作者提出Matrix Factorization (MF)的方法來建製推薦系統,效能好過nearest-neighbor techniques。
介紹 Introduction
在推薦系統的設計中,我們大致上可以分門別類為兩種方法:
(1) Content Filtering(內容過濾):為每個 user 或 item 創建一個 doc 以描述其性質,算出匹配的分數已達成推薦。(e.g. Music Genome Project)
(2) Collaborative Filtering(協同過濾):分析 users 之間的關係和 items 之間的相互依賴關係,以識別新的 user 與 item 間的關聯。(e.g. Tapestry) 一般而言,協同過濾通常比內容過濾更準確,但是它有 cold-start 的困擾。如果新 user 與其他 users 之間沒有任何相互依賴關係,我們可能就無法推薦任何東西。
在Collaborative Filtering中,我們又可以把他的做法分成兩個類別:
(1) Neighborhood Methods:計算 item-item 間的關係或 user-user 之間的關係,來推薦 user 可能會喜歡的產品。Item-oriented:基於同一 user 對 neighbor-item 的評分,來評估 user 對當前 item 的偏好。因為一個產品的鄰居通常有類似的屬性,當由同一用戶評分時,它們往往會獲得相似的 rating。User-oriented:識別志同道合的用戶,這些用戶可以相互補充rating。
下圖在做的即為 User-oriented 的 Neighborhood method。Joe 喜歡這三部電影,我們就找出也喜歡這三部電影的人有哪些,然後看他們喜歡哪些其他的電影,推薦給Joe。
(2) Latent Factor Methods:它試圖通過對 item 和 user 進行 feature extraction。例如從 rating patterns 推斷出的 20 到 100 個 factors 來解釋rating。最常使用的方法即為 Matrix Factorization (矩陣分解)。
MATRIX FACTORIZATION
當 user 對他們看過的某部電影給出 rating 時(e.g. 從 1 到 5 分),這個反饋集合可以以矩陣的形式表示。其中 row 代表每個 user,而 column 代表不同的電影(item)。 顯然矩陣很sparse,因為不是每個人都會看每部電影,每個人對電影都有不同的品味。矩陣分解的一個優點是它可以包含 implicit-feedback,這些訊息不是 explicit 直接給出的,而是可以通過分析用戶行為得出的。
以我自己的解讀,模型想要做的事情是:從已知的 users 以及 movies 中,有些 movies 是使用者已經評分的,有些沒有。透過 Matrix Factorization 的方式,來得到使用者的喜好。有了這些代表喜好的權重之後,可以計算他對其他尚未評分的電影的評分會是多少,並推薦電影給他。簡單來說就是模型要學到這個 user 與 latent factor 轉換的權重,以及 latent factor 與 movie 轉換的權重。
By the way, why not using Singular Value Decomposition (SVD)?
Ans. (1) Many missing data (2) Over-fitting.
在 CF 中應用 SVD 需要考慮 user-item rating matrix。由於稀疏性導致的缺失值比例很高,當矩陣不完整時,傳統的 SVD 是 undefined。此外,不小心只處理相對較少的已知條目很容易產生過度擬合的現象。早期的系統依靠imputation 插補來填補缺失的 rating 並使 rating matrix 變得密集。然而,imputation 非常昂貴,因為它增加了資料量。此外,不準確的插補可能會嚴重扭曲數據產生 noise。(這也是為何我們上方的 MF 要做 Regularization!)
模型訓練與更新的的方法有兩種:第一種是Stochastic Gradient Descent (SGD),第二種事Alternating least squares (ALS)。
[1] Stochastic Gradient Descent (SGD):
[2] Alternating least squares (ALS):
ADDING BIAS
bui 為預測出來的 rating r_hat_ui 所涉及的 bias term,考慮了 user 和 item 的影響。所有 items 的 rating 的平均用 μ 表示;bi 代表這個 item 的 rating 與所有 items 的 rating 的平均的差異;bu 代表這個 user 給的 rating 與所有 users 給的 rating 的平均的差異。
上述很熬口,舉例來說:假設所有電影的平均評分 μ 為 3.7 顆星。此外,泰坦尼克號比一般電影要好,因此它的評分往往比平均水平高 0.5 顆星。另一方面,Joe 是一個挑剔的用戶,他的評分往往比平均水平低 0.3 顆星。因此,喬對泰坦尼克號的評價為 3.9 顆星 (3.7 + 0.5 - 0.3)。公式如下:
TEMPORAL DYNAMICS
分析 Analysis
相較於過去的協同過濾 Collaborative Filtering,MF有以下的優點:
(1) Generalization & Scalability (泛化能力與擴充性的提升)。把 user 以及 item 映射到 latent space 中,某種程度上可以看成在學一個 Embedding,解決資料稀疏性的問題。
(2) 空間複雜度降低,我們不需要再 Maintain 一個 M*N 的 Table,現在只需要存下 users & items 的 latent vector,即 (M+N)*K。
但他也是有缺點的:
跟 CF 一樣,MF 仍無法加入使用者、物品和上下文的關聯特徵,使得 MF 喪失了利用很多有效資訊的機會。
參考資料 Reference
- [Paper Summary] MF for RS
2. 他人CSDN筆記
3. 機器學習技法 Machine Learning Techniques (58–61)
4. Code Example (via PySpark):
5. MF Explanation + Codes
This article will be updated at any time! Thanks for your reading. If you like the content, please click the “clap” button. You can also press the follow button to track new articles. Feel free to connect with me via LinkedIn or email.