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

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

        一、協同過濾算法描述

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


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

        二、User-based算法與Item-based算法對比

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

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

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

        1. 數據稀疏性。一個大型的電子商務推薦系統一般有非常多的物品,用戶可能買的其中不到1%的物品,不同用戶之間買的物品重疊性較低,導致算法無法找到一個用戶的鄰居,即偏好相似的用戶。

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

        Iterm-based的基本思想是預先根據所有用戶的歷史偏好數據計算物品之間的相似性,然後把與用戶喜歡的物品相類似的物品推薦給用戶。還是以之前的例子爲例,可以知道物品a和c非常相似,因爲喜歡a的用戶同時也喜歡c,而用戶A喜歡a,所以把c推薦給用戶A。

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

        三、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的打分向量進行線性迴歸計算得到,爲迴歸模型的誤差。具體怎麼進行線性迴歸文章裏面沒有說明,需要查閱另外的相關文獻。

        四、結論

        作者通過實驗對比結果得出結論:1. Item-based算法的預測結果比User-based算法的質量要高一點。2. 由於Item-based算法可以預先計算好物品的相似度,所以在線的預測性能要比User-based算法的高。3. 用物品的一個小部分子集也可以得到高質量的預測結果。

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

        本博客搬遷至http://ralphadu.com/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章