基於物品的協同過濾推薦算法——讀「Item-Based Collaborative Filtering Recommendation Algorithms」

最近參加KDD Cup 2012比賽,選了track1,作微博推薦的,找了推薦相關的論文學習。「Item-Based Collaborative Filtering Recommendation Algorithms」這篇是推薦領域比較經典的論文,如今不少流行的推薦算法都是在這篇論文提出的算法的基礎上進行改進的。

1、協同過濾算法描述算法

推薦系統應用數據分析技術,找出用戶最可能喜歡的東西推薦給用戶,如今不少電子商務網站都有這個應用。目前用的比較多、比較成熟的推薦算法是協同過濾Collaborative Filtering,簡稱CF推薦算法,CF的基本思想是根據用戶以前的喜愛以及其餘興趣相近的用戶的選擇來給用戶推薦物品。性能


如圖1所示,在CF中,用m×n的矩陣表示用戶對物品的喜愛狀況,通常用打分表示用戶對物品的喜愛程度,分數越高表示越喜歡這個物品,0表示沒有買過該物品。圖中行表示一個用戶,列表示一個物品,Uij表示用戶i對物品j的打分狀況。CF分爲兩個過程,一個爲預測過程,另外一個爲推薦過程。預測過程是預測用戶對沒有購買過的物品的可能打分值,推薦是根據預測階段的結果推薦用戶最可能喜歡的一個或Top-N個物品。學習

2、User-based算法與Item-based算法對比網站

CF算法分爲兩大類,一類爲基於memory的(Memory-based),另外一類爲基於Model的(Model-based),User-based和Item-based算法均屬於Memory-based類型,具體細分類能夠參考wikipedia的說明。spa

User-based的基本思想是若是用戶A喜歡物品a,用戶B喜歡物品a、b、c,用戶C喜歡a和c,那麼認爲用戶A與用戶B和C類似,由於他們都喜歡a,而喜歡a的用戶同時也喜歡c,因此把c推薦給用戶A。該算法用最近鄰居(nearest-neighbor)算法找出一個用戶的鄰居集合,該集合的用戶和該用戶有類似的喜愛,算法根據鄰居的偏好對該用戶進行預測。.net

User-based算法存在兩個重大問題:
3d

1. 數據稀疏性。一個大型的電子商務推薦系統通常有很是多的物品,用戶可能買的其中不到1%的物品,不一樣用戶之間買的物品重疊性較低,致使算法沒法找到一個用戶的鄰居,即偏好類似的用戶。rest

2. 算法擴展性。最近鄰居算法的計算量隨着用戶和物品數量的增長而增長,不適合數據量大的狀況使用。orm

Iterm-based的基本思想是預先根據全部用戶的歷史偏好數據計算物品之間的類似性,而後把與用戶喜歡的物品相相似的物品推薦給用戶。仍是以以前的例子爲例,能夠知道物品a和c很是類似,由於喜歡a的用戶同時也喜歡c,而用戶A喜歡a,因此把c推薦給用戶A。blog

由於物品直接的類似性相對比較固定,因此能夠預先在線下計算好不一樣物品之間的類似度,把結果存在表中,當推薦時進行查表,計算用戶可能的打分值,能夠同時解決上面兩個問題。

3、Item-based算法詳細過程

(1)類似度計算

Item-based算法首選計算物品之間的類似度,計算類似度的方法有如下幾種:

1. 基於餘弦(Cosine-based)的類似度計算,經過計算兩個向量之間的夾角餘弦值來計算物品之間的類似性,公式以下:


其中分子爲兩個向量的內積,即兩個向量相同位置的數字相乘。

2. 基於關聯(Correlation-based)的類似度計算,計算兩個向量之間的Pearson-r關聯度,公式以下:


其中表示用戶u對物品i的打分,表示第i個物品打分的平均值。

3. 調整的餘弦(Adjusted Cosine)類似度計算,因爲基於餘弦的類似度計算沒有考慮不一樣用戶的打分狀況,可能有的用戶偏向於給高分,而有的用戶偏向於給低分,該方法經過減去用戶打分的平均值消除不一樣用戶打分習慣的影響,公式以下:


其中表示用戶u打分的平均值。

(2)預測值計算

根據以前算好的物品之間的類似度,接下來對用戶未打分的物品進行預測,有兩種預測方法:

1. 加權求和。

用過對用戶u已打分的物品的分數進行加權求和,權值爲各個物品與物品i的類似度,而後對全部物品類似度的和求平均,計算獲得用戶u對物品i打分,公式以下:


其中爲物品i與物品N的類似度,爲用戶u對物品N的打分。

2. 迴歸。

和上面加權求和的方法相似,但迴歸的方法不直接使用類似物品N的打分值,由於用餘弦法或Pearson關聯法計算類似度時存在一個誤區,即兩個打分向量可能相距比較遠(歐氏距離),但有可能有很高的類似度。由於不一樣用戶的打分習慣不一樣,有的偏向打高分,有的偏向打低分。若是兩個用戶都喜歡同樣的物品,由於打分習慣不一樣,他們的歐式距離可能比較遠,但他們應該有較高的類似度。在這種狀況下用戶原始的類似物品的打分值進行計算會形成糟糕的預測結果。經過用線性迴歸的方式從新估算一個新的值,運用上面一樣的方法進行預測。從新計算的方法以下:


其中物品N是物品i的類似物品,經過對物品N和i的打分向量進行線性迴歸計算獲得,爲迴歸模型的偏差。具體怎麼進行線性迴歸文章裏面沒有說明,須要查閱另外的相關文獻。

4、結論

做者經過實驗對比結果得出結論:1. Item-based算法的預測結果比User-based算法的質量要高一點。2. 因爲Item-based算法能夠預先計算好物品的類似度,因此在線的預測性能要比User-based算法的高。3. 用物品的一個小部分子集也能夠獲得高質量的預測結果。

轉載請註明出處,原文地址:http://blog.csdn.net/huagong_adu/article/details/7362908




相關文章
相關標籤/搜索