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 = { u 1 , u 2 , … , u M } \mathcal{U}=\left\{u_{1}, u_{2}, \ldots, u_{M}\right\} U={u1,u2,,uM} 以及n个项目的列表 I = { i 1 , i 2 , … , i n } \mathcal{I}=\left\{i_{1}, i_{2}, \ldots, i_{n}\right\} I={i1,i2,,in} 。每个用户 u i u_i ui 有一个关于对项目表达自己观点(评分)的列表。观点可以是用户在一定的数字范围内显示地评分,或者可以隐式地来自购买记录,或者日志分析,或者网站超链接挖掘等。注意, I u i ⊆ I I_{u_{i}} \subseteq \mathcal{I} IuiI 可能是一个空集, u a ∈ U u_{a} \in \mathcal{U} uaU 被称为活动用户,协同过滤算法的目标是为该用户寻找两种类型的项目:

  • 预测是一个数值, P a , j P_{a,j} Pa,j 表示活动用户 u a u_a ua 对项目 i j ∉ I u a i_j \notin I_{u_a} ij/Iua 的偏好预测
  • 推荐是活动用户 u a u_a ua 最喜欢的N个项目列表, I r ⊂ I I_r \subset \mathcal{I} IrI。注意,推荐列表必须在活动用户尚未购买的商品上,i.e., I r ∩ I u a = Φ I_{r} \cap I_{u_{a}}=\Phi IrIua=Φ,这种CF算法也被称为T op-N推荐。

图1显示了协作过滤过程的示意图。 CF算法将整个 m × n m \times n m×n个用户-项目数据表示为一个评分矩阵 A \mathcal A A。在 A \mathcal A A 中尝试用 a i , j a_{i,j} ai,j 表示第 i i i 个用户对第 j j j 个项目的偏好分数(评分)。每个单独的评分都在一个数字范围内,并且它可能会以 0 0 0 表示用户尚未对该项目进行评分。研究人员设计了多种协作过滤算法,可将其分为两大类:基于内存(user-based)的算法和基于模型(item-based)的算法[6](这里的举例似乎有误)。

Memory-based的CF推荐--Item-based的方法:Item-Based Collaborative Filtering Recommendation Algorithms_第1张图片

基于项目的协同过滤算法

在本节中,我们将研究一类用于为用户生成预测的基于项目的推荐算法。与前面讨论的基于用户的协作过滤算法不同,基于项目的方法将查看目标用户已评分的项目集,并计算它们与目标项目 i i i 的相似程度,然后选择 k k k 个最相似的项目 { i 1 , i 2 , . . . , i k } \{i_1 ,i_2,...,i_k\} {i1i2...ik}。同时也计算它们的对应相似度 { s i 1 , s i 2 , . . . , s i k } \{s_{i1},s_{i2},...,s_{ik}\} {si1si2...sik}。一旦找到最相似的项目,然后通过获取目标用户在这些相似项目上的评分的加权平均值来计算预测。本文将详细描述两个方面,即相似度计算(similarity computation)和预测生成(prediction generation)

项目相似度计算 Item Similarity Computation

基于余弦的相似度 Cosine-based Similarity

将两个项目视为 m m m 维用户空间中的两个向量。它们之间的相似性是通过计算这两个向量之间的夹角的余弦值来衡量的。形式上,在图2中的 m × n m \times n m×n 的评分矩阵中,第 i i i 个项目和第 j j j 个项目之间的相似性用 s i m ( i , j ) sim(i,j) sim(i,j) 表示:
sim ⁡ ( i , j ) = cos ⁡ ( i ⃗ , j ⃗ ) = i ⃗ ⋅ j ⃗ ∥ i ⃗ ∥ 2 ∗ ∥ j ⃗ ∥ 2 \operatorname{sim}(i, j)=\cos (\vec{i}, \vec{j})=\frac{\vec{i} \cdot \vec{j}}{\|\vec{i}\|_{2} *\|\vec{j}\|_{2}} sim(i,j)=cos(i ,j )=i 2j 2i j
where ”·" denotes the dot-product of the two vectors.

基于相关的相似度 Correlation-based Similarity

通过计算 P e a r s o n − r Pearson-r Pearsonr 相关系数 c o r r i , j corr_{i,j} corri,j 来测量两个项目 i i i j j j 之间的相似度。为了使相关计算准确,我们必须首先分离co-rated条件(即,用户同时给 i i i j j j 评分的情况),如图2所示。让同时给 i i i j j j 评分的用户集用 U U U 表示,然后相关相似度由下式给出:
sim ⁡ ( i , j ) = ∑ u ∈ U ( R u , i − R ˉ i ) ( R u , j − R ˉ j ) ∑ u ∈ U ( R u , i − R ˉ i ) 2 ∑ u ∈ U ( R u , j − R ˉ 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}}} sim(i,j)=uU(Ru,iRˉi)2 uU(Ru,jRˉj)2 uU(Ru,iRˉi)(Ru,jRˉj)
Here R u , i R_{u,i} Ru,i denotes the rating of user u u u on item i i i, R ˉ i \bar R_i Rˉi is the average rating of the i-th item.

调整余弦相似度 Adjusted Cosine Similarity

基于用户的CF和基于项目的CF之间的相似度计算之间的根本区别是,在基于用户的CF情况下,沿着矩阵的行计算相似度,但是在基于项目的CF情况下,计算相似度沿列计算,即,co-rated集合中的每一对对应于一个不同的用户(图2)。在基于项目的情况下,使用基于余弦度量来计算相似度有一个重要的缺点,即没有考虑不同用户之间的评分等级差异。调整后的余弦相似度通过从每个co-rated对中减去相应的用户平均值来弥补此缺点。形式上,项目 i i i j j j 使用此方案的相似性由下式给出:
sim ⁡ ( i , j ) = ∑ u ∈ U ( R u , i − R ˉ u ) ( R u , j − R ˉ u ) ∑ u ∈ U ( R u , i − R ˉ u ) 2 ∑ u ∈ U ( R u , j − R ˉ 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}}} sim(i,j)=uU(Ru,iRˉu)2 uU(Ru,jRˉu)2 uU(Ru,iRˉu)(Ru,jRˉu)
Here R ˉ u \bar R_u Rˉu is the average of the u-th user’s ratings.

Memory-based的CF推荐--Item-based的方法:Item-Based Collaborative Filtering Recommendation Algorithms_第2张图片

Prediction Computation 预测计算

协作过滤系统中最重要的步骤是根据预测生成输出接口。一旦我们基于相似性度量分离出一组最相似的商品,下一步就是调查目标用户的评分并使用一种技术来获得预测。在这里,我们考虑两种这样的技术。

Weighted Sum 加权总和

顾名思义,此方法通过计算给定用户 u u u 对与 i i i 相似的项目的评分总和来计算用户对项目 i i i 的预测。每个评分由项目 i i i j j j 之间相应的相似度 s i , j s_{i,j} si,j 加权。正式地,使用图3中所示的概念,我们可以将预测 P u i P_{ui} Pui 表示为:
P u , i = ∑ all similar items,  N ( s i , N ∗ R u , N ) ∑ all similar items  , N ( ∣ s i , 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)} Pu,i=all similar items ,N(si,N)all similar items, N(si,NRu,N)

基本上,此方法尝试捕获活动用户如何评价相似项目。通过相似项之和对加权和进行缩放,以确保预测在预定范围内。

Regression 回归

这种方法类似于加权总和法,但不是直接使用相似项目的评分,而是使用基于回归模型的评分近似值。在实践中,使用余弦或相关度量计算的相似度可能会误导两个评分向量可能相距遥远(在欧几里得意义上),但可能具有非常高的相似度。这时候用所谓的相似项目得到的预测结果很差。基本思想是使用和加权求和一样的公式,但是不直接使用相似物品 N N N 的评分 R u , N R_{u,N} Ru,N,而是其使用基于线性回归模型的近似值 R u , N ′ R^ \prime _{u,N} Ru,N。如果我们用 R i R_i Ri R N R_N RN 分别表示目标项目 i i i 和相似项目 N N N 的向量,则线性回归模型可以表示为:
R ˉ N ′ = α R ˉ i + β + ϵ \bar{R}_{N}^{\prime}=\alpha \bar{R}_{i}+\beta+\epsilon RˉN=αRˉi+β+ϵ
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.

解释:和上面加权求和的方法类似,但回归的方法不直接使用相似物品 N N N 的评分 R u , N R_{u,N} Ru,N,因为用余弦法或Pearson关联法计算相似度时存在一个误区,即两个打分向量可能相距比较远(欧氏距离),但有可能有很高的相似度。因为不同用户的打分习惯不同,有的偏向打高分,有的偏向打低分。如果两个用户都喜欢一样的物品,因为打分习惯不同,他们的欧式距离可能比较远,但他们应该有较高的相似度。在这种情况下用户原始的相似物品的打分值进行计算会造成糟糕的预测结果。通过用线性回归的方式重新估算一个新的 R u , N R_{u,N} Ru,N 值,运用上面同样的方法进行预测。线性模型中, α \alpha α β \beta β 是待训练的参数,训练的时候 R ˉ N ′ \bar{R}_{N}^{\prime} RˉN R ˉ i \bar{R}_{i} Rˉi 是评分矩阵中进行相似度计算后分离的现有的评分,待训练参数训练完成即可以用来预测该用户对某个相似item的评分。

Memory-based的CF推荐--Item-based的方法:Item-Based Collaborative Filtering Recommendation Algorithms_第3张图片

总结

推荐系统是一项功能强大的新技术,可从其用户数据库中为企业提取额外价值。这些系统可帮助用户找到他们想从企业购买的物品。推荐系统使用户能够找到自己喜欢的商品,从而使他们受益。相反,它们通过产生更多的销售来帮助企业。推荐系统正在迅速成为Web上电子商务的重要工具。在现有公司数据库中,大量的用户数据给推荐系统带来了压力,而在Web上可用的用户数据也越来越多,给推荐系统带来了更大的压力。需要可以显著改善推荐系统的可扩展性的新技术。
在本文中,我们提出并通过实验评估了一种基于CF推荐系统的新算法。我们的结果表明,基于项目的技术有望使基于CF的算法能够扩展到大型数据集,同时产生高质量的推荐。

你可能感兴趣的:(RS)