推荐系统读书笔记(五)利用上下文信息

时间:2022-12-07 15:09:30

  上下文包括用户访问推荐系统的时间、地点、心情等。

5.1 时间上下文信息

5.1.1 时间效应简介

  时间信息对用户兴趣的影响表现在以下几个方面:

  1.用户兴趣是变化:关注最近行为

  2.物品也是有生命周期的:

  3.季节效应

5.1.2 时间效应举例

5.1.3 系统时间特性的分析

  包含时间信息的用户行为数据集由一系列三元组构成,其中每个三元组(u,i,t)代表了用户u在时刻t对物品i产生过行为。在给定数据集后,可以通过统计如下信息研究系统的时间特性。

  (1).数据集每天独立用户数的增长情况:快递增长期、平稳期、衰落期。

  (2).系统的物品变化情况:

  (3).用户访问情况:统计用户的平均活跃天数,也可以统计相隔T天来系统的用户的重合度。

  1.数据集的选择:Delicious

  2.物品的生存周期和系统的时效性

  可以用如下指票度量网站中物品的生命周期:

  (1)物品平均在线天数:如果一个物品在某天被至少一个用户产生过行为,就定义该物品在这一天在线。因此,我们可以通过物品平均在线天数度量一类物品的生存周期。考虑到物品的平均在线天数和物品的流行度应该成正经,因此给定一个数据集,我们首先按物品按照流行度分成20份,然后计算每一类物品的平均在线天数。

  (2)相隔T天系统物品流行度向量的平均相似度:取系统中相邻T天的两天,分别计算这两天的物品流行度,从而得到两个流行度向量。然后计算这两个向量的余弦相似度,如果相似度大,说明系统的物品在相隔T天的时间内没有发生大的变化,从而说明系统的时效性不强,物品的平均在线时间较长。相反,如果相似度很小,说明系统中的物品在相隔T天的时间内发生了很大的变化,从而说明系统的时效性很强,物品的平均在线时间很短。

5.1.4 推荐系统的实时性

  一个实时的推荐系统需要能够实时响应用户新的行为,让推荐列表不断变化,从而满足用户不断变化的兴趣。

  实现推荐系统的实时性除了对用户行为的存取有实时性要求,还要求推荐算法本身具有实时性,而推荐算法本身的实时性意味着:

  1.实时推荐系统不能每天给所有用户离线计算推荐结果,然后在线展示昨天计算出来的结果

  2.推荐算法需要平衡考虑用户的近期行为和长期行为,既要让推荐列表反应出用户近期行为所体现的兴趣变化,又不能让推荐列表完全受用户近期行为的影响,要保证推荐列表对用户兴趣预测的延续性。

5.1.5 推荐算法的时间多样性

  时间多样性高的推荐系统中用户会经常看到不同的推荐结果。

  提高推荐结果的时间多样性需要分两步解决:首先,需要保证推荐系统能够在用户有了新的行为后及时调整推荐结果,使推荐结果满足用户最近的兴趣;其次,需要保证推荐系统在用户没有新的行为时也能够经常变化一下结果,具有一定的时间多样性。

  对于第一步,又可以分成两种情况进行分析。第一是从推荐系统的实时性角度分析。有些推荐系统会每天离线生成针对所有用户的推荐结果,然后在线直接将这些结果展示给用户。这种类型的系统显然无法做到在用户有了新行为后及时调整推荐结果。第二,即使是实时推荐系统,由于使用的算法不同,也具有不同的时间多样性。

  如果用户没有行为,如何保证给用户的推荐结果具有一定的时间多样性呢:

  1.在生成推荐结果时加入一定的随机性。比如从推荐列表前20个结果中随机挑选10个结果展示给用户,或者按照推荐物品的权重采样10个结果展示给用户。

  2.记录用户每天看到的推荐结果,然后在每天给用户进行推荐时,对他前几天看到过很多次的推荐结果进行适当地降权

  3.每天给用户使用不同的推荐算法。可以设计很多种推荐算法,在每天用户访问推荐系统时随机挑选一种算法给他进行推荐。

  注意:要先保证精度,在此基础上适当地考虑时间多样性。

5.1.6 时间上下文推荐算法

  1.最近最热门:没有信息的情况下先推荐历史上最热门的物品。在获得用户行为的时间信息后,最简单的非个性化推荐算法就是给用户推荐最近最热门的物品了。给定时间T,物品i最近的流行度ni(T)可以定义为:

  推荐系统读书笔记(五)利用上下文信息

  alpha是时间衰减参数

  2.时间上下文相关的ItemCF算法

  ItemCF由两个核心部分构成:

  (1)利用用户行为离线计算物品之间的相似度

  (2)根据用户的历史行为和物品相似度矩阵,给用户做在线个性化推荐

  时间信息在以上两个核心部分中都有重要的应用,这体现在两种时间效应上:

  (1)物品相似度:用户在相隔很短的时间内喜欢的物品具有更高相似度。

  (2)在线推荐:用户近期行为相比用户很久之前的行为,更能体现用户现在的兴趣。因此在预测用户现在的兴趣时,应该加重用户近期行为的权重,优先给用户推荐那些和他近期喜欢的物品相似的物品。

  回顾一下前面提到的基于物品的协同过滤算法,它通过如下公式计算物品的相似度:

  推荐系统读书笔记(五)利用上下文信息

  而在给用户u做推荐时,用户u对物品i的兴趣p(u,i)通过如下公式计算:

  推荐系统读书笔记(五)利用上下文信息

  在得到时间信息后,可以通过如下公式改进相似度计算:

  推荐系统读书笔记(五)利用上下文信息

  式中引入了和时间有关的衰减项f,其中tui是用户u对物品i产生行为的时间。f函数含义是,用户对物品i和物品j产生行为的时间越远,则f函数越小。数学衰减函数很多,本节使用如下衰减函数:

  推荐系统读书笔记(五)利用上下文信息

  alpha是时间衰减参数,它的取值在不同系统中不同。如果一个系统用户兴趣变化很快,就应该取比较大的alpha,反之需要取比较小的alpha。

    除了考虑时间信息对相关表的影响,我们也应该考虑时间信息对预测公式的影响。一般来说,用户现在的行为应该和用户最近的行为关系更大。因此,通过如下方式修正预测公式:

  推荐系统读书笔记(五)利用上下文信息

  t0是当前时间,tuj越靠近t0,和物品j相似的物品就会在用户u的推荐列表中获得越高的排名。beta是时间衰减参数,需要根据不同的数据集选择合适的值。

  3.时间上下文相关的UserCF算法

  UserCF:给用户推荐和他兴趣相似的其他用户喜欢的物品。

  可以从以下两方面利用时间信息改进UserCF算法

  (1)用户兴趣相似度:如果两个用户同时喜欢相同的物品,那么这两个用户应该有更大的兴趣相似度。

  (2)相似兴趣用户的最近行为:应该给用户推荐和他兴趣相似的用户最近喜欢的物品。

  UserCF通过如下公式计算用户u和用户v的兴趣相似度:

  推荐系统读书笔记(五)利用上下文信息

  可以用如下方式考虑时间信息:

  推荐系统读书笔记(五)利用上下文信息

  上面公式的分子对于用户u和用户v共同喜欢的物品i增加了一个时间衰减因子。用户u和用户v对物品i产生行为的时间越远,那么这两个用户的兴趣相似度就会越小。

  在得到用户相似度后,UserCF通过如下公式预测用户对物品的兴趣:

  推荐系统读书笔记(五)利用上下文信息

  其中,S(u,K)包含了和用户u兴趣最接近的K个用户。如果用户v对物品i产生过行为,那么rvi=1,否则rvi=0。

  如果考虑和用户u兴趣相似用户的最近兴趣,可以设计如下公式:

  推荐系统读书笔记(五)利用上下文信息

5.1.7 时间段图模型

  时间段图模型G(U,SU,I,SI,E,w,σ)也是一个二分图。U是用户节点集合,SU是用户时间段节点集合。一个用户时间段节点vut会和用户u在时刻t喜欢的物品通过边相连。I是物品节点集合,SI是物品时间段节点集合。一个物品时间段节点vit会和所有在时刻t喜欢物品i的用户通过边相连。E是边集合,它包含了3种边:(1)如果用户u对物品i有过行为,存在边(2)如果用户u在t时刻对物品i有行为,存在两条边。w(e)定义了边的权重,σ(e)定义了顶点的权重。

  定义完图的结果后,最简单的想法是可以利用前面提到的PersonalRank算法给用户进行个性化推荐。但时间复杂度越高,因此提出一种路径融合算法的方法,通过该算法来度量图上两个顶点的相关性。

  一般来说,图上两个相关性比较高的顶点一般具有如下特征:

  1.两个顶点之间有很多路径相连

  2.两个顶点之间的路径比较短

  3.两个顶点之间的路径不经过出度比较大的顶点

  因此,路径融合算法首先提取出两个顶点之间长度小于1个阈值的所有路径,然后根据每条路径经过的顶点给每条路径赋予一定的权重,最后将两个顶点之间所有路径的权重之和作为两个顶点的相关度。

  假设P={v1,v2...vn}是连接顶点v1和vn的一条路径,这条路径的权重Γ(P)取决于这路径经过的所有顶点和边:

  推荐系统读书笔记(五)利用上下文信息

  这里的out(v)是顶点v指向的顶点集合,|out(v)|就是出度,σ(vi)取值范围(0,1]定义了顶点的权重,w(vi,vi+1)取值范围(0,1]定义了边的权重。上面的定义符合上面3条原则的后两条。

  定义了一条路径的权重后,就可以定义顶点之间的相关度。对于顶点v和v',令p(v,v',K)为这两个顶点间距离小于K的所有路径,那么这两个顶点之间的相关度可以定义为:

  推荐系统读书笔记(五)利用上下文信息

  对于时间段图模型,所有边的权重都定义为1,而顶点的权重σ(v)定义如下:

  推荐系统读书笔记(五)利用上下文信息

  alpha和beta是两个参数,控制了不同顶点的权重。

5.1.8 离线实验

  1.实验设置:得到三元组后,可以通过如下方式生成训练集和测试集。对每一个用户,将物品按照该用户对物品的行为时间从早到晚排序,然后将用户最后一个产生行为的物品作为测试集,并将这之前的用户对物品的行为记录作为训练集。推荐算法将根据训练集学习用户兴趣模型,给每个用户推荐N个物品,并且利用准确率和召回率评测推荐算法的精度。本节将选择不同的N进行10次实验,并画出最终的准确率和召回率曲线,通过该曲线来比较不同算法的性能。

    推荐系统读书笔记(五)利用上下文信息

    推荐系统读书笔记(五)利用上下文信息

5.2 地点上下文信息(未完成)