Recommender System 推薦系統
由於網絡電商的興起,商品由實體中有限的個數到互聯網時代無數商品可以購買,使得長尾理論被廣泛關注。這些都是推薦系統興起的條件。推薦有多種類型,我們關注的是對個體用戶的定製推薦。
Formal Model
Utility Matrix
上圖是一個Utility Matrix的例子,A-D表示用戶,矩陣中是用戶對不同電影的評分。推薦系統的目標就是推測出空白處的評分。當然在現實場景中這個矩陣肯定是極其稀疏的,我們沒必要推測所有空白欄的值,而是計算一部分評分較高的電影,作爲根據用戶喜好做出的推薦。
Key Problem
- 如何獲取Utility Matrix中的R,即上例中的評分。
- 如何根據已有的用戶評分推斷用戶對未評分item的喜好度。(主要關注高分部分)
- 如何評價推薦系統的推薦方法
下面來解決上述問題:
Gathering Ratings獲取評分
explicit
ask people to rate items
doesn’t scale: only a small fraction of users leave ratings and reviewsimplicit
Learn ratings from user actions- E.g., purchase implies high rating
What about low ratings?
Extrapolateing Utilities推斷未知項
主要的問題是utilities Matrix是非常稀疏的,而且許多用戶沒有對物品進行評分。
推薦系統的推薦方法主要有三種:基於內容的,協同過濾以及基於隱含元素的。具體的方法實現在後面詳細講解。Evaluation將在後面的講解。
Content-Based Recommendations
Main idea: 將與用戶X打高分的物品相似的物品推薦給用戶X。例如,有相同演員或導演的電影用戶可能都喜歡,相似內容的文章或新聞用戶可能都感興趣以及將有共同好友的人推薦爲好友等。
Item Profiles
item profile 就是特定物品的特徵,如電影的演員,導演,類型等特徵就是電影的profile。
For each item,create an item profile.將item profile看作是一個向量。
因此,profile可以看成是item(document)的重要的特徵或詞。這個重要特徵的選取往往使用的是TF-IDF。(TF-IDF的解釋就不說了,可自行百度之)
User Profiles
根據已有的item profiles得到user profiles
More Sophisticated aggregations possible
對於Boolean utilities Matrix,user profile的計算直接求平均即可。
但是對於任意數字評分,如1-5,由於不同用戶的評分標準不同,則需要對數據進行一個歸一化處理,圖例:
有了這user profile x和item profile i後,要預測用戶對於i的喜好,可以通過計算餘弦相似度求得,即U(x, i)= con(
Pros: content-based approach
- 不需要其他用戶的數據
- 可以爲每個用戶量身推薦
- 可以推薦新的或者不火爆的物品(no first-rater problem)
- 推薦時有推薦理由(content features that caused an item to be recommended)
Cons: content-based approach
- 尋找和合適的feature有時候是很困難的,如圖像,音樂等等的特徵如何界定
- 過度特化 overspecialization
- 新用戶的Cold-start 問題
Collaborative Filtering 協同過濾
協同過濾的核心思想就是喜歡相同東西的用戶可能有類似的喜好。因此將類似用戶評分較高的東西作爲推薦。
Measuring Similarity
因此我們首先需要找到相似的用戶羣,我們可以使用Jaccard相似度或者餘弦相似度。
Jaccard Similarity
problem:它只考慮了同時給分的情況而忽略了用戶的評分大小。
Cosine Similarity
problem:將未評分的項視作了negative
Centered Cosine皮爾遜相似度
我們看到cosine相似度雖然分類正確,但是sim(A, B)和sim(A,C)之間的差距很小,而且未評分的項都當做negative處理了,下面介紹在此基礎上的改進——Centered Cosine。
將評分都減去每行評分的平均值,從而正值表示高於平均分,負值表示低於平均分。
通過這個歸一化處理使得空白項不再爲negative而是均值,同時也解決了不同用戶評分標準不同的問題。結果如下:
Rating Prediction
Option1:
Option2:
Item-Item Collaborative Filtering
前面我們討論的都是用戶和用戶之間的協同過濾,同樣的,我們也可以使用Item-Item 的協同過濾。
Item-Item V.s. User-User
理論上兩者應該推薦效果應該差不多,但是實際上並不同。實際中,item-Item的效果比user-user要好,因爲Item要比用戶簡單得多。
- items belong to a small set of “genres”, users have varied tastes
- item similarity is more meaningful than user similarity
Implementing Collaborative Filtering 協同過濾的實現
複雜度
最耗時間的是尋找k個相似用戶(Item)的過程。需要O(|U|),其中|U| = size of utility matrix 普通的預處理過程也很耗時。該怎麼改進呢?
其實我們前面已經學過如何在高維數據中尋找near-neighbor ——LSH算法。
或者是聚類算法
以及馬上要將的降維方法。
Pros/Cons of Collaborative Filtering
Hybrid Methods
Global Baseline Estimate
例如要預測Joe對電影The sixth sense的評分,而Joe並沒有對任何與The six sense 類似的電影打過分,如果仍然使用Item-Item 協同過濾顯然是不行的。
Global Baseline approach:
Combining Global Baseline with Collaborative Filtering
因此最終的評分是Global Baseline estimate和CF的線性和
總結:
Evaluating Recommender Systems
如何評價一個推薦系統的好壞呢。通常在utilities Matrix中選擇一部分數據作爲test data set測試集。然後用推薦系統的方法預測這部分的評分,一種較爲簡單的方法是將預測值和已知結果相比較,計算均方根誤差從而判斷系統的預測性能。
Problems with Error Measures
有時候過分關注預測誤差值的大小往往會造成很多問題,如預測的多樣性,以及所處的場景和預測結果的順序等等問題。
而且在實際應用中我們只關心或者說只預測有較高評分的Item。RMSE might penalize a method that does well for high ratings and badly for others.
另一個方法是Precision at top k : 選擇percentage of predictions in the user’s top k withheld ratings.
Ref:
…
https://class.coursera.org/mmds-003/lecture
http://blog.csdn.net/sherrylml