协同过滤推荐算法综述

2024-10-21

协同过滤推荐算法综述(精选8篇)

协同过滤推荐算法综述 篇1

摘要:在如今的网络中随处都可以看到推荐系统的应用, 比如电子商务、社交网络、各种视频音乐网站、个性化邮件、广告等。在各个网站所应用的所有推荐技术中, 协同过滤算法毫无疑问是应用最为广泛和成功的一种个性化推荐技术。本篇综述中, 首先介绍了关于协同过滤算法的各种关键概念和主要原理, 对比了两种主要的协同过滤算法之间的不同, 随后还介绍了协同过滤算法在当前个性化推荐应用中所存在的一些问题, 最后总结的协同过滤算法的优缺点。

关键词:个性化推荐,协同过滤,算法

0 引言

伴随着当今信息技术和互联网的发展, 人们对于信息的需求状况逐渐从以前的信息匮乏的时代进入了现在的信息过载时代[1]。面对浩瀚的、令人眼花缭乱的信息, 人们很难快速有效的找到自己的需求, 甚至出现信息迷航问题。因此, 推荐系统应运而生, 用来满足人们个性化的需求。它首先收集用户行为信息, 分析用户偏好, 向用户提供推荐。在个性化推荐系统技术中, 协同过滤算法由于其自身简单高效的特点而被广泛的应用, 并且取得了较好的效果。

1 协同过滤推荐

在网络应用中, 依据网络用户对于信息的喜好程度, 通过寻找信息之间的相关性或者用户之间的相似性程度从而为用户提供有效内容的一种即为协同过滤推荐 (Collaborative Filtering Recommendation) 。我们认为协同过滤是基于这样的一种假设, 即如果用户X和Y有对N个对象有相似的评分, 或者有相似的行为 (例如:选购的产品, 浏览的产品等) , 那么他们也会对其他的对象评分相似。

1.1 基于用户的协同过滤

基于用户的协同过滤算法的基本思想为:首先收集用户信息, 并以此来计算用户之间的相似度, 并以此为依据找到与当前目标用户相似程度高的所有用户集合, 然后再收集这个集合中所有用户对其他项目的评分, 通过对不同项目评分的高低来推测出目标用户对其他产品的喜好, 从而实现推荐应用。UCF算法的基本步骤为:

1) 首先建立用户评分矩阵。设m为用户数, n为项目数, 用来表示第i个用户对第j个项目的评分值。

2) 然后生成最近邻居。通过计算所有用户之间的相似度形成最近邻居集合。

3) 产生推荐。通过加权目标用户的邻居, 对目标项目的评价产生推荐。

其中, 我们用sim (i, j) 作为衡量用户i与用户j之间的相似性程度的计量值, 则代表了用户i对项目d的评分, 和分别代表了用户i和用户j的对所有项目评分的平均值。

1.2 基于项目的协同过滤

和基于用户的协同过滤的标准思路所不一样的是, 在基于项目的协同过滤应用中, 算法首先是要针对目标用户对项目的喜好程度来找到与之相似的项目集合, 然后根据用户的历史喜好和兴趣对集合中的项目进行排序, 将相似度靠前的项目推荐给目标用户。因此, 我们可以将基于项目的协同过滤算法分为最近邻居项目集合查询和给出推荐这两步, 在首先的最近邻查询阶段我们所要计算的是项目与项目之间的相似性, 将与目标项目相似度高的项目作为目标项目的最近邻居;随后再根据用户对所有项目的评分来进行排名, 将产生排名前N个的项目推荐给目标用户。其算法的基本步骤为:

1) 计算项目之间的相似性。

2) 选择相似性程度最高并且目标用户对其没有给出过评价的前N个项目, 将之作为项目的邻居集合。

3) 对项目邻居集合中所有项目的评分来进行加权求和, 从而得到目标用户对所有项目的预测评分。

其中:为邻居项目集合。按照预测值的大小采用TOPN的方法将前N个项目推荐个用户。

1.3 对两种协同过滤的比较

从这两个算法的原理可以看出, 基于用户的协同过滤产生的推荐结果着重反映的是和目标用户具有相似兴趣的一个小群体的热点项目, 基于项目协同过滤算法给出的推荐结果则是着重反映了目标用户自身的历史兴趣。换句话说, 基于用户的协同过滤产生的推荐更社会化一点, 反映了用户所在的小型兴趣群体中物品和信息的热门程度, 在一些社交网站中有着重要的应用。而基于项目的协同过滤的推荐则更加个性化一点, 更多体现的是用户自身兴趣的传承因此多被应用于电子商务等网站。

同时, 从技术上考虑, 基于用户的协同过滤在应用需要维护一个与目标用户相似性高的用户集合矩阵, 而基于项目的协同过滤则是需要维护一个针对项目的相似度集合矩阵。从存储的角度来说, 如果当前的用户很多, 那么维护用户兴趣相似度集合的矩阵所需要很大的空间, 而如果物品很多的话, 那么维护物品相似度集合矩阵则代价较大。

2 协同过滤算法存在的问题

协同过滤算法在当今网络中的各种个性化推荐中被广泛应用并且取得了巨大的成功, 但是我们可以看到伴随着互联网的发展, 个性化推荐的普及从而所带来的站点结构、推荐内容复杂程度和使用个性化推荐的用户人数等的不断增加, 协同过滤算法在个性化推荐中还存在着一些比较难以解决的问题。

1) 数据稀疏性问题。当今网络中待处理的个性化推荐系统的规模越来越大, 相对于用户和商品 (譬如音乐、网页、文献、消息等) 的数量也动辄百千万计, 不同用户之间对于项目选择的重叠则非常少。如果用用户和商品之间已有的选择关系数量占所有可能存在的选择关系数量的比例来衡量推荐系统的数据稀疏性的话, 作为历史最为悠久的推荐系统Movie Lens的数据集的稀疏度为4.5%, 而在线影片租赁提供商Netflix的数据稀疏度则是1.2%, 而这两者其实都是非常密集的数据了, 而像Bibsonomy的数据系数的则是0.35%, Delicious的数据集稀疏度是0.046%。数据是非常稀疏的。这样可以看出绝大部分的协同过滤算法在实际应用中的效果并不十分理想[3]。

2) 针对冷启动这一难题, 一种现在较为常用的办法是利用文本信息进行辅助推荐, 或者利用用户在注册时所得知的一些基础属性信息, 譬如性别、年龄、居住地、受教育程度、职业情况等等来进行推荐。最近标签系统 (taggingsystems) 的广泛应用提供了解决冷启动问题的可能方案, 因为标签既可以看作是商品内容的萃取, 同时也反映了用户的个性化喜好——譬如对《桃姐》这部电影, 有的人打上标签“伦理”, 有的人打上标签“刘德华”, 两个人看的电影一样, 但是兴趣点可能不尽相同。

3) 推荐效果评估。推荐系统的概念已经提出几十年了, 但如何有效的评价推荐结果仍然面临着很多问题。

3 结论

本文围绕着协同推荐这一主题, 介绍了协同过滤算法的基本原理, 叙述了两个主要的协同过滤算法的基本思路和算法的基本步骤, 并且还对比了两者间的差别。最后文章还阐述了协同过滤算法当前所存在的一些难题。今后如何在实际应用中解决这些问题将是针对协同过滤算法研究的重点。

参考文献

[1]蔡浩.基于Web使用挖掘的协同过滤推荐算法研究[D].浙江理工大学, 2010.

[2]王亮.基于门户服务器的视频监控系统的研究与实现[D].西安电子科技大学, 2008.

[3]贾晓倩.基于相似性的P2P网络资源发现策略研究[D].山东师范大学, 2011.

协同过滤推荐算法综述 篇2

[关键词] 电子商務 推荐系统 协同过滤 相似度计算 数据挖掘

一、引言

电子商务推荐系统是模拟销售人员向网络客户推荐商品的系统,推荐精度的高低直接影响了用户的购买量,也影响着用户对该系统的信任度,信任程度的高低决定了用户对该系统的使用率,从而影响用户浏览实现了推荐功能的网站进行物品购买的次数。

当前的信息推荐技术主要有:协同过滤推荐、基于内容推荐、基于人口统计信息推荐、基于效用推荐、基于知识推荐、基于规则推荐。

二、协同过滤算法介绍

1.基于项的协同过滤算法介绍

基于项的协同过滤是通过相似度的计算,找出当前用户未评分项目的前k个相似项目,根据用户对这k个项目的评分预测当前用户对未评分项目的评分值,按照评分值大小进行推荐。推荐分为两个步骤:①找出当前用户(这里指系统进行项目推荐的对象)的未评分项目的相似项目;②根据每个未评分项目的相似项目评分预测当前用户对未评分项目的评分,根据预测评分的高低,推荐前N个评分较高的项目给用户。

(1)项目相似度的计算

计算方法主要包括三种方法:

①基于余弦的相似度计算

(1)

其中,表示项目i,j的相似性,和表示对于项目i和j存在有共同用户对此两项评分的分别的评分集合。

实际应用中,该公式存在如下问题:因为,数据稀疏性是协同过滤使用中遇到的一个问题, 尤其是推荐系统初次使用时,数据库中的用户评分极其稀少,所以在这种情况下,存在两个项目之间只有1~2个共同的用户,如果这1~2个共同用户对这两个项目的品质认为是无差异的,则用余弦相似性进行计算时得出的结果也是认为两者很相似。事实上,基于项目的协同过滤算法是认为如果绝大多数用户对两项目的感觉是无差异的,则证明这两项目具有相同的品质,那么具有相同品质的两项目对于待推荐用户来说也是无差异的。可是,当两项目只有一两个共同评分用户,项目相似性的计算仅仅是反映了这一两个用户所关注的项目特征在这两个项目中是否相同,而这一两个用户所关注的项目特征并不一定是待推荐用户所关注的特征,并且一两个特征的相似也不能真正反映两个项目之间的相似性。

②基于相关性的相似度计算

(2)

其中,U表示对项目i和j都有评分的用户集合,和分别表示用户u对i与j的评分,和表示集合U中所有用户对i和j评分的平均值。

相关性的相似度计算是将用户对项目i、j的打分看作是一个两个随机变量,通过计算两个随机变量分布的相似性得出两项目的相似性。

③调整余弦的相似度计算

(3)

其与余弦相似性不同在于:将不同用户的打分规模考虑进去,其中表示用户u的平均打分。余弦相似性没有考虑不同用户的打分规模会造成平均打分较高的用户对相似度计算作用大于其余用户,使得每个用户的打分对相似度计算的贡献率不相等,造成相似度计算不如调整余弦相似度的计算精确。

在实际应用中,在数据库中打分数据分布极其稀疏的情况下,调整余弦的相似度的度量也会遇到在余弦相似性计算中所遇到的情况,即当项目只有一两个共同评分用户,项目相似性的计算仅仅是反映了这一两个用户所关注的项目特征在这两个项目中是否相同,而这一两个用户所关注的项目特征并不一定是待推荐用户所关注的特征,并且一两个特征的相似也不能真正反映两个项目之间的相似性。另外,在进行算法精度测试试验中,发现调整余弦的相似度计算有出现分母为0的情况。在程序测试过程中发现,分母为0有两种情况:

a)两项目只有一个共同打分的用户,该用户对很少的项目打分且打分值相同,即且。这种情况,按照余弦相似性的思想,可以认为两项目的相似度值为1。

b)两项目有为数很少的共同评分用户,且出现或的情况。在这种情况下,调整余弦无法正确计算出两项目之间的相似度,因此在数据极其稀疏的条件下,不宜采用调整余弦相似度进行度量。

2.评分预测公式

(1)权重和法

(4)

其中,表示项目i和j的相似度,表示用户u对项目j的评分,n表示选出n个数目的最近邻项目。该预测公式适用于用户评分数目相当大的情况。(基于项目相似度计算经典算法)当用户评分数目较少的情形下,相似度的计算本身就不精确,而该公式对未评分项目的预测,完全依赖于不精确的相似度值选择的相似项目的打分进行预测,精度很低。

(2)线性回归法

目标项目i对应向量为,相似项目N对应向量为,则线性回归模型为(5)

其中,的值由目标向量与相似向量确定,为误差项。

三、基于项目相似度计算改进算法

在第2节中,提到余弦相似度和调整余弦相似度都会碰到的问题:当两项目只有一两个共同评分用户,项目相似性的计算仅仅是反映了这一两个用户所关注的项目特征在这两个项目中是否相同,而这一两个用户所关注的项目特征并不一定是待推荐用户所关注的特征,并且一两个特征的相似也不能真正反映两个项目之间的相似性。

基于上述问题,本节提出了对这两种相似度计算的改进公式。本节认为,两项目分别的评分用户越多,则这两项目的共同评分项目也应该越多,因为一用户对一个项目感兴趣且有打分,则他对该项目的相似项目也应感兴趣且应有打分。基于这种观点,本节对余弦相似度和调整余弦相似度公式进行改进,并用基于改进的余弦相似度公式和传统余弦相似度公式计算项目间相似性来进行实验。由于在第2节中提到在数据稀疏的条件下,调整余弦相似度公式计算中会遇到分母为零的可能,且对调整余弦相似度公式的改进与余弦相似度公式改进方式是相同,故可以认为基于余弦相似度公式和改进公式的对比试验结果可以代表调整余弦改进公式的改进效果。

1.改进的相似度计算公式

(1)改进的余弦相似度计算公式

(6)

其中,mutual_num为对项目i、j都评分的用户数目,item_num表示对项目i、j中任何一个有评分的用户集合的数目。

(2)改进的调整余弦相似度计算

(7)

2.本文提出的对基于项的评分预测的公式

(1)提出的评分预测公式

(8)

其中,为用户u所有评分的平均值,为i和j项目的相似度,n为选择前n个最近邻。当时,令。

(2)说明

①从用户对相似项目评分的相似性考虑,相似项目评分与该用户平均评分的偏差和预测项目的评分与该用户平均评分的偏差也相似。

②与基于向量评分不同在于:基于向量的评分只适合于评分数目十分大的用户,当用户评分数量小时,最相似的几个项目可能用户没有评分,因此导致预测精度降低;另外,当每个项目的评分数量很少时,项目相似性预测精度下降,使得预测精度降低,而本文提出的预测公式可以降低相似项目对预测项目评分的贡献率。

③在计算中若,即当用户u对相似项目j没有评分时,令,消除没评分时,的影响。

实验证明,在数据极其稀疏条件下,本文提出的预测公式有很好的预测效果。

四、实验过程及结果分析

1.数据来源

本文采用Movielens站点提供的数据集,该数据集包括943个用户对1682部电影的100000条评分,评分取值为(1,2,3,4,5)中任一个数,值越大说明用户喜好程度越高,每个用户至少评价了20部电影。

2.测试方法

本文随机抽取其中80000条评分作为训练集,剩余20000条数据作为测试集,分别采用余弦相似性(公式1)和本文提出的改进地余弦相似性(公式6)进行相似度度量,并都采用本文提出的评分预测公式进行预测。

3.评测标准

本文采用平均绝对误差MAE作为评测标准,它是常用的推荐算法质量评价标准。

(9)

num为算法评分项目数目,为基于算法预测的评分,测试集中用户原始打分。

4.试验结果

五、结论

从上图可以看到,本文提出的改进算法的精度明显优于传统算法,这证明改进的余弦相似度计算方法比传统余弦相似度算法准确度高,因为它将每个项目的被评分规模考虑进去,排除了传统余弦相似度算法因为某些项目的打分用户数目大导致与其他并非很相似的项目计算结果很相似的可能。图中显示,当最近邻数目为10时,改进算法的精度最高;当最近数目大于10时,随着最近邻数目的增多,预测精度反而降低,从10以后的最近邻的相似度开始降低。在传统算法中,最近邻数目从40到50之间时,预测精度反而上升,这说明最近邻从40到50之间的存在着可能更相似的用户。通过这些对比,证明了本文的改进算法的有效性。

参考文献:

[1]刘玮:电子商务系统中的信息推荐方法研究.情报科学.2006,2

[2]Badrul Sarwar,George Karypis,Joseph Konstan,etc.Item-Based Collabrative Filtering Recommendation Algorithms.WWW10.2001

协同过滤推荐算法综述 篇3

随着电子商务和互联网的迅速发展, 人们能够获得的资讯越来越多, 但是想快捷地获得自己感兴趣的资讯越来越难。近年来兴起的个性化推荐系统成为解决这些问题的一个重要途径。个性化推荐系统很多, 协同过滤推荐是当前最成功的推荐技术[1]。

协同过滤的概念是由Goldberg、Nicols、Oki以及Terry在1992年首次提出的[2], 应用于Tapestry系统, 其基本思想是:通过对用户的显式输入或隐式输入的历史数据收集并统计计算, 预测与此用户兴趣相似的用户, 并将其相似用户感兴趣的项目推荐给此用户。

目前, 主要的协同过滤推荐算法有两类:基于用户的协同过滤推荐算法和基于项目的协同过滤推荐算法。本文对协同过滤推荐算法中的关键技术进行了详细的介绍, 并对协同过滤推荐算法中存在的问题进行了分析, 同时也介绍了一些解决问题的改进方法和算法评估方法, 最后对协同过滤推荐算法的发展进行了展望。

1 传统的协同过滤推荐算法

传统的协同过滤推荐算法可以分为三个步骤:

1.1 构建用户-项目评价矩阵

用户评分数据可以用一个m×n的用户-项目评价矩阵Rm×n来表示 (如图1所示) 。其中, m行表示用户的数量, n列表示项目的数量, 第i行第j列元素Rm×n表示用户i对项目j的评分。

1.2 最近邻居集的形成

这一步骤是基于用户的协同过滤推荐算法的核心步骤。对目标用户u, 算法找到与其相似度最高的K个用户, 这K个用户就是该目标用户的最近邻居集合且N (u) 中的用户uk按其与用户u之间的相似度sim (uk, u) (1≤k≤K) 由大到小排序。

传统的计算用户相似度的方法有三种[3]:

(1) 余弦相似性 (Cosine Similari) :把用户对项目的评价看做n维项目空间的向量, 两个用户间的相似性通过二者向量夹角的余弦度量。设用户i和用户j在n维项目空间的评分分别用向量表示, 则两者间的相似性为:

(2) 相关相似性 (Correlation Similar) :相关相似性也称皮尔森 (Pearson) 系数相关, 通过皮尔森 (Pearson) 相关系数来度量用户间的相似性。设用户i和用户j共同评分的项目集合用Iij表示, 则两者间的相似性为:

其中, Ri, c和Rj, c分别表示用户i和用户j对项目c的评分, 分别表示用户i和用户j对项目的平均评分。

(3) 修正的余弦相似性 (Adjusted Cosine Similari) :由于余弦相似性度量方法中没有考虑到用户不同的评价尺度问题, 在修正的余弦相似性度量方法中通过减去用户对项目的平均评分来改善上述缺陷。设用户i和用户j共同评分的项目集合用Iij表示, Ii和Ij分别表示用户i和用户j评分的项目集合, 则两者间的相似性为:

其中, Ri, c和Rj, c分别表示用户i和用户j对项目c的评分, 分别表示用户i和用户j对项目的平均评分。

1.3 产生推荐

目标用户的“最近邻居”集产生后, 可以计算两类结果:用户对任意项的兴趣度的预测值和Top-N形式的推荐集。

(1) 目标用户对任意项的兴趣度的预测值。目前大部分协同过滤推荐系统都采用平均加权策略来产生推荐, 目标用户i对项目c的预测评分为:

其中, sim (i, j) 为用户i和用户j的相似度, Rj, c为最近邻居中的用户j对项目c的评分, 分别表示用户i和用户j对项目的平均评分。

(2) Top-N形式的推荐集。分别统计“最近邻居”集中的用户i对不同项的兴趣度的加权平均值, 取其中N个排在最前面且不属于Ii (Ii表示用户i评分的项目集合) 的项作为Top-N推荐集。

2 协同过滤推荐算法存在的问题及解决方法

协同过滤推荐技术在个性化推荐系统中取得了巨大的成功, 并得到了广泛的应用。然而, 随着互联网的发展和普及, 电子商务系统规模的扩大, 站点结构、内容的复杂程度和用户人数的不断增加, 以及协同过滤本身的特点, 协同过滤推荐面临着一些难以解决的问题, 比较典型的有数据稀疏问题、冷启动问题、算法的可扩展性等问题。

2.1 数据稀疏性问题

这是推荐系统面临的主要问题, 也是导致系统推荐质量下降的主要原因。在众多推荐系统中, 用户评分过的项目数量往往很有限, 相关研究指出这个比例在3%左右[4], 使得用户-项目评分矩阵极端稀疏性, 导致用户最近邻居和项目最近邻居的计算准确性降低, 使得推荐系统的推荐质量急剧下降。

目前, 解决数据稀疏性问题的一种方法是矩阵填充技术。最简单的填充办法就是将用户未评分项目的评分设定为一个固定的缺省值, 或者设置为其他用户对该项目的平均评分[5]。然而, 用户对为评分项目的评分不可能完全相同, 这种方法也就不能从根本上解决稀疏性问题。比较理想的方法是采用预测评分对用户-项目评分矩阵进行填充, 主要有以下几种:BP神经网络、Naive Bayesian分类方法、基于内容的预测。

另一种解决数据稀疏性问题的方法是矩阵降维技术。通过降低用户-项目评分矩阵的维数, 删除那些不重要的或噪音用户和项目, 将两个用户投影到一个低维空间上, 计算两者间的相似度, 提高了算法的效率。比较典型的降维技术是奇异值分解 (Singular Value Decomposition, SVD) 技术, 将大小为m×n (假设m≥n) 的用户-项目评分矩阵R分解为大小分别为m×m, m×n, n×nd的三个矩阵。

2.2 冷启动问题

冷启动问题包括用户冷启动问题 (New user problem) 和项目冷启动问题 (New item problem) , 可以说是数据稀疏性问题的极端情况。 (1) 在基于用户的协同过滤推荐系统中, 对于一个新加入的用户来说, 系统中没有该用户的任何浏览或购买信息, 甚至连该用户的浏览信息都没有, 因此无法找到该用户的最近邻居, 从而无法对其进行推荐。 (2) 在基于项目的协同过滤推荐系统中, 当加入一个新的项目, 由于系统中没有对该项目的评分, 从而无法找出该项目的最近邻居, 也就无法将该项目推荐出去。而且, 在新项目出现早期, 用户评价较少, 推荐的准确性也比较差[6]。

为了解决冷启动问题, 普遍采用基于内容的最近邻居查找技术[7], 其基本思想是: (1) 利用聚类技术将用户按照属性相似性聚类, 从项目属性的角度找到新项目的最近邻居; (2) 用新项目k的所有最近邻居的平均评分来代替已有评分的平均值。

2.3 可扩展性问题

传统的协同过滤推荐算法的运算时间是随着用户和项目数目的增加而急剧增长的, 面对越来越多的用户和项目数据, 传统的推荐系统将面临严重的可扩展性问题。通常采用聚类技术来解决这一问题, 典型的方法有以下几种:k-means聚类算法、EM (ExpectationMaximization) 算法、Gibbs Sampling方法和模糊聚类。

上面讨论的都是目前协同过滤推荐系统面临的几个关键问题, 事实上, 推荐系统还面临着许多其他问题, 例如统一性问题、安全问题、隐私问题等。虽然很多研究者对传统的协同过滤推荐系统作了改进, 但都很难从根本上解决问题, 这也是未来研究协同过滤推荐系统的重点。

3 算法性能评估标准

个性化推荐系统的性能是由用户对其推荐结果的满意度决定的。评价推荐系统推荐质量的度量主要包括统计精度度量方法和决策支持精度度量方法两类[8]。统计精度度量方法中常用的是平均绝对偏差MAE (Mean Absolute Error) ;决策支持精度度量方法中主要有召回率 (Recall) 、准确率 (Precision) 等两种方法。

3.1 平均绝对偏差MAE通过计算用户或项目的预测评分与实际评分之间的偏差量来衡量推荐结果的准确度, MAE越小, 推荐的质量就越高。假设预测的用户评分集合表示为{p1, p2…pN}, 对应的实际用户评分集合为{q1, q2…qN}, 则平均绝对偏差MAE定义[9]为:。

3.2召回率 (Recall) 反映的是待推荐项目被推荐的比率:。

其中, test表示测试数据集中的项目数量, top-N表示系统推荐给用户的N个项目。

3.3 准确率 (Precision) 表示算法推荐成功的比率, 即预测准确的项目总数与预测的所有项目总数之比:

其中, test表示测试数据集中的项目数量, top-N表示系统推荐给用户的N个项目。

4 总结及展望

本文围绕协同过滤推荐这一主题, 对协同过滤推荐算法进行了详细的介绍, 对存在的数据稀疏性问题、冷启动问题和可扩展性问题进行了深入的研究, 并介绍了一些经典的解决方法。最后对算法的评估方法作了详细的介绍。

今后, 如何解决协同过滤推荐算法存在的问题将是这一课题研究的重点, 研究者也提出了很多改进方法。但是, 这些方法只能在一定程度上或某些特定场合选才能有效解决问题。随着电子商务的进一步发展, 这些问题必定会进一步凸显。而且, 协同过滤推荐还会面临一些新的挑战, 例如安全问题、隐私问题等。另外, 随着推荐算法的层出不穷, 对算法的评估标准的研究也会越来越重要。同时, 将其他领域技术与推荐技术相结合也将会成为未来的一个重点研究方向。

参考文献

[1]HERLOCKER J, KONSTAN J, TERVEEN L, et al E-valuating collaborative filtering recommend systems[J].ACMTranson Information Systems, 2004, 22 (1) :5-53.

[2]Goldberg D, Nichols D, Oki B M, et al.Using collaborativefiltering to weave an information tapestry[J].Communications of theACM.December, 1992, 35 (12) :61-70.

[3]Lu Pei.An Improved Project Clustering-Based CollaborativeFiltering Recommendation Algorithm[J].Public Communication ofScience&Technology, 2011, No.1:205-206.

[4]孙小华.协同过滤推荐系统的稀疏性与冷启动问题研究[D].浙江大学, 2006.

[5]Deng Ai-lin, Zhu Yang-yong, Shi Bai-le.A collaborativefiltering recommendation algorithm based on item rating prediction[J].Journal of Software, 2003, 14 (9) :1621-1628.

[6]许敏, 邱玉辉.电子商务中推荐系统存在的问题及其对策研究[J].计算机科学, 2001, 28 (4) :122-124.

[7]Ma Hong-wei, Zhang Guang-wei, Li Peng.Survey ofCollaborative Filtering Algorithms[J].Journal of Chinese ComputerSystems, 2009, Vol.30, No.7:1282-1288.

[8]吴发青, 贺樑, 夏薇薇, 等.一种基于用户兴趣局部相似性的推荐算法[J].计算机应用, 2008, 28 (8) :1981-1985.

协同过滤推荐算法研究综述 篇4

随着信息技术的迅速发展, 互联网在为用户提供越来越多信息的同时, 其规模也变得越来越庞大, 其结构也变得越来越复杂。对于用户来说, 如何及时有效地在网络上的海量信息中发现自己所需要的信息已经变得相当困难。推荐系统就是解决这一问题的最有效的途径。推荐系统现已经广泛地应用于很多领域, 如电子商务, 电影, 音乐, 社交网络等等。在推荐系统中应用最成功和广泛的是协同过滤推荐算法, 对该算法的研究已经呈现了大量的研究和应用成果。

二、协同过滤推荐算法的分类

在协同过滤推荐算法中, 用户评分数据中包含m个用户的集合U={u1, u2, ……, um}和n个项目的集合I={i1, i2, ……, in}。用户对项目的评分数据可以采用用户-项目评分矩阵来表示。根据推荐产生过程和采用技术的不同, 通常可以将协同过滤推荐算法分为两类:基于记忆和基于模型的算法[1]。

2.1基于记忆的协同过滤推荐算法

基于记忆的协同过滤推荐算法类似于机器学习中的懒惰学习算法, 是直接对整个用户-项目评分矩阵进行计算, 找到相似的用户或项目来产生推荐结果。根据相似性计算的对象的不同, 又可以分为基于用户的算法和基于项目的算法。基于用户的协同过滤算法的主要思想是利用兴趣偏好相似的用户的评分来产生推荐列表[2-3]。而基于项目的算法, 则利用相似项目进行推荐。根据这类算法的基本原理, 可以把算法的实施分为四个阶段: (1) 相似性计算。常用的度量用户或者项目的相似性的方法主要包括如下三种:余弦相似性, 皮尔逊相关系数和约束的皮尔逊相关系数[4]。此外, 项目的相似性还可以基于条件概率来计算[5]。 (2) 选择相似近邻。在基于用户的算法中, 通常采用K最近邻方法[6]和基于阈值的方法[7]为目标用户选择兴趣偏好最相似的邻居。而基于项目的算法, 则选择所有相似项目作为近邻。 (3) 预测评分。这个环节主要根据相似用户或者项目的评分, 来预测目标用户对目标项目的评分。 (4) 推荐。常用的推荐方法是全局排序方法, 即选择预测评分最高的前N个项目, 即top-N推荐方法。

2.2基于模型的协同过滤算法

随着用户和项目的数量规模不断扩大, 评分数据越来越高维, 传统的基于记忆的协同过滤算法在计算量上也面临可扩展的问题, 而且难以得到好的实时推荐效果。为了解决这些问题, 一些学者提出了基于模型的推荐算法。这一类的算法首先利用统计技术和机器学习技术对用户-项目的评分矩阵进行训练, 通过训练建立一个模型, 然后再基于这个模型为目标用户进行预测, 进而产生推荐结果。在基于模型的协同过滤推荐算法中主要采用的技术包括贝叶斯网络[8], 聚类[9-10], 降维技术[11-12], 潜在语义[13-14], 本体模型[15]和云模型[16]等等。

三、协同过滤推荐算法的评估指标

根据现阶段推荐系统的任务, 可以主要把对推荐算法的评估指标分成3类:预测准确度和分类准确度。

3.1预测准确度

预测准确度主要用来度量算法预测的评分与真实评分之间的偏差。在那些要给用户显式预测评分值的场景中, 预测准确度尤其重要。在协同过滤推荐算法中最常用的预测准确度指标是平均绝对误差[17], 该指标主要用来度量预测的评分和真实的评分之间直接的数值差距。这个值越小, 表明预测越准确, 推荐质量越高。该指标因其计算简单、通俗易懂得到了广泛的应用。不过这个指标也有一定的局限性, 因为对这个指标贡献比较大的往往是那种很难预测准确的低分项目[1]。

3.2分类准确度

推荐系统的主要任务就是向用户推荐喜欢的项目, 也可以看作一个分类问题。分类准确度指标就是衡量推荐系统是否能够正确预测用户喜欢或者不喜欢某个项目的能力[18]。常用的度量分类性能的指标是查准率和查全率。查准率和查全率指标往往是负相关的而且依赖于推荐列表长度。为了同时考察查准率和查全率, Pazzani等把二者综合考虑提出了F1指标[19]。F1指标的值越大, 说明推荐的准确度越高。

四、协同过滤推荐算法面临的问题

随着网络的发展, 用户和项目的数量迅猛增加, 而网络资源和站点结构也变得越来越复杂, 协同过滤推荐算法在实际的推荐系统的应用中, 仍然面临着以下问题:

4.1稀疏性问题

现在的推荐系统中, 数据规模都非常庞大, 两个用户之间选择的重叠非常少。例如在淘宝上的商品数量有近10亿, 平均而言一个用户很少能对超过1000件商品进行评分, 数据严重稀疏。评分数据的稀疏性问题, 严重地影响了算法的推荐质量。这个问题本质上是无法解决的, 但是可以通过一些办法, 在相当程度上缓解这个问题。比如, 对原始数据集的空缺值, 可以预先填充一些评分, 这样就可以提高相似性度量的准确度, 从而提高算法的准确度[20]。但是预先填充计算量往往比较大, 耗费时间, 而且可能填充值本身会带来误差, 反而后会影响推荐的质量。

4.2冷启动问题

冷启动问题是指新用户和新项目问题。新用户刚加入到推荐系统时, 系统并没有新用户在系统的任何信息, 如评分或者浏览、购买记录等。对新用户问题的处理, 常常需要利用用户的个人统计信息来改进推荐结果[21]。但是, 由于涉及个人隐私, 用户一般不愿意公开提供详细的个人信息, 所以推荐效果会受到一定的限制。同理, 当新项目加入到推荐系统中后, 由于没有用户对其进行过评分, 浏览或者购买, 所以一开始它将无法被推荐。对新项目问题的处理, 需要结合基于内容的推荐方法来解决。

4.3信任问题

传统的推荐系统对用户来说, 推荐系统是个“黑盒”, 用户只能看到系统推荐的结果, 但是用户完全不知道自己有哪些相似用户, 以及如何得出最终的推荐结果。另外, 由于数据的稀疏性与冷启动等问题, 造成推荐的结果出现很大偏差的时候, 用户也无法知道出现这样情况的原因, 和怎么去修正这个推荐结果。如果能够更好地向用户说明并提供推荐的原因, 也可以有效地改善用户体验, 提升用户的满意度和忠诚度。要解决这个问题, 就要利用当前用户所信任的用户来产生推荐结果。用户之间的信任关系可以直接利用用户明确提供的信任值来度量[22], 也可以利用用户的行为数据, 如用户对项目的评分来计算获得。如何合理地度量用户之间的信任关系, 以及在系统内的用户群之间进行信任传递都是推荐技术面临的重要问题。

4.4多样性问题

近年来大量的研究结果表明, 推荐系统不但要为用户提供准确的推荐结果, 还应该为用户推荐多样化的项目, 这样才能吸引用户的兴趣, 提高用户对系统的满意度和忠诚度。另一方面, 应用推荐系统的商家, 也希望在推荐结果中出现更多种不同类别的商品, 这样才能激发用户产生新的购物需求, 提高商品销售额。Adomavicius在预测评分的基础上, 提出了几种排序技术来改进推荐结果的集合多样性[23]。Hurley等把推荐多样性和推荐质量作为一个二元优化问题进行分析, 即在提高推荐多样性和不降低推荐准确率这两方面得到一个折衷的方案[24]。尽管上面提到的这些方法效果很好, 但是都是从算法本身的角度去考虑, 还没有办法就相关结果而提供合理的解释。推荐的多样性和精确性两者之间矛盾, 到目前为止还是一个无法解决的难题。

4.5大数据处理的问题

随着互联网的发展, 新项目还在不断加入系统, 新用户也在不停地进入系统, 用户和项目之间还不停地产生新的关联。数据量不仅非常庞大, 而且数据本身还不断地在动态变化, 数以亿计的海量数据给数据的存储和计算的速度带来极大的挑战。要解决这个问题, 首先考虑的就是算法的并行化。已有研究者在Hadoop平台设计分布式的协同过滤推荐算法, 实验结果表明, 这一方法能有效提高响应时间, 但是在数据稀疏的情况下, 算法的推荐精度较低[25]。针对大数据处理的问题, 对分布式算法的研究刚刚起步, 还有很多的不足, 但是将会成为推荐算法研究中的一个新的热点方向。

摘要:协同过滤推荐算法是目前在推荐系统中应用最成功和广泛的技术之一。本文详细介绍了协同过滤推荐算法的分类和度量指标。同时, 分析了协同过滤推荐算法中的问题以及相应的解决办法。最后阐述了协同过滤推荐系统中仍需解决的问题和未来可能的发展方向。

协同过滤算法研究综述 篇5

随着网络和电子商务的迅猛发展, 用户可以在网上随意寻找自己感兴趣的商品, 但随着信息爆炸式增长, 用户在这过程中浪费了很多时间, 个性化推荐系统对电子商务网站的业绩有很深的影响, 其主要作用表现在以下几方面:可以把随意浏览网站的潜在客户转变为实际购买者;提升电子商务网站交叉销售能力;提升客户对网站的忠诚度。其中协同过滤技术是目前运用最广泛的个性化推荐技术。

1 协同过滤算法

协同过滤技术是通过收集整理过去用户产生的数据来寻找邻居用户, 其基本原理是根据相似用户的兴趣来推荐当前用户没有参与但是很有可能会感兴趣的项目, 所基于的假设是如果两个用户兴趣类似, 那么很有可能当前用户会喜欢另一个用户所喜欢的项目。协同过滤推荐技术分为3个阶段:评分数据表示;最近邻居形成;推荐项目集产生

1) 评分数据表示:将用户对于项目的评分收集整理后描述成一个的用户-项评分矩阵, 其中m表述用户数, n表式项目数。矩阵中元素表述用户对项目的评分;

2) 最近邻居形成:指根据项目评分矩阵来发现目标用户的最近邻居。协同过滤技术是通过计算用户之间的相似性来找到目标用户的最近邻, 所以算法的关键就在于如何准确找到目标用户的最近邻。常用的用户之间的相似度算法有Pearson相关系数和余弦相似性;

3) 推荐项目集产生:目标用户的最近邻居集产生后, 可以得出目标用户对未评分项的预测分, 将分值按照高低排列, 产生TOP-N的推荐项目集合;

这就导致了协同过滤技术过分依赖于用户评分, 但目前电子商务网站的用户和商品数量一直在上升, 同时用户对商品项的评分却非常稀少, 通常在1%以下, 使得用户-项目评分矩阵过于稀疏, 导致个性化推荐质量下降:

1) 评分矩阵稀疏使得寻找最近邻的准确度降低;

2) 冷启动 (cold-start) 问题, 此问题是稀疏性的极端情况, 指当新用户或新项目进入到推荐系统中时, 由于没有历史数据, 导致无法产生推荐集。

针对评分矩阵稀疏性问题许多研究人员对协同过滤算法提出了改进, 本文系统的归纳和分析了各算法的研究情况, 同时为协同过滤算法提供了几点研究方向。

2 改进的协同过滤算法综述

2.1 结合项目相似性和时间函数的协同过滤算法

刘芳先等分析传统协同过滤算法的局限于以下三点:

1) 传统算法对于用户之间的相似度是通过两用户共同给予的项目评分来计算的, 却没有考虑项目是否相关, 如一用户对于某书籍的兴趣可能跟他看过的书有关, 而跟他评价过的服装没关系;2) 随着时间变化用户的兴趣也会变化的, 这点传统算法却没有考虑到;3) 传统的协同过滤算法在计算项目间相似性, 没能将项目特征考虑在内, 导致相似性度量不够准确。

在此基础上刘芳先提出来改进算法, 其主要思想是将项目的相关性引入到用户相似性的计算公式中, 同时在预测新目标项的得分时引入了时间加权函数, 时间加权函数能反映出用户对最近点击的项目兴趣较大, 新数据对于预测得分影响大, 而旧数据体现的是用户之前的兴趣, 所以在预测上占权重较小。

这种改进算法在计算用户相似性的时候引入项目相似度, 这样可以在一定程度上减少不相关的项目对于推荐结果的影响, 同时将时间函数引入了预测得分的公式中, 一定程度上反映出随用户趣变化得到推荐集也不同。但是这算法依然对用户-项目评分矩阵依赖性太大, 不利于解决数据稀疏性问题。

刘勇在分析了计算项目相似度时碰到的问题:当两项目只有很少用户给予评分, 同时给予评分的用户所关注的项目特征可能不是目标用户所关注的特征, 这会导致推荐质量下降。基于这类问题, 刘勇提出了改进的相似度计算公式:

si=m (i, j) mituetumal__nunumm×cios* (i, jj)

Mutual_num表示对于项目i、j都评分的用户数目, item_num表示对项目i, j中任何一个有评分的用户集合数目。

2.2 降维处理

文献[7]为了降低项目评分矩阵的稀疏性, 提升推荐精度, 提出了一种基于主成分降维技术和K-means聚类的混合协同过滤新算法。算法先对用户-项目矩阵进行缺失值填充, 然后运用主成分分析技术提取主成分因子, 在降低矩阵的维数同时保证大部分信息没有损失, 在降维后的向量空间上进行K-m eans聚类, 找到目标用户的最近邻, 最后得到目标用户对于未评分项目的预测值, 从而产生推荐集。该算法在一定程度上缓解超高维空间寻找最近邻问题。

文献[8]提出了基于项目聚类的协同过滤, 算法主要思想是结合项目评分与项目属性的项目相似度, 再对项进行聚类。聚类可以通过一些聚类算法将项和用户聚成若干子类, 再在各小类中产生推荐集。张娜等先计算项目相似度再用k划分聚类算法进行项目聚类, 产生k个用户-项目子矩阵, 然后对已有的项目聚类结果用k划分算法进行客户聚类, 最后在目标用户所在的几个矩阵中寻找最近邻。

2.3 结合基于内容推荐的协同过滤算法

文献[10]在分析了传统协同过滤在处理新项目和新用户问题上的瓶颈提出了结合基于内容推荐的协同技术。协同过滤算法过分依赖于用户评分, 而对于新项目和新用户没能产生评分数据, 推荐集中就不会出现, 但基于内容的推荐算法对于每个用户都有用户描述, 其中记录了用户感兴趣的内容。可以根据用户喜好和项目的特征信息, 推荐给与目标用户特征相似的项目, 这就能较好的解决这一问题。

虽然这算法可以一定程度上解决“新项目”问题, 但也存在一定的局限:用户或项目特征提取能力有限, 目前只能进行简单的提取, 对于项目特征不能做到准确的定位, 基于内容的推荐现阶段只能对文本内容提取, 而对于一些影像, 图像很难做到提取特征。

2.4 结合基于关联规则的协同过滤算法

文献[11]提出了一种结合关联规则和协同过滤的算法, 其主要思想是:先通过关联规则在商品项中找到频繁项, 再将这些频繁项捆绑在一起对目标用户进行推荐, 这就可以更好更多的产生推荐集了。但是目前这方面算法研究还处于初级阶段, 可以从以下几方面进行进一步的研究:1) 如何将Web日志预处理更好的融入到协同过滤中去;2) 面对数据快速更新速度, 如何剔除无用的信息, 保证推荐及时性和准确性;3) 如何更好的将这一推荐技术应用到实践中。

2.5 其他的一些改进算法

傅鹤岗[12]等在分析了传统协同过滤算法在用户数量快速增长的时代下所需要付出的代价很大, 提出了基于模范用户的协同过滤算法。其主要思想是:用户的兴趣常集中在某几个特定区域, 可以先对用户进行聚类, 使得类内相似度高而类间相似度低, 再在这基础上产生推荐集。施凤仙[13]等提出了结合项目区分用户兴趣度的协同过滤算法, 其主要思想是在计算用户相似度时对于不同的项目所占的权重不同, 因为用户对于很多大众流行产品评分很高但不能真正反映用户的兴趣度,

3 总结与展望

随着电子商务迅速发展, 用户及商品项都呈现爆炸式增长, 同时用户对商品项的评分又过于稀少, 导致数据过分稀疏, 对于未来个性化推荐系统发展来说这是个瓶颈。本文总结了大量研究人员提出的改进算法, 这些算法在一定程度上能解决数据稀疏性问题。但这一问题一直都存在, 因此对该算法如何改进还需要进一步研究探讨, 下一步的工作可以从以下几方面进行:

1) 建立一套完善的评分激励制度。这可以从根本上解决数据稀疏性问题, 完善的激励制度可以使得用户愿意客观的去给予商品项评分, 通过这项制度, 可以得到更多准确, 可信度高的评分项, 从而利于推荐系统产生推荐集;

2) 与政府及企业部门共享客户资料。目前的政府和企业都有一套完善的管理系统, 其中包含了很多个人信息, 如果可以将这些信息和电子商务网站上的客户信息整合, 那数据稀疏性问题可以得到一定程度的解决;

协同过滤推荐算法的研究 篇6

目前的电子商务推荐系统中运用的推荐算法主要可分为三大类:基于内容的推荐算法、基于规则的推荐算法和协同过滤推荐算法。

1.1 基于内容的推荐算法是信息过滤研究的派生和继续

基于内容的推荐系统需要分析资源内容信息, 根据用户兴趣建立用户档案, 用户档案中包含了用户的品位、偏好和需求信息。然后根据资源内容与用户档案之间的相似性向用户提供推荐服务。

1.2 关联规则挖掘技术在零售业得到了广泛的应用, 它可以发现不同商品在销售过程中的潜在相关性

基于规则的推荐技术在评价表上挖掘项目间的关联规则和用户间的关联规则为当前用户进行推荐。而使用户关联进行推荐时, 用户关联的后件必须是当前用户, 使用用户关联的前件中的用户的共同兴趣模拟当前用户的兴趣, 模拟的可信度就是用户关联的可信度, 以此作为推荐的依据。

1.3 协同过滤的基本概念就是把这种推荐方式变成自动化的流程

协同过滤主要是以属性或兴趣相近的用户经验与建议作为提供个性化推荐的基础。透过协同过滤, 有助于搜集具有类似偏好或属性的用户, 并将其意见提供给同一集群中的用户作为参考, 以满足人们通常在决策之前参考他人意见的心态。

本人认为, 协同过滤技术应包括如下几方面: (1) 一种比对和搜集每个用户兴趣偏好的过程; (2) 它需要许多用户的信息去预测个人的兴趣偏好; (3) 通过对用户之间兴趣偏好相关程度的统计去发展建议那些有相同兴趣偏好的用户。

2 协同过滤推荐现有算法的分类研究与分析

正是因为传统协同过滤推荐算法存在着诸多问题, 研究者们才不断提出改进的协同过滤推荐算法。

2.1 全局数值算法

全局数值算法每生成针对一个用户的推荐项目列表就需要扫描用户评价数据库一遍, 这种方法能随数据的变化而变化, 实现也比较简单, 所以被大量才采用。但是在实践中数据稀疏性难以解决, 面对庞大的用户数据库, 推荐产生也非常耗时, 成为全局数值算法面临的主要挑战。

2.2 基于模型的算法

基于模型的算法只需扫描一遍用户评分数据库就可以完成对所有用户的推荐。优点是建立的模型相对于原始数据集而言小得多, 因此能有效缓解推荐算法的实时性问题。但模型具有滞后效应, 为了保证模型的有效性, 必须周期性的对模型进行更新。而模型的训练代价高, 因此该算法不适合数据更新频率快的系统。

2.3 组合推荐算法

(1) 协同过滤和基于内容的结合算法。两种算法的结合可以利用基于内容算法的优点, 对项目进行相似度匹配, 尤其当项目尚未得到用户评价的情况下也能推荐给用户, 避免新项目问题;另一方面利用协同过滤的特点, 当用户数和评价很多时, 协同过滤推荐更准确。 (2) 协同过滤和基于关联规则的结合算法。关联规则技术用于协同过滤系统是利用Apriori算法通过挖掘用户的评价记录的关联来进行推荐。该算法往往首先对客户的购买行为进行关联规则挖掘, 并进行单一客户的偏好建模;然后, 应用协同过滤技术寻找与此客户兴趣相似的客户集, 并从客户集中找出和目标最相似的客户;最后根据匹配集合求解推荐意见。

2.4 数据流图 (DFD1层) 主要处理分析

个性化推荐系统主要有以下处理过程:用户定制服务、行为记录、个性化推荐、购买商品、对商品评分等。第一层数据流图可如图1所示:

3 结束语

电子商务推荐系统是个新兴的研究与应用领域。随着用户需求水平的提高, 推荐算法与系统的研究在不断发展和完善。文中提出的基于用户多兴趣的协同过滤推荐算法, 正是为了解决现实中存在的用户兴趣问题而产生的。算法中由于对项目进行了分类, 所以跨越项目类别和推荐的新异性在一定程度上可能不及传统的协同过滤推荐算法。这将在未来的研究中要进一步思考和研究的问题。

摘要:随着互联网的普及, 网络资源的激增, 网上购物的交易方式正在改变着传统的商业模式。为了提供精确而又快速的推荐, 研究者提出了多种推荐算法。本文将针对电子商务发展的需求, 通过协同过滤推荐算法的文献综述, 对传统过滤算法无法适用于用户多兴趣下的推荐问题进行了剖析, 提出了一种基于用户多兴趣的协同过滤推荐改进算法, 分析了基于用户多兴趣的协同过滤推荐算法的电子商务系统。

关键词:数据挖掘,协同过滤推荐算法,电子商务

参考文献

[1]陈景艳, 苟娟琼, 著.电子商务技术基础.北京:电子工业出版社, 2003.9.

[2]黄解军, 万幼川.基于数据挖掘的电子商务策略[J].计算机应用与软件, 2004, 21 (7) :12-13.

基于协同过滤技术的推荐系统综述 篇7

随着电子商务和Web在线服务的迅速发展,信息搜索和选择变得越来越迫切。面对海量的商品数据,用户对于选择哪一种商品有些困惑,因为他们可能没有足够的知识和时间对这些可供选择的商品进行一一评价。推荐系统是电子商务中最流行和最得力的工具之一,它可以有效地帮助在线用户处理信息过载的问题。推荐系统可以根据用户的历史访问记录和个人喜好来预测最适合用户的商品清单。为了更好地提供个性化推荐,研究者们提供了各种算法和方法。

目前推荐系统主要分为三类。(1)基于内容的推荐:它根据用户过去喜欢的产品,为用户推荐和他过去喜欢的产品相似的产品。(2)协同过滤:使用其他用户的意见评估某一件产品。协同过滤技术收集大量关于用户行为信息,历史记录,点击模式,根据用户之间的相似性把其他用户喜欢的产品推荐给该用户。(3)混合方法:结合了不同的过滤方法。比如基于内容的推荐系统,基于人口统计学的推荐系统,基于效用的推荐系统和基于基础知识的推荐系统。

本文首先对协同过滤推荐算法进行了分析,其次指出协同过滤算法存在的挑战,再者总结相关工作,最后进行了总结。

2 协同过滤推荐算法

在推荐系统中协同过滤算法被广泛的应用。例如基于内存的(Memory-based)协同的过滤算法已经部署到Amazon的商业系统中(http://www.amazon.com/)。

2.1 基于内存的协同过滤算法根据最近邻居算法被分为两类

2.1.1 基于项目的协同过滤算法

基于项目的协同过滤算法主要关注最相似的项目。主要思想是用户对于相似的项目具有相似的看法。基于项目的协同过滤技术克服了用户的冷启动问题,并且提高了可扩展性。

算法思想:(1)项目k,用户h还没有做出选择;项目m,用户h已经选择了;(2)计算k和m之间的相似度c(利用Pearson相关相似性或者余弦相似性);(3)根据相似度c为用户h推荐项目k,返回相似度最高的前N个项目。

2.1.2 基于用户的协同过滤算法

基于用户的协同过滤算法主要关注最相似的用户。基于用户协同过滤算法的推荐系统根据相似用户即最近邻居的评分进行预测。

算法思想:(1)对于任一的物品k,用户u还没有做出选择;对于任一的用户v,他已经选择了物品k;(2)计算用户u和v之间的相似度c(利用利用Pearson相关相似性或者余弦相似性);(3)根据相似度c为用户u添加物品k,并返回相似度最高的前N个物品。

2.2 基于模型的协同过滤算法

基于模型的协同过滤算法是基于学习模型。它通过分析训练数据,总结学习模型,然后通过学习模型进行预测。基于模型的协同过滤算法也主要分为两类。

2.2.1 聚类模型

多项式混合模型也被称为聚类模型,其中所述概率是有条件从参与投票的C类变量获得几个相对小的离散数字。在某些类中,不再考虑哪些涉及到不相关项目的偏好,聚类模型定义了选票的联合概率,类的边缘概率,以及条件分布概率。

Pr(Vi|C=C)=从用户选票的训练数据中计算选票条件概率。

2.2.2 贝叶斯模型

贝叶斯模型是在一个有向无环图中,这个模型在一个三元体<M.D,@>,M表示随机变量,D表示有向弧,@表示条件概率表明确了有多少个节点依赖于它的父节点。

3 特点和挑战

3.1 数据稀疏

随着电子商务系统规模的扩大,用户数据和项目数据急剧增加,使得用户-项目矩阵出现极端稀疏性,从而导致推荐系统的质量下降。数据稀疏问题也叫“冷启动”问题,当系统中新增加一个用户或者项目,由于没有足够的用户和项目信息,所以很难找到它的最近邻居,对于新用户,因为缺乏评分记录和历史购买记录从而不能给出很好的推荐。

3.2 可扩展性

用户和项目的急剧增长,传统的协同过滤算法将会面临严重的扩展性问题,因为计算资源超过了实际的可接受水平。例如千万级的用户(M)和百万级的项目(N),协同过滤算法的复杂度为O(n)已经很大了,然而,很多系统需要根据用户在线需求立即做出推荐,而不管他们的购买记录和历史评分,这就需要一个具有很高扩展性的协同过滤系统。

3.3 同义词问题

一些推荐系统会因为名字的不同把项目分成了不同的种类。

3.4 特殊用户问题

特殊用户是指他们的观点和大部分人们的观点不一致,因此他们不能受益于协同过滤。

4 相关工作

回顾一下我们的研究工作表明,为了更好地做好推荐系统,研究者们使用了各种各样的协同技术,比如个性化协同过滤,基于用户的协同过滤,基于项目的协同过滤等等。当然,协同过滤的一些缺点比如冷启动,数据稀疏,可扩展性也被发现和克服。Yechun Jiang等讨论了个性化协同过滤在Web服务推荐中的应用。计算相似性是Web服务推荐技术中的主要部分,利用相似度,一种行之有效的混合协同过滤技术被提了出来,它集成了基于用户的协同过滤算法和基于项目的协同过滤算法,并且他们利用真实的Web服务数据集WSRec做了实验,其中数据集包括150位用户的超过150万条测试结果,这些用户是来自100个公开的Web服务遍布世界各地的不同的国家。这个实验结果表明这种方法大大增加了推荐质量。Anand Shanker等为学生阅读设计了在线图书推荐系统,它是根据图书的价格和出版社的名字为学生推荐图书,结合了基于用户的协同过滤的特点和关联规则挖掘。该推荐系统采取离线模式把学生的Web文件存储起来,首先系统扫描买家文件记录找到买家之前买的图书种类,比如小说、教科书、参考书等,然后找到它的子类,例如第一级类别是教育方面的,那么它的子类别可能是计算机数据结构、操作系统等,第三步对事物数据库应用关联规则得出图书列表,第四步把基于用户的协同过滤技术应用在第三步得到的图书列表为目标用户推荐前N项图书。

Jyoti Gupta and Jayant Gadge运用协同过滤算法为用户做推荐,在这个系统中是利用其它用户的评分进行推荐,他们解决了协同过滤算法所面临的稀疏性、可扩展性和冷启动的问题。项目相似度和用户集群离线计算,从而具有可扩展性。当一个用户的可用评分比较少时一种自适应加权方案将提高预测的质量,它是使用基于用户集群的人口统计为用户赋予更高的权值。比如一个新用户,为基于项目的协同过滤增加权重作为用户的可用评分项,这是一个可扩展的解决方案并且解决了用户的冷启动问题。

ZhichaoQuan在他的研究中利用用户个性改进用户模型,提出了两个基于个性的协同过滤算法:第一个是从用户的个性角度计算用户相似性,并选择最近邻,然后进行推荐;第二个是使用个性项目评分矩阵,然后为目标用户做出推荐。因为人的性格比较稳定,所以基于人的个性的推荐也比较稳定,这就避免传统用户模型的频繁更新问题,大大减少了计算成本。如果能够很好地获得用户个性,那将不再有冷启动的问题,传统的协同过滤推荐项目的数量过大,而在所提出的方法中,个性因素在数量上比较少,也不随时间的变化而变化,这在一定程度上缓解了稀疏性问题。这种方法的缺点是:在推荐之前必须得到用户的特征,这会增加推荐系统的工作,如果没有最好的方式来获得新用户的特性,“冷启动”问题就会发生。所以当新用户进来时,如果没有准确获得用户特征,那么就要利用他们的兴趣爱好挖掘出特征,然后做出推荐。

5 结束语

一种改进的协同过滤推荐算法 篇8

网络技术的迅猛发展使得互联网上的信息呈现爆炸式增长,为人们的生活和学习提供了便利,与此同时,海量的数据也带来了一些问题,其中最主要的就是“信息过载”问题。所谓信息过载问题,是指由于不相关的垃圾数据过多从而导致用户无法准确找到自己想要信息的问题。

为应对信息过载问题,人们提出了各种解决方案,其中最为用户所熟悉的无疑是搜索引擎技术。但搜索引擎的服务是被动的,它要求使用者必须先给出一个搜索关键字,然后才能提供与该关键字相关的信息。这种完全依赖于关键字的服务模式要求用户能用关键字准确描述自己所需信息,否则无法提供服务,但是现实中用户很多时候并不能精确描述自己的需求信息。这种情况下,以推荐系统为代表的技术可以较好地解决该问题,提高用户的使用体验。

1 协同过滤算法

1.1 算法介绍

“协同过滤”技术最早由GlodBerg等于20世纪90年代提出,该技术最初被用来过滤电子邮件[1],此后这种技术取得了商业上的巨大成功,得到了广泛使用[2,3]。协同过滤的基本思想是,如果两个用户在一些项目上具有相似的评价信息,包括显示的直接评分信息或者点击、购买等隐式评价信息,则这两个用户具有相似兴趣。一般而言,协同过滤需要使用到的用户评价信息会被存储在一个数据表中,该表可以被称为用户评分矩阵。

协同过滤技术的关键在于计算两个用户或者项目的相似度,然后根据相似的用户或者项目进行推荐。其中如果根据某一用户的评分数据寻找到与其相似的用户,并依据相似用户的爱好对活动用户进行推荐的思想被称为基于用户的协同过滤。如果知道用户对某一项目评分较高,则可以根据评分矩阵寻找与这一项目相似的项目推荐给用户,这种思想被称为基于项目的协同过滤。

两种协同过滤算法的基本步骤比较相似。首先,依据用户对物品的评分建立用户评分矩阵,矩阵的行数为系统中用户的数量,列数为系统中物品的数量,没有评分数据的默认为零;然后依据用户评分矩阵计算相似度,目前比较主流的相似度计算方法有余弦相似度和Pearson相关系数。

余弦相似度:将某一用户的评分看作1个N维向量,用户之间的相似度是通过用户的评分向量间夹角的余弦来计算,夹角越小则相似度越高,余弦向量相似度计算公式如下:

其中,simuv表示用户u和用户v之间的相似度,分别表示用户u和用户v的评分向量,u和v分别表示两评分向量的模,rui和rvi分别表示用户u和用户v对项目i的评分。

利用Pearson相关系数计算两个评分向量之间的相关系数,公式如下:

其中,rui和rvi分别表示用户u和用户v对项目i的评分,分别表示用户u和用户v的平均评分,IUV表示两个用户共同评分的项目集。

如果上述相似度计算公式中的用户评分向量改为物品向量,即由用户评分矩阵中的行向量变成用户评分矩阵中的列向量,该公式就变成计算两项目的相似度。

在得到用户的相似度后,筛选出与活动用户相似度最大的k个用户,再根据这k个用户的评分计算活动用户的预测评分,计算公式如下:

其中,表示活动用户u对项目i的预测评分,N为活动用户的相似近邻集合,k为N中近邻个数,rvi表示近邻用户v对项目i的评分。

为得到更好的推荐效果,可以使用求加权平均的方法,公式如下:

其中,i,rvi和N的意义与式(3)相同,分别表示当前活动用户u与近邻用户v的平均评分,simuv表示当前活动用户u与近邻用户v之间的相似度。可以看出,近邻用户与活动用户的相似度越大,则该近邻用户对活动用户的预测评分影响也就越大。

1.2 算法优缺点

协同过滤技术是目前最成功的推荐技术,尽管这种技术在商业上取得了巨大成功,但该技术依然有一些关键技术点有待改进。相对于其它各种推荐技术,协同过滤的最大优点在于这种技术不需要被推荐对象具备专业领域知识,不需要分析被推荐对象的特征属性,因为协同过滤推荐完全依赖于用户对项目的评分数据,与被推荐对象的具体特征无关,从而使得这种技术可以运用于各种领域的推荐,使用范围较广。

尽管协同过滤有各种优点,但这种算法本身也存在一些不足,主要是数据稀疏性问题和冷启动问题[4]。在一个大的系统中,如购物网站中,存在的项目或者物品数量数以百万计,而一个用户可能评价的项目只占其中非常小的一部分,这就造成了评分矩阵的稀疏性,事实上在大型商用推荐系统中,评分矩阵的密度很少有超过1%的[4]。根据协同过滤算法的原理,用户或项目的相似度是根据两个用户评分向量中的共同项来计算的,在评分矩阵过于稀疏的情况下,可能没有足够的共同项来计算相似度,从而影响推荐精度[5]。

除了数据稀疏性问题,协同过滤算法面临的另一个挑战是冷启动问题,冷启动问题可以看成是稀疏性问题的极端情况。当一个新项目加入系统时没有评价数据,则该项目不可能被推荐,推荐系统也就失去作用。

2 改进的协同过滤算法

随着推荐系统规模越来越大,传统推荐算法中的问题也越来越突出。当前的推荐系统有成千上万的物品和用户,由此建立的用户评分矩阵将非常大,计算相似度的过程将非常耗时。同时,系统中物品众多,而一个用户打分的物品可能只有很少几项,这将导致评分矩阵中出现大量的未评分项,从而导致评分矩阵的稀疏性。为改善这些问题,可以使用聚类算法对原始数据进行聚类,划分出不同的聚类簇,这样推荐算法可以在聚类簇中快速找到邻居集合,从而提高算法效率。

2.1 聚类算法

根据上述原理对原始数据进行聚类,将相似项目划分到同一个簇中,此后计算相似度和寻找邻居项目时都使用经过聚类后的聚类簇作为数据源。聚类算法可以选用经典的K-means算法,算法过程如下:

输入:原始项目数据和聚类个数K。

输出:K个聚类。

(1)从原始项目集合中随机选择K个对象作为初始聚类中心点;(2)计算每个对象到各中心点的距离,并根据最小距离划分类别;(3)重新计算每个聚类类别的中心点;(4)重复(2)和(3)直到不再变化。

经过上述步骤后,原始项目数据集将被划分到几个不同的聚类簇中,每个聚类簇就是一个子评分矩阵,此后查找活动项目的相似邻居就在目标项目所在的子矩阵中进行。由于一个推荐系统的项目相对固定,变化不大,因此可以事先离线计算,对系统的实时性并无影响。

2.2 协同过滤推荐

考虑到系统中项目数量较大,聚类之后每个子矩阵中的数据可能依然比较稀疏,因此可以使用基于项目的协同过滤对这些需要使用的子矩阵进行一定程度的填充,以降低子矩阵的稀疏度。算法过程如下:(1)计算子矩阵中的每个项目与其它项目的相似度,并取其中相似度最大的N个作为最近邻;(2)根据邻居的评价信息,利用预测值公式来计算未评价项的预测值,并将值填入子矩阵。

经过以上步骤得到新的、稀疏度降低后的子矩阵,然后使用基于用户的协同过滤算法在该矩阵上进行推荐。

3 实验结果

3.1 数据集与评价标准

实验采用MovieLens数据集,在实验中使用u1.base训练数据集来实现用户对未评分的电影进行分值预测,将预测的评分与u1.test测试数据集中的分值进行比较。本文采用平均绝对误差(MAE)作为衡量推荐质量的标准,MAE是通过用户的预测评分与实际评分之间的差值来判断预测的精确度,差值越小,则预测精度越高。若预测用户对项目的评分集合为{r1,r2,…,ri,…,rn},而实际的测试数据集中用户对项目的评分集合为{t1,t2,…,ti,…,tn},则MAE可定义如下:

3.2 实验结果

本文通过两个实验来检测和比较上文中提出的改进型协同过滤算法(Proposed)的推荐精度和传统推荐算法的性能差异。第1个实验是验证在相同的数据集上选择不同的邻居数时3种推荐算法推荐精度的差异,结果如图1所示;第2个实验中对数据集进行不同程度的填充以得到新的不同稀疏度的数据集,并验证3种推荐算法在不同稀疏度下数据集上的性能稳定性。

从实验数据可以发现,协同过滤算法在一定范围内选择的邻居数越多,推荐的精度相对越高。由实验结果可知,本文提出的改进型协同过滤算法的推荐误差均要小于两种传统的协同过滤算法,算法精度有一定程度的提高。

从实验数据可以看到,随着数据集中填充数据的增多,推荐的误差有一定减少,算法精度有一定程度的改善。但是这种规律只局限在一定的范围内,当填充的数据过多,数据集的稀疏度低于某一特定值时,算法的误差反而增大。

4 结语

本文介绍了协同过滤算法的基本原理,分析了传统协同过滤算法中存在的数据稀疏性问题,提出了一种改进的协同过滤算法思路,一定程度上改善了协同过滤算法中的数据稀疏性问题,提高了推荐结果的可靠性和稳定性。但试验中也发现了一些问题,有待今后进一步研究。

摘要:协同过滤算法自提出以来便得到了广泛运用,但协同过滤算法本身具有的数据稀疏性及冷启动问题也制约了算法的性能。通过分析协同过滤算法的原理和不足,提出了一种改进协同过滤算法的思路,并在MovieLens数据集上进行了验证,一定程度上提高了算法性能。

关键词:推荐系统,协同过滤,数据稀疏性

参考文献

[1]GOLDBERG D,NICHOLS D,OKI B M,et al.Using collaborative filtering to weave an information tapestry[J].Communications of the ACM,1992,35(12):61-70.

[2]GOLDBERG K,ROEDER T,GUPTA D,et al.Eigentaste:a constant time collaborative filtering algorithm[J].Information Retrieval,2001,4(2):133-151.

[3]余明哲.图书馆个人化馆藏推荐系统[D].台湾:台湾“国立交通大学”,2003

[4]孔维梁.协同过滤推荐系统关键问题研究[D].武汉:华中师范大学,2013.

[5]赵亮,胡乃静.个性化推荐算法设计[J].计算机研究与发展,2002,39(8):986-991.

[6]何安.协同过滤技术在电子商务推荐系统中的应用研究[D].杭州:浙江大学,2007.

[7]王永固,邱飞岳,赵建龙,等.基于协同过滤技术的学习资源个性化推荐研究[J].远程教育杂志,2011(3):66-71.

【协同过滤推荐算法综述】推荐阅读:

协同进化算法10-05

多算法协同定位09-30

过滤07-06

真空过滤10-17

评价过滤10-19

陶瓷过滤07-07

过滤策略07-11

安全过滤07-27

文化过滤08-10

过滤系统08-21

上一篇:财务风险石油工程下一篇:计划制订