Item-Based Collaborative Filtering Recommendation Algorithms - 2001年 - 被引用7190次

ABSTRACT —— 摘要

推荐系统采用知识发现技术解决信息、产品或服务在实时交互过程中的个性化推荐问题。推荐系统,特别是哪些基于K最近邻协同过滤算法的推荐系统,获得了极大的成功。近年来,互联网上信息和用户的数量急速增长,这给推荐系统造成了一些重大挑战。比如:生成高质量的推荐,每秒为数百万用户和商品提供大量推荐,在数据稀疏的情况下实现高覆盖率。在传统的协同过滤推荐系统中,工作量随着系统用户的增加而增加。急需全新的推荐系统技术,即便是对巨型规模的问题,也能够很快生成高质量的推荐。为了解决这些问题,我们探索了基于项目的协同过滤技术。基于项目的技术首次分析了“用户-项目”矩阵,用户-项目矩阵标记了不同项目之间的关系,使用这些关系便能够为用户间接地计算推荐结果。

在这篇文章中,我们分析了几种不同的基于项目的推荐算法。我们研究了计算物品相似度的不同技术(例如 :item-item correlation 、cosine similarities between item evctors — 物品向量的余弦相似性)和获取推荐结果的不同技术(例如:weighted sum — 加权和、regression model — 回归模型)。最终,我们通过实验评估了我们的推荐结果,然后将其与传统的K最近邻算法作了比较。我们的实验表明,基于项目的算法比基于用户的算法具备更好的性能,同时,也比最好的基于用户的算法具备更高的推荐质量。


备注:

  1. 知识发现
    概念:知识发现是从各种信息中,根据不同的需求获得知识的过程。知识发现的目的是向使用者屏蔽原始数据的繁琐细节,从原始数据中提炼出有效的、新颖的、潜在有用的知识,直接向使用者报告。
    知识发现过程:通用的过程是接收原始数据输入,选择重要的数据项,缩减、预处理和浓缩数据组,将数据转换为合适的格式,从数据中找到模式,评价解释发现结果。

1. INTRODUCTION —— 引言

世界上信息数量正快速增长,这远远超出了我们处理信息的能力。每年都会出版大量的新书、会发布大量的期刊论文和会议论文,我们都知道被淹没在这些信息中的感觉。技术大大降低了信息发布和传播的障碍。现在是时候发明一种新的技术了,来帮助我们筛选所有信息,从而找到对我们最有价值的那些。

其中最有前景的是协同过滤技术。协同过滤技术建立了一个数据库,这个数据库记录了用户喜欢的商品。假设有一个新用户Neo,将他与数据库中的数据进行匹配,从而发现他的“邻居们”,这里的邻居们指的是那些与Neo的历史记录偏好非常相似的用户。然后将邻居们喜欢的物品推荐给Neo,因为Neo很可能也会喜欢这些物品。协同过滤技术在研究和实践方面、在信息过滤应用、电子商务应用中都取得了极大的成功。然而,协同过滤技术仍然存在两个重要的挑战需要我们去研究解决。

第一项挑战是提高协同过滤算法的可扩展性。协同过滤算法能够实时搜索上万的潜在邻居,但现代系统的要求是能够搜索上千万的潜在邻居。此外,现有算法在用于拥有大量信息的用户时存在性能问题。如果一个网站使用浏览模式作为内容偏好的标志,对访问最频繁的用户,这个网站中将会对应有数千个数据评分。(原文没看懂:For instance, it may have thousands of data points for its most frequent visitors .)这些“长用户行”降低了每秒可以搜索到的邻居数量,进一步降低了可扩展性。

第二项挑战是提高推荐结果的质量。用户需要他们可以信任的推荐系统来帮助他们找到他们喜欢的物品。用户不喜欢使用推荐结果不稳定、不精准的推荐系统。

在某种程度上,这两项挑战是相互矛盾的,因为算法搜索邻居使用的时间越短,扩展性就越好,但是推荐质量越差。因此,同时处理好这两项挑战是非常重要的,只有这样,研究出的解决方案才是有用的、实用的。

为了解决推荐系统的这些问题,在这篇文章中,我们使用了基于项目(item-based)的算法。传统协同过滤算法的瓶颈是在一大群潜在邻居中找到邻居。基于项目的算法通过首先研究项目之间的关系而不是用户之间的关系,避免了传统算法遇到的瓶颈。计算出与该用户喜欢的物品相似的,将这些物品推荐给用户。因为项与项之间的关系是相对静态的。 基于项的算法的质量可能和那些具备少量在线计算的基于用户的算法一致。

在本小节中,我们简要介绍了一些与协同过滤,推荐系统,数据挖掘,个性化相关的研究。

Tapedtry是协同过滤推荐系统的最早实现之一。这套系统依靠他人的明确的意见, 并且要求这些人来自同一个关系紧密的团体,比如一个办公小组。然而,用于一个较大团体的推荐系不能再凭借每个人对他人的了解了。后来,开发了几种基于自动评分的推荐系统。GroupLens 研究系统为Usenet新闻和电影提供了一种匿名的协同过滤解决方案。Ringo和Video Recommender(视频推荐人)分别是基于邮件和基于互联网的系统,他们分别为音乐和电影生成推荐结果。Communications of th ACM(ACM通信)的一个特刊展示了许多不同的推荐系统。

也有一些其他技术被应用于推荐系统中,包括贝叶斯网络、聚类、Horting。贝叶斯网络建立了一个基于训练集的模型,每个结点上都有一棵决策树,结点之间的边代表了用户信息。这个模型可以在离线的情况下搭建几个小时甚至几天。得到的模型非常小,非常快,最重要的是和最近邻方法一样精准。贝叶斯网络在用户偏好模型构建较快,而用户偏好信息变换缓慢的环境中是非常实用的。但是不适用于用户偏好模型(user performance models)需要快速更新的环境。

聚类技术的原理是识别出具有相似喜好的用户群。一旦聚类完成,想向某个人进行推荐时,就可以计算一下他所在组其他人的平均喜好。一些聚类技术用几个集群中的部分参与者表示用户。(Some clustering techniques represent each user with partial participation in several clusters. )然后,用整个集群的平均数作为该次预测,以参与程度为权重。聚类技术通常产生的个性化推荐结果往往比其他方法要少,在某些情况下,聚类技术也要比最近邻技术的准确性要差。但是,一旦聚类完成,后面推荐系统的性能将会非常高,因为只需要分析很小的群组就可以了。聚类技术可以作为第一步,用于在最近邻算法中缩小候选集,或者将最近邻的计算分配到多个推荐引擎当中。由于将人口划分为集群可能会影响到准确性,也会影响到处在集群边缘的用户的推荐结果,所以预先进行聚类可能是精准性与吞吐量之间的,一个值得的权衡。

Horting图技术,是一种基于图的技术,其中结点代表用户,结点间的边表示两个用户的相似度。沿着边寻找相邻的结点,并结合相邻用户生成预测。Horting与最近邻技术不同,因为这个图可能会遍历到一些用户,而这些用户并没有对所研究问题中的项进行评分,也正因为如此,该算法能够探寻最近邻算法不会考虑的传递关系。(换句话说,Horting图技术可以跳过中间结点,寻找最近邻居,考虑了结点之间的传递相似性)在一项使用综合数据的研究中,Horting技术比最近邻技术生成了更好的预测结果。

Schafer等人,给出了应用于电子商务的推荐系统,的详细分类和具体例子,也介绍了他们如何提供一对一的个性化推荐以及怎么获取用户的忠诚度。尽管这些推荐系统在过去的应用中非常成功,他们的广泛使用也暴露了一些局限性,例如数据集的稀疏性,高维性等。其中,推荐系统的稀疏性问题在[23,11]中得到了解决。推荐系统中与高维性相关的问题也在[4]进行了讨论,维数减少技术的应用也正在研究当中。我们的工作探索了基于项目的推荐系统能够在多大程度上解决这个问题。

1.2 文章的主要贡献

这篇论文主要有三个贡献:
1. 分析基于项目的预测算法,确定实现其子任务的不同方法。
2. 制定项目相似度的预先计算模型,以增加基于项目的推荐系统的在线可扩展性。
3. 通过实验比较几种基于项目的算法与基于用户的算法的质量。

1.3 论文组织结构

  1. 介绍协同过滤算法的背景
  2. 介绍协同过滤的过程,讨论基于内存和基于模型的两种变体方法,介绍基于内存的方法的一些挑战。
  3. 提出基于项目的方法,详细描述算法的不同子任务。
  4. 实验工作:详细介绍了数据集,评价指标,研究方法以及不同实验的结果。

2.基于协同过滤的推荐系统

推荐系统应用数据分析技术,来帮助用户找到他们可能想在电子商务网站购买的商品,方法是为给定的用户生成一个预测的相似度评分或一个top-N的推荐商品列表。物品推荐可以使用不同的方法。推荐可以基于用户的人口统计数据,热卖商品,或用户过去的购买习惯来作为未来商品的预测。协同过滤是迄今为止最成功的推荐技术。基于协同过滤的算法的基本思想,是基于相似用户,提供商品推荐或预测。用户的意见可以显示(explicity)的从用户处得到,也可以通过一些隐式(Implicit)的方法得到。

2.0.1 协同过滤过程概览

协同过滤算法的目标是根据用户之前的喜好或与之喜好类似的人的意见,来为特定的与用户建议新的商品或预测某个商品的实用性。
在一个典型的协同过滤的场景中,有一个用户列表U={u1,u2,…,um}和一个项列表I={i1,i2,…,in}。每名用户ui评价过的项到的集合记做项列表Iui。对项的评价可能是由用户直接给出评分(通常是在一定的数值范围内),也可以通过诸如分析时间日志,发觉网络链接等手段从购物记录中间接得到。请注意Iui包含在I中,而且Iui可能是一个空集。协同过滤算法的目标就是要为一名被称为活动用户(active user)的特殊用户寻找可能喜欢的物品,这表现为如下两种形式的服务。

  • 预测:预测一个数值,Pa,j,它代表了通过预测得到的活动用户对某个不包含在Iua中的项Ij的评价。预测值在同样的范围之内(例如:[1,5])作为用户ua的评分。
  • 推荐:推荐结果Ir是一个包含N个项的列表,是I的子集,它是活动用户最喜爱的项的列表。注意推荐列表的项必须是那些还没有被活动用户评价的项,也就是说Ir和Iua的交集为空集。这种协同过滤算法与用户间的接口也被称作Top-N推荐(Top -N recommendation)。
    这里写图片描述

这里写图片描述
图1 所示的是协同过滤过程的流程图。协同过滤算法将整个mxn的“用户-项”数据表示成一个评分矩阵A。矩阵中的每一项ai,j代表了第i名用户对第J项的评分。每个评分都在一定的数值范围之内,评价值为零就说明用户还没有对此项做过评价。协同过滤算法基本可以被分成两个主要的分支一基于存储(Memory-based(user-based))的和基于模型(Model-based(item-based))的算法。在本小节详细介绍了基于协同过滤的推荐系统算法。它们的基本算法如下:

基于存储的协同过滤算法
基于存储的算法利用整个“用户-项”数据库来完成预测。这些系统使用统计技术来找到活动用户的近邻集合,他们有与活动用户一致的历史纪录(他们与活动用户对于不同项的评价相似或他们有可能买相似的物品)。一旦活动用户的近邻被找到,这些系统会使用不同的算法,来将这些近邻的评价结合起来,并由此为活动用户提供预测或者提供top-N推荐。这项技术也被称为最近邻(nearest-neighbor)或基于用户的协同过滤,其在应用实践中得到了广泛的应用。


备注:
这种算法具有计算方法简单的特点,精确度也往往比较高,目前实际使用的协同过滤算法多属这种类型。但是任何一次预测都要基于数据库的所有记录,无疑大大增加了计算量。在当今用户规模动辄达到数以百万计的情况下,这个问
题尤为严重。


基于模型的协同过滤算法
基于模型的协同过滤算法首先建立一个用户评价模型,并以此模型为基础向用户推荐项(商品)。属于这一范畴的算法采用概率论方法,它们把协同过滤过程看作是如下计算:给定一个用户对于其它项的评分,计算其对于某项可能做的评分估计值。建立模型的过程通过不同的机器学习(machine leaning)算法来完成,例如贝叶斯网络,聚类或基于规则(rule-based)的方法。贝叶斯网络模型为协同过滤问题提供了一个概率模型【9】。聚类模型则把协同过滤看作一个分类问题,它把相似的用户聚集在同一类中,估算某个特定用户属于某个特定类C的可能性,并在此基础上计算条件概率(即评价值属于某一等级的可能性)。基于规则的方法,运用关联规则发现算法(association rule discovery algorithms),来找到用户共同购买项的联系,并在这些项之间联系强度的基础上产生推荐。

2.0.2 基于用户的协同过滤算法的挑战

过去基于用户的协同过滤算法是非常成功的,但是他们的广泛应用也揭示了一些潜在的挑战,例如:

  • 稀疏性
    在实际应用中,很多商业推荐系统都用来评价大型项目集(例如:Amazon.com推荐书籍,CDnow.com推荐音乐专辑)。在这些系统中,即使是活跃用户也可能仅购买了不到1%的书籍(200万本书中的1%是2万本书)。因此,基于最近邻算法的推荐系统可能无法为特定用户推荐任何项目。因此,建议的准确性可能很差。

  • 可扩展性
    最近邻算法要求计算量随着用户数量和项目数量的增加而增长。伴随着数百万的用户和项目,一个典型的基于Web的推荐系统在运行现有算法时将面临着严重的可扩展性问题。

最近邻算法在面对大型、稀疏性的数据时所暴露出的缺点,致使我们急切地寻找可替代的推荐系统算法。我们的第一个方法是尝试在系统中加入半智能的过滤代理来弥补稀疏性。这些代理使用语法特征对每个项目进行评估和评价。通过提供密集的评分集,这些代理帮助减少覆盖范围,并且改善推荐质量。然而,过滤代理的解决方案并没有解决基本问题,即相似用户但评分稀疏的用户间的匮乏的关系(poor relationship)。为了探究这一点,我们采用了一种算法方法,在一个缩减后的维度空间中,使用隐藏语义索引(Latent Semantic Indexing LSI)来获取用户和项目之间的相似性。在本文中,我们研究了另一种方法,基于模型的方法,以解决这些挑战,特别是可扩展性挑战。主要思想是分析“用户-项目”矩阵来识别不同项目之间的关系,然后使用这些关系,来计算一对给定的“用户-项”的预测分数。这个方法的基本思想是,向用户推荐与其之前购买的物品相似的物品,不向其推荐之前用户不喜欢的物品。进行推荐时,这个方法不要求寻找相似用户的邻居。因此该方法能够更快地生成推荐结果。人们提出了许多方法来计算项之间的关系,包括从概率论方法到传统的项与项之间的关联(item-item cerrelations)。我们在下一节详细介绍了我们的方法。

3.基于项目的协同过滤算法

本节我们研究了一种为用户进行预测的基于项目的推荐算法。与在第二节中讨论的基于用户的协同过滤算法不同,基于项目的方法研究了目标用户评价过的项,然后计算出这些项与目标项的相似度i,最后从中选出k个相似度最高的项{i1,i2,…,ik}。在此同时,计算出与这些项相对应的相似度{si1,si2,…sik}。一旦找到了最相似的项,就可以通过,将目标用户给这些相似项的评分进行加权平均,来计算预测。接下来详细介绍相似度计算和生成预测这两个方面。

3.1项目的相似度计算

基于项的协同过滤算法的一个关键步骤是计算项之间的相似性,然后选择最相似的项。第i个项和第j个项之间的相似度计算的基本思路是,首先将对这两个项都进行评分的用户进行隔离,然后应用相似度计算技术确定相似度Si,j。图2说明了这个过程。该矩阵的行代表用户,列代表项目。

计算项之间相似度的方法有很多。这里我们介绍三种方法。分别是基于余弦(cosine-based)的相似度,基于相关性(correlatioon-based)的相似度和修正的余弦(adjusted-cosine)相似度。

3.1.1 基于余弦的相似度

在这种情况下,将两个项目视为m维用户空间中的两个向量。通过计算这两个向量之间的夹角的余弦,来衡量它们之间的相似性。在图2中的mxn评级矩阵中,项目i与j之间的相似度表示为sim(i,j),通过如下公式进行计算:
这里写图片描述
其中“.”表示两个向量的点积。

这里写图片描述

3.1.2 基于相关性的相似度

在这种的情况下,通过计算皮尔森(Pearson-r)相关性corri,j,来计算项i与项j之间的相似度。为了准确地计算相关性,我们首先将对i,j都评级过的用户隔离开,如图2所示。将同时对i和j打过分的用户集合记为U,那么关联相似度就可通过如下公式计算:

这里写图片描述

其中Ru,j表示用户u在第i个项目上的评分,Ri巴是第i个项目的评分的平均值。

3.1.3修正的余弦相似度

基于用户的协同过滤和基于项目的协同过滤,两者在计算相似度时最根本的不同是:基于用户的协同过滤的相似度是沿着矩阵的行进行计算的,而基于项目的协同过滤的相似度的计算,是沿着矩阵的列进行的。共同评分集合(co-rated set)中的每一对都对应一个不同的用户(Figure 2)。在基于项目的情况中,使用基本的余弦测量计算相似度有一个重要的缺点——不会考虑不通过用户的评分的数值范围。修正的余弦相似度通过从每对共同评级的用户对中,减去用户对项目的平均评分来弥补这个缺陷。通常,项目i和j之间的相似性通过下面的公式进行计算:

这里写图片描述

其中Ru巴是第u个用户评分的平均值。


备注:
余弦相似性(Cosine):用户一项目评分矩阵可以看作是n维空间上的向量,对于没有评分的项目将评分值设为0,余弦相似性度量方法是通过计算向量间的余弦夹角来度量用户间相似性的。

修正的余弦相似度:
余弦相似度未考虑到用户评分尺度问题,如在评分区间[1一5]的情况下,对用户甲来说评分3以上就是自己喜欢的,而对于用户乙,评分4以上才是自己喜欢的。通过减去用户对项的平均评分,修正的余弦相似性度量方法改善了以上问题。

修正的余弦相似度的计算公式:
这里写图片描述
皮尔逊相关系数的计算公式:
这里写图片描述


3.2 计算预测

协同过滤算法中最重要的步骤是在预测方面生成输出接口。一旦我们根据相似度方法分离出了大多数相似的项目,下一步就是研究目标用户的评分,然后用一种技术来获得预测结果。这里我们考虑两种这样的技术。

3.2.1 加权和

顾名思义,这种方法通过计算用户u给其他项目(与项目i相似的)的评分的和,来计算该用户给项目i的评分。每个评分都由项目i和j之间对应的相似度Si,j加权。(Each ratings is weighted by the corresponding similarity Si,j between i and j.)使用图3所示的概念,我们可以将预测Pu,i表示为 :
这里写图片描述
基本上,这种方法试图捕获活动用户对相似项的评分。通过相似项的和,缩放加权和,来保证预测结果在预定义范围内。

3.2.2 回归

参考文献:
[1] Item-Based Collaborative Filtering Recommendation Algorithms
[2] 协同过滤算法研究 李宇澄

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张之海

若有帮助,客官打赏一分吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值