《推荐系统实践》__第2章__利用用户行为数据

目录

2.1 用户行为数据简介

2.2 用户行为分析

2.2.1 用户活跃度和物品流行度的分布

2.2.2 用户活跃度和物品流行度的关系

2.3 实验设计和算法评测

2.3.1 数据集

2.3.2 实验设计

2.3.3 评测指标

2.4 基于邻域的算法

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

2.4.2 基于物品的协同过滤算法

2.4.3 UserCF与ItemCF的比较

2.5 隐语义模型

2.5.1 基础算法

2.5.2 基于LFM的实际系统的例子

2.5.3 LFM和基于领域的方法的比较

2.6 基于图的模型

2.6.1 用户行为数据的二分图表示

2.6.2 基于图的推荐算法



我们需要通过算法自动发掘用户行为数据,从用 户的行为中推测出用户的兴趣,从而给用户推荐满足他们兴趣的物品。


2.1 用户行为数据简介

如搜索引擎中:

服务会为每次查询生成一个展示日志(impression log),其中记录了查询和返回结果。如果用户点击了某个结果,这个点击信息会被服务器截获并存储在点击日志(click log)中。 一个并行程序会周期性地归并展示日志和点击日志,得到的会话日志中每个消息是一个用户提交 的查询、得到的结果以及点击。

会话日志通常存储在分布式数据仓库中,如支持离线分析的 Hadoop Hive和 支持在线分析的Google Dremel。

用户行为:显性反馈和隐性反馈。

2.2 用户行为分析

2.2.1 用户活跃度和物品流行度的分布

都是长尾分布。也就是说非常活跃的用户/非常流行的物品,都只是小部分。不活跃的用户/不流行的物品,还很多。

“8/2”原则:80%的结果取决于20%的原因。如80%的流行度取决于20%的物品。

2.2.2 用户活跃度和物品流行度的关系

用户越活跃,越倾向冷门的物品。

仅仅基于用户行为数据设计的推荐算法一般称为协同过滤算法。最著名的、在业界得到最广泛应用的算法是基于邻域的方法,基于领域方法的主要有两种算法:

  • 基于用户的协同过滤算法(userCF): 给用户推荐和他兴趣相似的其他用户喜欢的物品
  • 基于物品的协同过滤算法(itemCF): 给用户推荐和他之前喜欢的物品相似的物品

2.3 实验设计和算法评测

评测推荐系统有3种方法:离线实验、在线实验和用户调查。

本节采用离线实验。

2.3.1 数据集

中等大小的MovieLens数据集:6000多用户对4000多部电影的100万条 评分。该数据集是一个评分数据集,用户可以给电影评5个不同等级的分数(1~5分)

本节着重研究隐反馈数据集中的TopN推荐问题,TopN推荐的任务是预测用户会不会对某部电影评分,而不是给电影评多少分。

2.3.2 实验设计

协同过滤算法的离线实验一般如下设计。

首先,将用户行为数据集按照均匀分布随机分成M 份(本章取M=8),挑选一份作为测试集,将剩下的M-1份作为训练集。

然后,在训练集上建立用户兴趣模型,并在测试集上对用户行为进行预测,统计出相应的评测指标。

为了保证评测指标并不是过拟合的结果,需要进行M次实验,并且每次都使用不同的测试集。然后将M次实验测出的评 测指标的平均值作为最终的评测指标。

2.3.3 评测指标

正确率即检索出来的有多少是正确的;召回率即所有正确的有多少被检索出来了。F值即正确率和召回率的调和平均值。

  • 正确率:提取的正确数目 / 提取的总数目;
  • 召回率:提取的正确数目 / 样本中总数目;
  • F值:正确率 * 召回率 * 2 / (正确率 + 召回率);

2.4 基于邻域的算法

基于邻域的算法是推荐系统中最基本的算法。分为两类:userCF和itemCF。

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

1. 基础算法

userCF的两个步骤:

  • 用户相似度:找到和目标用户兴趣相似的用户集合
  • 找到这个集合中的用户喜欢的,且目标用户没有听说过的物品推荐给目标用户

用户相似度计算:N_{u}表示用户u曾经有过正反馈的物品集合;N_{v}表示用户v曾经有过正反馈的物品集合。

Jaccard公式:W_u_v = \frac{N_u \bigcap N_v}{N_u \bigcup N_v},或者余弦相似度W_u_v = \frac{N_u \bigcap N_v}{\sqrt{N_u * N_v}}

如果有n个用户,那么两两用户都要计算,时间复杂度是O(n^{2}),当用户量大时,非常耗时。

我们可以先把没有交集的用户排除掉,即找出N_i \cap N_j \neq 0的所有用户对(i, j),只对这部分用户做相似度计算。

得到用户之间的兴趣相似度后,UserCF算法会给用户推荐和他兴趣最相似的K个用户喜欢的物品。用户A没有对物品c、e有过行为,那么根据userCF,看下用户A对c和e的兴趣:

比如我们可以设置一个兴趣度阈值0.6,p(A,c) >0.6, p(A,e) > 0.6,故给用户A推荐c和e。

注:有一个重要参数K,即选K个与他兴趣相似的用户。K的选定会影响性能(准确率、召回率等)。

2. 用户相似度计算的改进

如果两个人都买了《新华字典》,那么不能说明他们兴趣相似。如果两个人都买了《推荐系统实践》,那么可以认为他们兴趣相似。也就是说,两个用户对冷门物品采取过同样的行为更能说明他们兴趣的相似度。

改进的余弦公式:

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

3. 举例

略。

2.4.2 基于物品的协同过滤算法

最基础、应该最多的推荐算法。

1. 基础算法

ItemCF算法并不利用物品的内容属性计算物品之间的相似度,它主要通过分析用户的行为记录计算物品之间的 相似度。

该算法认为,物品A和物品B具有很大的相似度是因为喜欢物品A的用户大都也喜欢物品B。

例如:喜欢《推荐系统实践》的用户,大都也喜欢《推荐系统》,所以这两本书有很大的相似度。

ItemCF算法分为两步:

  • 计算物品之间的相似度
  • 根据物品的相似度和用户的历史行为给用户生成推荐列表

物品相似度可以理解为:喜欢物品i的用户中有多少比例的用户也是喜欢物品j

其中,分母表示喜欢物品i的用户数,分子表示同时喜欢物品i和物品j的用户数。

上述公式虽然看起来很有道理,但是却存在一个问题。如果物品j很热门,很多人都喜欢,那么Wij就会很大,接近1。因此,该公式会造成任何物品都会和热门的物品有很大的相似度,这对于致力于挖掘长尾信息的推荐系统来说显然不是一个好的特性。为了避免推荐出热门的物品, 可以用下面的公式:

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

那么,W_a_d = \frac{2}{ \sqrt{2*4}}

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

这里N(u)是用户喜欢的物品的集合,S(j,K)是和物品j最相似的K个物品的集合,wji是物品j和i 的相似度,rui是用户u对物品i的兴趣。(如果用户u对物品i有过行为,如观看过,即可令 rui=1)

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

活跃用户(如书店批发老板)对物品相似度的贡献应该小于不活跃的用户,IUF修正物品相似度:

这个公式只是对活跃用户做了软性的惩罚,对于过于活跃用户(如买了当当网80%图书的书店老板),应该直接忽略他的兴趣列表。

3. 物品相似度的归一化

假设物品分为两类——A和B,A类物品之间的相似 度为0.5,B类物品之间的相似度为0.6,而A类物品和B类物品之间的相似度是0.2。在这种情况下, 如果一个用户喜欢了5个A类物品和5个B类物品,用ItemCF给他进行推荐,推荐的就都是B类物品, 因为B类物品之间的相似度大。

但如果归一化之后,A类物品之间的相似度变成了1,B类物品之 间的相似度也是1,那么这种情况下,用户如果喜欢5个A类物品和5个B类物品,那么他的推荐列 表中A类物品和B类物品的数目也应该是大致相等的。从这个例子可以看出,相似度的归一化可 以提高推荐的多样性。

2.4.3 UserCF与ItemCF的比较

UserCF比ItemCF古老,UserCF的代表实践者是Digg,ItemCF的代表实践者是亚马逊。

UserCF的推荐结果着重于反映和用户兴趣相似的小群体的热点,而ItemCF 的推荐结果着重于维系用户的历史兴趣。换句话说,UserCF的推荐更社会化,反映了用户所在的小型兴趣群体中物品的热门程度,而ItemCF的推荐更加个性化,反映了用户自己的兴趣传承。

一般来说,新闻类用UserCF,图书、电子商务和电影网站用ItemCF。

注:标准ItemCF算法的覆盖率和新颖度都不高。

2.5 隐语义模型

2.5.1 基础算法

核心思想:通过隐含特征 (latent factor)联系用户兴趣和物品。隐语义模型有很多,以LFM为主讲。

2.5.2 基于LFM的实际系统的例子

2.5.3 LFM和基于领域的方法的比较

2.6 基于图的模型

2.6.1 用户行为数据的二分图表示

2.6.2 基于图的推荐算法

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值