协同过滤推荐算法_协同过滤推荐算法

ec6fde8fd981dce150c777a3fe58b844.png

摘要:随着互联网技术和应用的飞速发展,推荐系统在电子商务、电影和视频、音乐、社交网络、阅读、基于位置的服务、个性化邮件和广告等领域得到了广泛利用。在大数据时代,网络用户很难从海量信息当中找到自己需求的信息,推荐系统可以很好地解决信息过载问题,帮助用户快速发现有用信息以及提供个性化服务。

论文首先介绍了推荐系统,并说明当前比较成熟且常用的个性化推荐技术。这些技术通常被分为三类:协同过滤(CF)、基于内容的过滤(CBF)以及混合推荐方法。CF是通过用户偏好的进行信息过滤,即用用户已知的历史数据或者其他用户已知的历史数据为该用户预测喜爱的物品。

论文的重点是协同过滤,它的类型和所面临的挑战,例如冷启动问题、数据稀疏、可扩展性等

关键词:推荐系统;协同过滤;冷启动问题;数据稀疏;可扩展性


1. 引言

随着信息技术的和互联网的发展,人们逐渐从信息匮乏的时代走入了信息过载的时代。在这个时代,我们每天都要面对各式各样的选择,通常会以周围朋友或家人的意见而做出选择。然而,面对海量的网络资源和商品信息,用户要从中做出最适合的选择不是一件容易的事情。因为他们可能没有足够的知识和时间对这些可供选择的商品进行一一评价。电子商务网站是推荐系统的一大应用领域,其作为目前典型的成功互联网应用,提供了更丰富的物品。为帮助大家更快速准确地定位自己的需求,例如著名的亚马逊、淘宝等平台。

目前推荐系统主要分为三类:

(1) 基于内容的推荐:它的核心思想是根据推荐物品或内容的元数据,发现物品或者内容的相关性,然后基于用户以往的喜好记录,推荐给用户相似的物品。

(2) 协同过滤:它根据用户对物品或者信息的偏好,发现物品或者内容本身的相关性,或者是发现用户的相关性,然后再基于这些关联性进行推荐。

(3) 混合推荐:该技术采用一些策略(如加权、切换、特征放大等整合多种推荐技术,比如基于内容的推荐系统,基于人口统计学的推荐系统,基于效用的推荐系统和基于基础知识的推荐系统。

本文首先介绍协同过滤推荐算法,其次指出协同过滤算法存在的挑战和解决方案,再者对未来工作进行展望,最后进行了总结。

2. 协同过滤推荐技术

协同过滤推荐技术之所以得到广泛的应用,主要得益于它对推荐对象没有特殊的要求,能处理非结构化的复杂对象,如音乐、电影。基于协同过滤的推荐系统是从用户的角度来进行相应推荐的,而且是自动的,即用户获得的推荐是系统从购买模式或浏览行为等隐式获得的,不需要用户努力地找到适合自己兴趣的推荐信息,如填写一些调查表格等。协同过滤可以发现用户潜在的但自己尚未发现的兴趣偏好。这些优点使得它几乎适用于所有领域。

2.1 当前的协同过滤推荐算法

当前最常用的协同过滤推荐算法是基于用户的协同过滤和基于项目的协同过滤算法。

2.1.1 基于用户的协同过滤

基于用户的协同过滤,根据所有用户对物品或者信息的偏好,发现与当前用户口味和偏好相似的“邻居”用户群,在一般的应用中是采用计算“K-邻居”的算法。然后,基于这K个邻居的历史偏好信息,为当前用户进行推荐。下图给出了原理图。

0a65b3911ed2e250dce7100419615b52.png
图1 基于用户的协同过滤推荐机制的基本原理

图2-1示意出基于用户的协同过滤推荐机制的基本原理,假设用户A喜欢物品A,物品C,用户B喜欢物品B,用户C喜欢物品 A ,物品C和物品D;从这些用户的历史喜好信息中,我们可以发现用户A和用户C的口味和偏好是比较类似的,同时用户C还喜欢物品D,那么我们可以推断用户A可能也喜欢物品D,因此可以将物品D推荐给用户A。

  1. 基础算法

在一个在线个性化推荐系统中,当一个用户A需要个性化推荐时,可以先找到和他有相似兴趣的其他用户,然后把那些用户喜欢的、而用户A没有听说过的物品推荐给用户A。这就是基于用户的协同过滤算法。

基于用户的协同过滤算法主要包括两个步骤。

(1)找到和目标用户兴趣相似的用户集合。

(2)找到这个集合中的用户喜欢的,且目标用户没有听说过的物品推荐给目标用户。

步骤(1)的关键就是计算两个用户的兴趣相似度。在此,协同过滤算法主要利用行为的相似度计算用户兴趣的相似度。假定用户u和用户v,令N(u)表示u曾经有过的正反馈的物品集合,令N(v)表示v曾经有过的正反馈的物品集合。那么,我们可以通过如下的Jaccard公式简单计算u和v的兴趣相似度:

16aaff645799be7c0dbf43f1bf913579.png

或者通过余弦相似度计算:

60c983a791f1dfdaae423baec3056eaf.png

在得到用户之间的兴趣相似度后,UserCF算法会给用户推荐和他兴趣最相似的K个用户喜欢的物品。如下公式度量了UserCF算法中用户u对用户i的感兴趣程度:

4dab488e783d7af4507e0519690dbb50.png

其中,S(u,K)包含和用户u兴趣最接近的K个用户,N(i)是对物品i有过行为的用户集合,

是用户u和用户v的兴趣相似度,
代表用户v对物品i的兴趣,因为使用的是单一行为的隐反馈数据,所以
  1. 用户相似度计算的改进

如果两个用户对热门物品采取过同样的行为,可能不足以说明他们的兴趣的相似度,比如我们都用过《新华字典》。两个用户对冷门物品采取过同样的行为更能说明他们兴趣的相似度,比如两个用户都购买过《数据挖掘概念与技术》,因为只有研究数据挖掘的人才会购买这本书。因此, John S.Breese提出了如下公式,根据用户行为计算用户的兴趣相似度:

d6da2c6bd2d9bf627fd07bb2c86b8592.png

可以看到,该公式通过

惩罚了用户u和用户v共同兴趣列表中热门物品对他们相似度的影响。

2.1.2 基于项目的协同过滤

基于项目的协同过滤,它使用所有用户对物品或者信息的偏好,发现物品和物品之间的相似度,然后根据用户的历史偏好信息,将类似的物品推荐给用户。

e1093dbe4edca3ce0aaea51cfd829722.png
图2 基于项目的协同过滤推荐机制的基本原理

假设用户A喜欢物品A和物品C,用户B喜欢物品A,物品B和物品C,用户 C喜欢物品A,从这些用户的历史喜好可以分析出物品A和物品C时比较类似的,喜欢物品A的人都喜欢物品C,基于这个数据可以推断用户C很有可能也喜欢物品 C,所以系统会将物品C推荐给用户C。

  1. 基础算法

基于物品的协同过滤算法给用户推荐那些和他们之前喜欢的物品相似的物品。ItemCF算法并不利用物品的内容属性计算物品之间的相似度,它主要通过分析用户的行为记录计算物品之间的相似度。该算法认为,物品A和物品B具有很大的相似性是因为喜欢物品A的用户大都也喜欢物品B。

基于物品的协同过滤算法主要分为两个步骤:

(1)计算物品之间的相似度。

(2)根据物品的相似度和用户的历史行为给用户生成推荐列表。

我们使用下面的公式定义物品的相似度:

9a8ce8ab438d916b9b53ee626acb6cc6.png

其中,|N(i)|是喜欢物品i的用户数,|N(j)|是喜欢物品j的用户数,|N(i)∩N(j)|是同时喜欢物品i和物品j的用户数。从上面的定义看出,在协同过滤中两个物品产生相似度是因为它们共同被很多用户喜欢,两个物品相似度越高,说明这两个物品共同被很多人喜欢。

为了避免推荐出热门的物品,可以使用下面的公式:

8d3ae2843a5e1a0ebd912574edf2d489.png

这个公式惩罚了物品j的权重,因此减轻了热门物品会和很多物品相似的可能性。

在得到物品之间的相似度后,ItemCF通过如下计算用户u对一个物品j的兴趣:

8857d9433170eb9698171cc053ea87b0.png

其中N(u)是用户喜欢的物品的集合,S(i,K)是和物品i最相似的K个物品集合,wji是物品j和i的相似度,rui是用户u对物品i的兴趣。该公式的含义是,和用户历史上感兴趣的物品越相似的物品,越有可能在用户的推荐列表中获得比较高的排名。

  1. 用户活跃度对物品相似度的影响

Jhon S.Breese提出了一个称为IUF,即用户活跃度对数的倒数的参数,他认为活跃用户对物品的相似度的贡献小于不活跃的用户,因此提出应该增加IUF参数来修正物品相似度的计算公式:

7826b81ed9e9d089ee5523056030e9a3.png

2.2 UserCF和ItemCF的比较

基于内容的协同过滤推荐和基于项目的协同过滤推荐实际上都是基于物品相似度预测推荐,只是相似度计算的方法不一样,前者是从用户历史的偏好推断,而后者是基于物品本身的属性特征信息。

3cbcaf548147ef32b4bb9f3e62bf4a9a.png
知乎无表格,就截图了哈

3. 特点和挑战

3.1 冷启动问题

推荐系统需要根据用户的历史行为和兴趣预测用户未来的行为和兴趣,对于BAT这类大公司来说,它们已经积累了大量的用户数据。但是对于很多做纯粹推荐系统的网站或者很多在开始阶段就希望有个性化推荐应用的网站来说,如何在对用户一无所知(即没有用户行为数据)的情况下进行最有效的推荐呢?这就衍生了冷启动问题。

冷启动问题主要分为三类:
(1)用户冷启动:即如何给新用户做个性化推荐。
(2)系统冷启动:即如何将新的物品推荐给可能对它感兴趣的用户。

物品冷启动:即如何在一个新开发的网站(没有用户,没有用户行为,只有部分物品信息)上设计个性化推荐系统,从而在网站刚发布时就让用户体会到个性化推荐。

3.2 数据稀疏

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

能给出很好的推荐。

3.3 可扩展性

随着推荐系统规模越来越大,用户和项目(如视频、图书、商品等数目)动辄上千万上亿,两个用户之间选择物品重叠的可能性越来越少。例如千万级的用户(M)和百万级的项目(N),协同过滤算法的复杂度为0(n)已经很大了,然而,很多系统需要根据用户在线需求立即做出推荐,而不管他们的购买记录和历史评分,这就需要一个具有很高扩展性的协同过滤系统。


4. 评测指标

4.1 准确率

准确率指推荐结果中用户将来真正感兴趣且有意愿的推荐列表数占推荐总数的比例,反映了推荐的准确性。

推荐结果的准确率定义为:

8961679e42d5533ce2ebb8070824854d.png

R(u)是根据用户在训练集上的行为给用户作出的推荐列表,T(u)是用户在测试集上的行为列表。

4.2 召回率

召回率指推荐结果中用户真正感兴趣且有意愿的推荐列表数占用户将来浏览总量的比例,反映了推荐的全面性。

推荐结果的召回率率定义为:

43a18be6907f6b3f7ace87ab060ba1cd.png

4.3 覆盖率

覆盖率描述一个推荐系统对物品长尾的发掘能力,推荐出来的物品占总物品集合的比例。假设系统的用户集合为U,物品列表为I,推荐系统给每个用户推荐一个长度为N的物品列表R(u)。那么推荐系统的覆盖率可以通过下面公式计算:

cae0bbef5657f8ba15714470d0ee9682.png

Coverage就是推荐的物品集合占总物品的比例。覆盖率为100%的系统可以有无数的物品流行度分布。为了更细致地描述推荐系统发掘长尾的能力,需要统计推荐列表中不同物品出现次数的分布。如果所有的物品都出现在推荐列表中,且出现的次数差不多,那么推荐系统发掘长尾的能力就很好。因此,可以通过研究物品在推荐列表中出现次数的分布描述推荐系统挖掘长尾的能力。


5. 总结和展望

在大数据时代下,人们获取信息的方式越来越多,数以亿计的信息和数据反而使用户很难获得对自己有用的信息,在此背景下,个性化推荐技术应运而生。协同过滤与传统的基于内容过滤直接分析内容进行推荐不同,协同过滤分析用户兴趣,在用户群中找到指定用户的相似(兴趣)用户,综合这些相似用户对某一信息的评价,形成系统对该指定用户对此信息的喜好程度预测,因为其能够处理复杂结构的数据,良好推荐效果,成为个性化推荐中广泛使用的技术。在这篇文章中,介绍了协同过滤的两大推荐技术和它的主要挑战,讨论了推荐系统的评测指标。各种各样的研究结果表明,虽然它在数据稀疏性、可扩展性和冷启动方面仍存在着问题.但是协同过滤仍是推荐系统中应用最广泛的技术之一。


注:本文作者原创,版权所有,转载须获得授权,谢谢!

  • 4
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值