論文筆記《Item-Based Collaborative Filtering Recommendation Algorithms》

一、基本信息

論文題目:《Item-Based Collaborative Filtering Recommendation Algorithms》

發表期刊及年份:WWW 2001

二、摘要

近幾年由於可獲得信息的大量增長和訪問網站的用戶數大量增加,產生了一些重要的挑戰:產生高質量的推薦、每秒爲大量用戶和物品實現實時推薦和在面臨數據稀疏性的情況下如何實現快速收斂。在傳統的協同過濾網絡中,由於用戶的增長而變得效果很差。爲了解決這些問題,作者提出了基於物品的協同過濾算法。基於物品的協同過濾算法首先分析用戶-物品矩陣去挖掘不同物品直接的關係,然後利用這些關係來爲用戶進行推薦。

在這篇論文中,作者分析了多種基於物品的協同過濾算法,研究了不同的計算物品相似性的方法(例如:物品-物品相關性、cosine相關性)和從這些相似物品中找出推薦物品的方法(例如:權重加和與迴歸)。最後,我們利用實驗評估了我們的結果,並且將它與基礎的k-nn算法進行比較。我們的實驗表明,基於物品的算法較基於用戶的算法性能有較大的提升,同時推薦的質量也比基於用戶的算法強。

三、簡介

協同過濾網絡在實踐和研究中都有十分重要的作用,但是還是有兩個要克服的問題。

第一個問題就是要改善協同過濾網絡的可擴展性。

第二個要改善的問題是改善推薦質量。用戶肯定會對哪些推薦不準確的推薦系統產生反感。

在這篇論文中,作者提出了基於物品的協同過濾算法來進行解決這些問題。傳統基於用戶的協同過濾網絡有一個瓶頸:需要在大量的用戶中尋找潛在相關用戶,我們使用基於物品的協同過濾網絡繞過了這個瓶頸,先去尋找相關的物品集合,因爲物品之間的關係是相對靜態的。

1.相關工作

Tapestry是最早的一個基於協同過濾網絡的推薦算法,它的推薦依賴於人們之間密切的關係(例如在一個辦公室中,或者一個公司中),但是在一個大型的系統中,我們不能依靠每個人都有聯繫。後來,有人進行改進,研究出了基於打分的協同過濾網絡。後來又有貝葉斯網絡、聚類、Horting等方法。

貝葉斯網絡通過在訓練集上使用決策樹構建一個模型,這個模型可以通過幾小時或者幾天來構建一個很小的模型,但是它的速度會特別快。貝葉斯網絡適用於用戶偏好變化較慢的情況,不適用於速度更新快的網絡。

聚類方法通過證明某一個組的用戶有相同的愛好,然後當進行預測時,把一個組的意見進行平均即可。聚類一旦完成,速度可能很快,但是聚類的時候可能處於邊緣的一些用戶可能出現不準確的情況。

Horting是一個基於圖的方法。

Schafer等人曾經提出一個推薦系統,雖然取得了較大的成功,但是在廣泛應用方面還是有很大的限制,比如說:數據集的稀疏性、高維性等等。

我們的工作可以將這些問題解決。

2.貢獻

這篇論文主要有三個主要的貢獻:

1.分析了基於物品的預測方法並且證明了不同的方法去實現這些子任務。

2.構建了一個計算物品相似度的預計算模型提高在線可擴展性。

3.從實驗上比較了基於物品的推薦算法和經典的基於用戶的算法。

四、協同過濾推薦網絡

推薦系統的主要作用是產生一個預測分數或者是一系列Top-N物品集合。基於物品的協同過濾網絡的基本思路是推薦物品或者基於其它相似人員的預測。

1.協同過濾網絡概述

用戶集合:U={u1,u2,…,um},物品集合:I={i1,i2,…,in},用戶ui感興趣的集合爲Iui

關於用戶感興趣的集合可以通過很多方式得到,比如用戶的評價,用戶的購買記錄,分析時間日誌,或者挖掘網絡超鏈接等。

設定一個特定用戶ua∈U,模型的任務就是以下面的兩種形式來發現物品的相似性:

  • 預測

    預測的值是一個值Pa,j,用來表示用戶對ij∉Iua這個物品的喜愛性。預測的值的範圍與Iua的範圍應該是一致的(比如說:都是1-5)。

  • 推薦物品

    是一個集合Ir,Ir∈I,是用戶最喜歡的物品。注意,推薦物品集合是不在用戶已購買的集合之內,也就是說Ir∩Iua=∅,這也就是我們所說的Top-N推薦。
    在這裏插入圖片描述

上圖顯示了協同過濾網絡處理過程的的概要圖。CF算法將整個mxn矩陣視爲打分矩陣,A。每一個元素ai,j代表第i個用戶再第j個物品上的打分,他們都是同一個數字範圍,0代表還沒有打分。協同過濾算法一般可分爲兩類基於Memory(user-based)和基於Model(item-based)的算法。

基於Memory的協同過濾算法:這種方法利用整個的用戶-物品數據進行預測。這些系統利用統計方法尋找與目標用戶具有相似歷史記錄的用戶。一旦這個羣組的用戶生成了,這些系統就會採用各種各樣的方法來進行預測或者進行top-N物品推薦。

基於Model的協同過濾算法:這種方法首先對用戶評價進行模型構建。這種方法採用一個概率的方法並且將協同過濾處理視爲計算用戶預測的一個期望值,將他的評價利用到其它物品上。模型的構造過程通過不同的算法來實現,比如貝葉斯網絡,聚類和基於規則的方法。貝葉斯構造一個概率模型,聚類將協同過濾視爲一個分類過程,將相似的用戶分爲同一個類,估算用戶在一個類內的概率,然後利用條件概率來計算可能的評價。基於規則的方法是利用相關規則對一起購買的物品進行研究,然後根據物品的相關性強弱來生成物品推薦。

2.基於用戶的協同過濾網絡存在的問題

之前基於用戶的協同過濾網絡是非常成功的,但是他們的廣泛應用缺受到了限制,主要原因如下:

  • 稀疏性

    實際上,許多推薦系統是用來評價很大的物品集。即使用戶買2000種書,那也不到總數的1%。因此,推薦系統不能爲用戶做出任何的推薦,最終導致推薦的準確率很低。

  • 可擴展性

    緊鄰算法伴隨用戶和物品的增長需要的計算力會快速增長。伴隨數萬用戶和物品的增長,一個典型的基於web的推薦系統運行已存在的算法會遇到嚴重的擴展性問題。

此處省略一萬字。主要是作者研究其它人對這兩個問題的改進。

五、基於物品的協同過濾算法

基於物品的協同過濾網絡研究目標用戶評價過得物品並且計算這些物品與目標物品的相似性,然後選擇出k個最相近的物品。一旦最相似的物品找到了,然後就可以通過平均目標用戶在這些相似物品上的權重來計算prediction了。我們稱之爲相似性計算和prediction生成。

1.物品相似性計算

基於物品的協同過濾算法最重要的一步就是計算物品的相似性然後選出最相近的物品。兩個物品i和j之間的相似度計算的基本思想是隔離對這兩個項目都進行過評分的用戶,然後應用相似度計算技術確定相似度si,j。圖2指出了具體的計算方式。行代表用戶,列代表物品。

此處的isolate這個單詞按我的理解是挑選出這些進行計算的意思,一開始的時候以爲把這些篩選掉,那麼下面的圖右方的解釋相矛盾了。

在這裏插入圖片描述

圖右邊說明的意思:

物品與物品的相似性是通過研究同時打分的物品來的。在計算Item i和j的相似性si,j的時候,每一對都是來自不同的用戶,在這個例子中他們是來自1,u還有m-1。

有很多方式來計算物品之間的相關性,下面敘述三種。

1.cosine相似性

在這個例子中,兩個物品是在m維用戶空間中的兩個向量(結合圖2就知道爲什麼是兩個m維向量了)。圖2兩個向量中i與j的相似性sim(i,j)的計算方式如下:
sim(i,j)=cos(i,j)=iji2j2 \operatorname{sim}(i, j)=\cos (\vec{i}, \vec{j})=\frac{\vec{i} \cdot \vec{j}}{\|\vec{i}\|_{2} *\|\vec{j}\|_{2}}
其中“·”代表兩個向量點乘的意思。

2.基於correlation相似性(皮爾遜相關性)

在計算之前我們必須選出(isolate)兩個物品i和j都評價過的用戶,然後利用這些用戶進行下面的計算:
sim(i,j)=uU(Ru,iRˉi)(Ru,jRˉj)uU(Ru,iRˉi)2uU(Ru,jRˉj)2 \operatorname{sim}(i, j)=\frac{\sum_{u \in U}\left(R_{u, i}-\bar{R}_{i}\right)\left(R_{u, j}-\bar{R}_{j}\right)}{\sqrt{\sum_{u \in U}\left(R_{u, i}-\bar{R}_{i}\right)^{2}} \sqrt{\sum_{u \in U}\left(R_{u, j}-\bar{R}_{j}\right)^{2}}}
Ru,i代表的是用戶u對物品i的評分,Riˉ\bar{R_i}代表物品i的平均得分。

3.改進的cosine相似性

基於用戶的協同過濾網絡和基於物品的協同過濾網絡在計算相似性時一個主要的不同就是基於用戶的協同過濾網絡在矩陣中是按行來計算的,每一對代表不同用戶的評價。使用cosine來進行相似性計算有很大的不足,不同用戶的評價範圍是不同的。經過改善的cosine相似性通過減去響應用戶的平均值抵消掉了這部分的誤差。相似性計算如下:
sim(i,j)=uU(Ru,iRˉu)(Ru,jRˉu)uU(Ru,iRˉu)2uU(Ru,jRˉu)2 \operatorname{sim}(i, j)=\frac{\sum_{u \in U}\left(R_{u, i}-\bar{R}_{u}\right)\left(R_{u, j}-\bar{R}_{u}\right)}{\sqrt{\sum_{u \in U}\left(R_{u, i}-\bar{R}_{u}\right)^{2}} \sqrt{\sum_{u \in U}\left(R_{u, j}-\bar{R}_{u}\right)^{2}}}
在這個公式中,Ruˉ\bar{R_u}是第u個用戶打分的平均值。

2.prediction計算

一旦我們基於設定的相似性標準挑選出了最相似的物品,下一步就是研究目標用戶的打分然後獲得prediction。作者提出了兩種方法。

1.權重加和

爲了計算用戶u對物品i的prediction,這種方法計算用戶u對於和i相似的產品打分的加和。每個打分通過物品i與j的相似性si,j來進行衡量。用Pu,i這個指標來進行衡量:
Pu,i=all similar items, N(si,NRu,N)all similar items ,N(si,N) P_{u, i}=\frac{\sum_{\text {all similar items, } \mathrm{N}}\left(s_{i, N} * R_{u, N}\right)}{\sum_{\text {all similar items }, \mathrm{N}}\left(\left|s_{i, N}\right|\right)}
si,N表示物品i與N的相似度,Ru,N表示用戶u對物品N的打分。這種方法嘗試去觀察用戶是怎樣給相似的物品打分。加權和由相似項之和縮放以確保預測在預定範圍內。

2.迴歸

迴歸這種方法與權重加和不同的是它不是直接使用物品間的相似性,而是基於迴歸模型的打分的估計估計值。作者發現使用cosine或者correlation這兩種度量方式有一些缺點:就是在兩個向量距離很遠的情況下,也可能有很大的相似性。使用這種所謂的相似物品可能會導致很差的預測效果。基本的思想與權重加和是一致的,就是不是用原生的打分數據,Ru,N,而是使用基於線性迴歸模型的R’u,N。計算方法如下:
RN=αRˉi+β+ϵ \overline{R_{N}^{\prime}}=\alpha \bar{R}_{i}+\beta+\epsilon
其中參數α和β通過整個打分向量決定的。∈是迴歸模型的偏差。如何進行實現這個公式好像沒有說。

3.性能含義

在基於用戶的協同過濾算法中,用戶-用戶相似性計算是整個系統性能的瓶頸。解決他的一個辦法就是使用基於模型的推薦算法。在這篇論文中作者提出了一個基於模型的計算法方法。相似性計算依然是基於關係的,但是計算是在物品的空間內。物品相對於用戶來說是相對靜態的,變化是相對較少的。對於物品j來說我們只計算他們最相近的k個物品,k是遠遠小於n(物品總數)的。我們稱k爲model size。

爲了給用戶u對於物品i做出prediction,我們的算法首先查詢預先計算好的k個最相似的物品,然後看這些物品用戶買了多少,基於這些考慮然後計算預測值。

六、實驗評估

1.數據集

Movie Data

80%訓練集,20%測試集。在數據集中也提出了稀疏度這個概念:1-nonzero entriestotal entries\frac{\text{nonzero entries}}{\text{total entries}},在這篇文章中,我們把這個數據集成爲ML。

數據集地址:https://grouplens.org/datasets/movielens/

2.評價標準

統計準確性指標:這個指標通過比較數字的推薦分數與測試數據集中的實際用戶打分來評估系統的準確性。MAE是一個常用的打分預測標準。MAE是一個推薦與用戶實際具體分數的偏差。MAE的計算方法是首先把N個絕對值誤差相加,然後取平均值。
MAE=i=1NpiqiN M A E=\frac{\sum_{i=1}^{N}\left|p_{i}-q_{i}\right|}{N}
MAE的值越小,則推薦系統預測的值越準確。Root Mean Squared Error(RMSE)和Correlation也經常用作統計準確性指標。

決策支持準確性指標:這個指標評價了一個預測引擎在幫助人們選擇物品時的有效性。這種度量標準架設預測過程是一個二元操作——物品是預測的對還是不對。基於這種考慮,如果用戶僅僅選擇4分或者以上的物品,那麼2.5分和1.5分是一樣的。最常用的決策支持準確性指標有:reversal rate,weighted errors 和ROC sensitivity。我們使用MAE作爲我們的評估標準。

1.實驗過程

實驗步驟:首先把數據分爲訓練集和測試集。然後再開始整個數據集訓練之前我們首先確定不同算法的敏感度,然後從敏感度曲線我們修正最優值。爲了確定參數的值,我們僅僅使用訓練集,進一步把訓練集分爲訓練集和測試集。我們做了一個10段的交叉訓練集,然後最後取MAE的平均值。

基於用戶系統的基準:爲了比較基於物品的協同過濾算法的性能,我們也把訓練集輸入一個應用了Pearson緊鄰(用戶-用戶)的算法。我們實現了一個靈活的基於用戶的協同過濾系統,經過調試,我們使用了最好的基於Pearson緊鄰算法,並且把它配置了一個最優的配置,不用擔心性能問題。

實驗平臺:我們是用c實現的,並且使用一個優化標誌——06。

3.實驗結果

我們的結果主要分爲兩部分——質量結果和性能結果。在評價質量結果的時候,我們首先確定了一些參數,這些參數包括鄰居的數量,訓練集和測試集的比例x的值,還有不同的度量標準的影像。在確定參數時我們使用訓練集,並且進一步將訓練集劃分爲訓練集和測試集。

這個地方不是特別懂,爲什麼要將訓練集進一步劃分爲訓練集和測試集呢?懂了以後回來繼續補充。

1)相似算法的效果

我們實現了三種不同的相似性算法,基於cosine,基於調整的cosine和correlation,並且利用他們在我們的數據集上進行訓練。對於每個相似算法,我們都計算他們的鄰居並且使用權重加和來生成預測,我們使用訓練集進行訓練,使用測試集來計算MAE。

下圖顯示了實驗結果。從結果可以看出,爲餘弦相似度計算偏離用戶平均值(也就是減去用戶的平均值)具有明顯的優勢,因爲在這種情況下,MAE明顯較低。 因此,我們爲其餘的實驗選擇調整後的餘弦相似度。

在這裏插入圖片描述

2)訓練集/測試集比例敏感度

爲了決定數據集密度的敏感性,我們進行了一系列的實驗,x從0.2到0.9,每次增加0.1。對於每個比例x我們都使用兩種預測方案——權重加和和迴歸。當x增加時,預測的效果也會增加。一開始,基於迴歸的方法筆記本的方法要好,但是當我們增加x時,基於迴歸的方法效果開始下降。最後我們選擇了0.8作爲作爲我們一個後續實驗的一個最優值。

在這裏插入圖片描述

3)neighborhood size實驗

鄰居數量在預測效果上具有重大的影響,爲了決定這個參數,我們改變了要在實驗中要改變的鄰居數量並且計算了MAE。計算結果如圖5所示。我們可以觀察到鄰居的數量可以影響到預測的質量。但是這兩個方法顯示出不同的敏感度。當我們把鄰居數量從10提升到30的時候,item-item方法不斷的改善,然後就趨於平坦。在另一方面,基於迴歸的方法顯示出了下降的效果。考慮到兩種情況,我麼選擇30作爲我們鄰居參數的最優化選擇。

MAE越小,效果越好,上面翻譯的上升,下降都是指的實驗效果,而不是說得曲線的上升或者下降。

在這裏插入圖片描述

4)質量實驗

一旦我們獲得了參數的最優值,我們就比較了基於物品的方法和基於用戶的基準的方法。實驗結果如下圖所示。從圖中可以看出,在不同x的情況下,item-item的算法比基於用戶的算法要好。基於迴歸的方法比較有趣,當x比較低,鄰居數比較小的時候他的表現比其它兩個要好,但是當我們增加鄰居數使得數據集的密度上升的時候,它表現更差,甚至比基於用戶的算法更差。

在這裏插入圖片描述

我們從實驗中可以得到下面的結果。首先,基於物品的算法效果比基於用戶的算法在任何稀疏程度上都好。其次,基於迴歸的算法在數據稀疏的時候效果比較好,但是當我們加入更多的數據的時候效果反而下降了。

5)性能結果

當看到基於物品的算法性能比基於用戶的算法效果好的時候,我們把注意力放在可擴展性的問題上,正如以前討論的那樣,基於物品的相似性時相對比較靜態的,這就讓我們可以提前計算相似的物品。對於物品相似性進行提前計算肯定會提高性能表現。爲了提高系統的擴展性,我們深入調查了模型數量和它在響應時間和吞吐量上的影響。

4.模型大小的敏感度

爲了確定model size的影響,我們選擇了不同的物品數量,從25到200,每次遞增25。model size爲l意味着我們僅僅考慮l個最相似的值用來模型構建,然後使用他們中的k個用來進行預測生成,k<l。我們使用訓練數據集並且採用了不同的model size提前計算了物品相似性,然後僅僅使用權重加和辦法來生成預測結果。然後我們使用測試數據集來進行計算MAE然後畫出他們的值。爲了與full model size(也就是說model size 和物品數相等),我們也使用了不同的相似度並且挑選了k個最好的。我們使用不同的x值進行重複計算,然後挑選出了最好的k個。

在這裏插入圖片描述

從圖中我們可以看出,當我們一開始提高model size的時候,MAE效果越來越好,但是逐漸就開始平緩。在圖中最重要的是,我們即使使用很少的一點物品,也能實現較大的準確度。model size的敏感度有很重要的意義。從圖中可以看出,僅僅使用很少的一部分物品進行提前計算物品相似性並且可以獲得很好的效果。

1)model size的大小對吞吐量和運行時間的影響

假設在很小的model size上預測結果還可以,我們來關注吞吐量和運行時間。我們記錄了在整個測試集上需要生成預測的時間,然後在不同的model size下把他們畫出來。我們畫出了在不同x值下面的運行時間。

在這裏插入圖片描述

5.討論

從實驗中,我們可以看到一些重要的結論。第一,基於物品的推薦算法效果比基於用戶的推薦算法效果要好。推薦效果的改善與鄰居數還有訓練集測試集比例是一致的。然而,改進卻不是特別大的。第二,物品間的關係是相對靜止的,這就導致了其可以進行提前計算,提升了在線計算的性能。其次,由於它是基於模型的方法,這就決定了他可以在一小部分數據集上產生較好的效果。我們的實驗支持這個結論。因此,基於物品的模式可以處理兩類最重要的問題——預測的質量問題還有高性能問題。

七、結論

在這篇論文中我們提出並且從實驗上評估了基於物品的推薦算法。我們的結果展示出這個方法有希望可以擴展到大數據集上並且產生高質量的推薦。

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