Memory-based的CF推薦--Item-based的方法:Item-Based Collaborative Filtering Recommendation Algorithms

本文提到的”項目“爲”item“,用戶爲”user“。
Badrul Sarwar, George Karypis, Joseph Konstan, and John Riedl

摘要

推薦系統將知識發現技術應用於在生活中針對信息、產品或服務提出個性化建議的問題。這些系統,尤其是基於k近鄰協同過濾的系統,正在網絡上獲得廣泛的成功。可用信息的巨大增長,以及最近訪問Web站點的訪客的數量,對推薦系統提出了一些挑戰。它們是:產生高質量的推薦,每秒爲數百萬個用戶和項目提供高質量推薦,並在數據稀疏的情況下實現更高的質量。在傳統的協作過濾系統中,工作量隨着系統中參與人數的增加而增加。需要一種新的推薦系統技術,該技術可以快速生成高質量的推薦,非常適合大規模問題。爲了解決這些問題,我們探索了基於項目的協作過濾技術。基於項目的技術首先分析用戶-項目矩陣,以識別不同項目之間的關係,然後使用這些關係間接計算針對用戶的推薦。
在本文中,將分析基於不同項目的推薦生成算法。我們研究了不同的技術來計算項目-項目相似度(例如,項目對象之間的項目-項目相關性與餘弦相似度)和不同的技術,以從中獲取推薦(例如,加權求和與迴歸模型之比)。最後,我們通過實驗驗證了我們的結果,並將其與基本的k近鄰法或近似方法進行了比較。我們的實驗表明,基於項目的算法比基於用戶的算法可提供更好的性能,同時可提供比基於用戶的算法更好的質量。

當前面臨的挑戰

推薦系統最有前途的成功技術之一是協同過濾[19,27,14,16]。通過爲用戶建立項目偏好數據庫來進行協同過濾工作。新用戶Neo會針對數據庫進行查詢以發現鄰居,而其他用戶在歷史上與Neo具有相似的品味。然後將推薦喜歡的物品推薦給Neo,因爲他可能也會喜歡。協同過濾已在研究和實踐以及信息過濾應用程序和電子商務應用程序中取得了成功。但是,在協作過濾推薦系統的基礎挑戰中仍然存在重要的問題:

  • 第一個挑戰是提高協同過濾算法的可擴展性。這些算法能夠實時搜索(查詢)成千上萬的鄰居,但是現代系統的需求是搜索數以千萬計的潛在鄰居。此外,現有算法對於站點中擁有大量信息的單個用戶而言存在性能問題。例如,如果某個站點使用瀏覽模式作爲內容偏好的指示,則該站點可能會爲其最常訪問的用戶提供數千個數據點。“long user rows"減慢了每秒查詢的鄰居用戶數量,從而進一步降低了可擴展性。
  • 第二個挑戰是爲用戶提高推薦的質量。用戶需要他們可以信任的推薦,以幫助他們找到喜歡的物品。用戶將拒絕使用不太準確的推薦系統,以“用腳投票”。

在本文中,我們將通過應用基於項目的不同方法來解決推薦系統的這些問題。傳統協同過濾算法的瓶頸是,在大量潛在鄰居中尋找鄰居[12]。通過基於項目的算法,可以首先探索與項目之間的關係,而不是與用戶之間的關係。根據與用戶喜歡的其他項目相似的項目來計算出對用戶的推薦。由於項目之間的關係是相對靜態的,基於項目的算法可能能夠以較少的在線計算成本提供與基於用戶的算法相同的質量。

本文具有三個主要的研究貢獻:

  • 對基於項目的預測算法進行分析,並找出實現其子任務的不同方法。
  • 預先計算項目相似度的模型,以提高基於項目的推薦的在線可擴展性。
  • 幾種基於不同項目的算法與經典的基於用戶的算法(最近鄰算法)的實驗比較。

基於用戶的協作過濾系統在過去曾經非常成功,但是它們的廣泛使用已揭示出一些潛在的挑戰,例如:

  • 稀疏性。實際上,許多商業推薦系統用於評估大型項目集(例如,Amazon.com推薦書籍,而CDnow.com推薦音樂專輯)。在這些系統中,即使是活動用戶也可能購買了不到1%的項目(200萬本書中的1%是20000本書)。因此,基於最近鄰居算法的推薦器系統可能無法針對特定用戶進行任何商品推薦。結果,建議的準確性可能很差。
  • 可擴展性。最近的鄰居算法需要隨着用戶數量和項目數量的增長而增加的計算。擁有數百萬的用戶和項目,運行現有算法的典型的基於Web的推薦系統將遭受嚴重的可擴展性問題。

基於協同過濾的推薦

協作過濾算法的目標是根據用戶的以前的喜好和其他喜歡的用戶的意見,爲特定用戶建議新項目或預測特定項目的使用率。在典型的CF場景中,有m個用戶的列表 U={u1,u2,,uM}\mathcal{U}=\left\{u_{1}, u_{2}, \ldots, u_{M}\right\} 以及n個項目的列表 I={i1,i2,,in}\mathcal{I}=\left\{i_{1}, i_{2}, \ldots, i_{n}\right\} 。每個用戶 uiu_i 有一個關於對項目表達自己觀點(評分)的列表。觀點可以是用戶在一定的數字範圍內顯示地評分,或者可以隱式地來自購買記錄,或者日誌分析,或者網站超鏈接挖掘等。注意,IuiII_{u_{i}} \subseteq \mathcal{I} 可能是一個空集,uaUu_{a} \in \mathcal{U} 被稱爲活動用戶,協同過濾算法的目標是爲該用戶尋找兩種類型的項目:

  • 預測是一個數值,Pa,jP_{a,j} 表示活動用戶 uau_a 對項目 ijIuai_j \notin I_{u_a} 的偏好預測
  • 推薦是活動用戶 uau_a 最喜歡的N個項目列表,IrII_r \subset \mathcal{I}。注意,推薦列表必須在活動用戶尚未購買的商品上,i.e., IrIua=ΦI_{r} \cap I_{u_{a}}=\Phi,這種CF算法也被稱爲T op-N推薦。

圖1顯示了協作過濾過程的示意圖。 CF算法將整個m×nm \times n個用戶-項目數據表示爲一個評分矩陣 A\mathcal A。在 A\mathcal A 中嘗試用 ai,ja_{i,j} 表示第 ii 個用戶對第 jj 個項目的偏好分數(評分)。每個單獨的評分都在一個數字範圍內,並且它可能會以 00 表示用戶尚未對該項目進行評分。研究人員設計了多種協作過濾算法,可將其分爲兩大類:基於內存(user-based)的算法和基於模型(item-based)的算法[6](這裏的舉例似乎有誤)。

基於項目的協同過濾算法

在本節中,我們將研究一類用於爲用戶生成預測的基於項目的推薦算法。與前面討論的基於用戶的協作過濾算法不同,基於項目的方法將查看目標用戶已評分的項目集,並計算它們與目標項目 ii 的相似程度,然後選擇 kk 個最相似的項目 {i1i2...ik}\{i_1 ,i_2,...,i_k\}。同時也計算它們的對應相似度 {si1si2...sik}\{s_{i1},s_{i2},...,s_{ik}\}。一旦找到最相似的項目,然後通過獲取目標用戶在這些相似項目上的評分的加權平均值來計算預測。本文將詳細描述兩個方面,即相似度計算(similarity computation)和預測生成(prediction generation)

項目相似度計算 Item Similarity Computation

基於餘弦的相似度 Cosine-based Similarity

將兩個項目視爲 mm 維用戶空間中的兩個向量。它們之間的相似性是通過計算這兩個向量之間的夾角的餘弦值來衡量的。形式上,在圖2中的 m×nm \times n 的評分矩陣中,第 ii 個項目和第 jj 個項目之間的相似性用 sim(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}}
where ”·" denotes the dot-product of the two vectors.

基於相關的相似度 Correlation-based Similarity

通過計算 PearsonrPearson-r 相關係數 corri,jcorr_{i,j} 來測量兩個項目 iijj 之間的相似度。爲了使相關計算準確,我們必須首先分離co-rated條件(即,用戶同時給 iijj 評分的情況),如圖2所示。讓同時給 iijj 評分的用戶集用 UU 表示,然後相關相似度由下式給出:
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}}}
Here Ru,iR_{u,i} denotes the rating of user uu on item ii, Rˉi\bar R_i is the average rating of the i-th item.

調整餘弦相似度 Adjusted Cosine Similarity

基於用戶的CF和基於項目的CF之間的相似度計算之間的根本區別是,在基於用戶的CF情況下,沿着矩陣的行計算相似度,但是在基於項目的CF情況下,計算相似度沿列計算,即,co-rated集合中的每一對對應於一個不同的用戶(圖2)。在基於項目的情況下,使用基於餘弦度量來計算相似度有一個重要的缺點,即沒有考慮不同用戶之間的評分等級差異。調整後的餘弦相似度通過從每個co-rated對中減去相應的用戶平均值來彌補此缺點。形式上,項目 iijj 使用此方案的相似性由下式給出:
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}}}
Here Rˉu\bar R_u is the average of the u-th user’s ratings.

Prediction Computation 預測計算

協作過濾系統中最重要的步驟是根據預測生成輸出接口。一旦我們基於相似性度量分離出一組最相似的商品,下一步就是調查目標用戶的評分並使用一種技術來獲得預測。在這裏,我們考慮兩種這樣的技術。

Weighted Sum 加權總和

顧名思義,此方法通過計算給定用戶 uu 對與 ii 相似的項目的評分總和來計算用戶對項目 ii 的預測。每個評分由項目 iijj 之間相應的相似度 si,js_{i,j} 加權。正式地,使用圖3中所示的概念,我們可以將預測 PuiP_{ui} 表示爲:
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)}

基本上,此方法嘗試捕獲活動用戶如何評價相似項目。通過相似項之和對加權和進行縮放,以確保預測在預定範圍內。

Regression 迴歸

這種方法類似於加權總和法,但不是直接使用相似項目的評分,而是使用基於迴歸模型的評分近似值。在實踐中,使用餘弦或相關度量計算的相似度可能會誤導兩個評分向量可能相距遙遠(在歐幾里得意義上),但可能具有非常高的相似度。這時候用所謂的相似項目得到的預測結果很差。基本思想是使用和加權求和一樣的公式,但是不直接使用相似物品 NN 的評分 Ru,NR_{u,N},而是其使用基於線性迴歸模型的近似值 Ru,NR^ \prime _{u,N}。如果我們用 RiR_iRNR_N 分別表示目標項目 ii 和相似項目 NN 的向量,則線性迴歸模型可以表示爲:
RˉN=αRˉi+β+ϵ\bar{R}_{N}^{\prime}=\alpha \bar{R}_{i}+\beta+\epsilon
The regression model parameters α\alpha and β\beta are determined by going over both of the rating vectors. ϵ\epsilon is the error of the regression model.

解釋:和上面加權求和的方法類似,但迴歸的方法不直接使用相似物品 NN 的評分 Ru,NR_{u,N},因爲用餘弦法或Pearson關聯法計算相似度時存在一個誤區,即兩個打分向量可能相距比較遠(歐氏距離),但有可能有很高的相似度。因爲不同用戶的打分習慣不同,有的偏向打高分,有的偏向打低分。如果兩個用戶都喜歡一樣的物品,因爲打分習慣不同,他們的歐式距離可能比較遠,但他們應該有較高的相似度。在這種情況下用戶原始的相似物品的打分值進行計算會造成糟糕的預測結果。通過用線性迴歸的方式重新估算一個新的 Ru,NR_{u,N} 值,運用上面同樣的方法進行預測。線性模型中,α\alphaβ\beta 是待訓練的參數,訓練的時候 RˉN\bar{R}_{N}^{\prime}Rˉi\bar{R}_{i} 是評分矩陣中進行相似度計算後分離的現有的評分,待訓練參數訓練完成即可以用來預測該用戶對某個相似item的評分。

總結

推薦系統是一項功能強大的新技術,可從其用戶數據庫中爲企業提取額外價值。這些系統可幫助用戶找到他們想從企業購買的物品。推薦系統使用戶能夠找到自己喜歡的商品,從而使他們受益。相反,它們通過產生更多的銷售來幫助企業。推薦系統正在迅速成爲Web上電子商務的重要工具。在現有公司數據庫中,大量的用戶數據給推薦系統帶來了壓力,而在Web上可用的用戶數據也越來越多,給推薦系統帶來了更大的壓力。需要可以顯著改善推薦系統的可擴展性的新技術。
在本文中,我們提出並通過實驗評估了一種基於CF推薦系統的新算法。我們的結果表明,基於項目的技術有望使基於CF的算法能夠擴展到大型數據集,同時產生高質量的推薦。

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