推荐系统实践-利用上下文信息(5)

5.1 时间上下文信息

在进行推荐时,我们还需要考虑到用户所处的时间,季节,地点,心情等上下文信息来进行推荐(比如我们不能在冬天给用户推荐T恤等)。

5.1.1 时间效应

1.用户的兴趣是变化的:随着年龄增长,喜欢的电视剧可能会从动画片变为文艺片;喜欢的书籍也会随着自己知识的增加从入门书籍变为专业书籍等

2.物品具有生命周期,电影刚上线的时候可能被很多人关注,但是过一段时间,热度可能就降下去了

3.季节效应:反映时间本身对用户的影响,夏天吃冰淇淋,冬天吃火锅,夏天穿T恤,冬天穿棉袄等。

5.1.2 系统时间特性的分析

给定时间信息后,推荐系统由一个静态系统变为时变的系统,用三元组(u,i,t)表示用户u在时刻t对物品i产生了行为。通过以下信息研究系统的时间特性:

1.数据集每天独立用户数的增长情况
2.系统的物品变化情况
3.用户访问情况

5.1.3 推荐系统的实时性

用户兴趣是不断变化的,其变化体现在用户不断增加的新行为中。一个实时的推荐系统需要能够实时响应用户新的行为,让推荐列表不断变化,从而满足用户不断变化的兴趣。
要求在每个用户访问推荐系统时,都根据用户这个时间点前的行为实时计算推荐列表,推荐算法需要平衡考虑用户的近期行为和长期行为,即要让推荐列表反应出用户近期行为所体现的兴趣变化,又不能让推荐列表完全受用户近期行为的影响,要保证推荐列表对用户兴趣预测的延续性

5.1.4 推荐算法的时间多样性

推荐系统每天推荐结果的变化程度被定义为推荐系统的时间多样性,提高时间多样性需要分两步解决:首先需要保证推荐系统能够在用户有新行为后及时调整推荐结果,其次用户没有新行为时也需要经常变化一下。

5.1.5 时间上下文推荐算法

1.最近最热门

最简单的非个性化推荐算法就是给用户推荐最近最热门的物品,给定时间T,物品i最近的流行度n_{i}(T)定义如下:

n_{i}(T)=\sum_{(u,i,t)\in Train,t<T}\frac{1}{1+\alpha(T-t)}

其中α是时间衰减参数。

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

回顾ItemCF算法主要由两个步骤组成:1.利用用户行为离线计算物品之间的相似度;2.根据用户的历史行为和物品相似度,给用户做在线个性化推荐。加入时间信息考虑两者均有一些变化:

物品相似度:用户在相隔很短时间内喜欢的物品具有更高的相似度,即今天和昨天看的电影比今天和一年前看的电影有更高的相似度

在线推荐:加重用户近期行为的权重,优先推荐和用户近期喜欢物品相似的物品

加入时间信息后,对ItemCF算法进行改进,计算物品相似度公式如下:

sim(i,j)=\frac{\sum_{u\in N(i)\cap N(j)}f(|t_{ui}-t_{uj}|)}{\sqrt{|N(i)||N(j)|}}

和普通的ItemCF相比,在分子中引入了和时间有关的衰减项f(|t_{ui}-t_{uj}|),其中t_{ui}是用户u对物品i产生行为的时间,f函数的含义是用户u对物品i产生行为的时间和对物品j产生行为的时间距离越远,f越小,即衰减函数,f可以取如下公式:

f(|t_{ui}-t_{uj}|)=\frac{1}{1+\alpha|t_{ui}-t_{uj}|}

α是时间衰减参数,在不同情况下取值不同,若用户兴趣变化很快,α应取值大一点,反之则应该小一点。

时间信息不仅对相似度矩阵有影响,对预测公式也有影响,用户的行为应该和用户最近的行为关系更大,因此,我们可以通过如下公式修正预测公式:

p(u,i)=\sum_{j\in N(u)\cap S(i,k)}sim(i,j)\frac{1}{1+\beta|t_{0}-t_{uj}|}

 其中t_{0}为当前时刻。

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

回顾UserCF算法的基本思想:给用户推荐和他兴趣相似的其他用户喜欢的物品,可以从以下两个方面利用时间信息改进UserCF算法:

1.用户兴趣相似度:若两个用户同时喜欢相同的物品,应该有更大的兴趣相似度

2.相似用户的最近行为:应该给用户推荐相似用户最近的行为,而不是很久以前的行为

用户相似度计算公式可以改为:

w_{uv}=\frac{\sum_{i\in N(u)\cap N(v)}\frac{1}{1+\alpha|t_{ui}-t_{vi}|}}{\sqrt{|N(i)|\cup |N(j)|}}

 相比于原来公式,在分子部分添加了一个衰减函数,u和v对i产生行为时间相隔越久则兴趣相似度越小。

推荐部分同样加入时间信息考虑,公式改为:

p(u,i)=\sum_{v\in S(u,k)}w_{uv}r_{vi}\frac{1}{1+\alpha(t_0-t_{vi})}

5.1.6 时间段图模型

时间段图模型是将时间信息建模到图模型中,G(U,S_{U},I,S_{I},E,w,\sigma)也是一个二分图,其中U是用户集合,S_{U}是用户时间段节点集合,I是物品节点集合,S_{I}是物品时间段集合,E是边集合,w为边的权重,σ为顶点的权重,若用户A在时刻2对物品b产生了行为,则会在图中增加三条边,首先创建四个顶点:用户顶点A,用户时间段顶点A:2,物品顶点b,物品时间段顶点b:2。然后在图中增加3条边,(A,b)、(A:2,b)、(A,b:2)。

相关性较高的顶点一般有如下特征:

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

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

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

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

假设P=\{v_1,v_2,\ldots,v_n\}是连接顶点v_1v_n的一条路径,这条路径的权重取决于经过的所有顶点和边:

T(P)=\sigma(v_n)\prod _{i=1}^{n-1}\frac{\sigma(v_i)w(v_i,v_{i+1})}{|out(v_i)|^{\rho}}

其中out(v)是顶点v指向顶点的集合,|out(v)|是顶点v的出度,\sigma(v_i)\in (0,1]定义了顶点的权重,w(v_i,v_{i+1})\in (0,1]定义了边的权重,因此\frac{\sigma(v_i)w(v_i,v_{i+1})}{|out(v_i)|^{\rho}}\in (0,1),所以n越大,T(P)就会越小,且考虑了路径中顶点的出度,符合后两条。

对于顶点v和v^{'}P(v,v^{'},K)为两个顶点之间距离小于K的所有路径,那么顶点之间的相关度为:

d(v,v^{'})=\sum_{P \in P(v,v^{'},K)}T(P)

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

\sigma(v)=\begin{cases} 1-\alpha(v\in U)\\ \alpha(v\in S_{U})\\ 1-\beta(v\in I)\\ \beta(v\in S_{I}) \end{cases}

其中α和β为两个参数,来控制权重。

5.2 地点上下文信息

地点也是一个重要的上下文信息,例如推荐外卖时需要看用户所在的地方。在外寻找美食时,距离也是一个重要的考虑因素,

基于位置的推荐算法

LARS(Location Aware Recommender System,位置感知推荐系统)。首先将物品分为两类,一类是有空间属性的,比如餐馆、商店、旅游景点等,另一类是没有空间属性的比如电影、图书等。用户也分为两类。数据集分为3类:

1.(用户,用户位置,物品,评分)代表用户在某个地点给物品的评分

2.(用户,物品,物品位置,评分)代表用户对某个地点物品的评分

3.(用户,用户位置,物品,物品位置,评分)代表某个位置的用户对某个地点物品的评分

用户兴趣和地点具有两种特征:

1.兴趣本地化:不同国家和地区用户的兴趣存在一定差异

2.活动本地化:一个用户往往在附近的地区活动

对于第一种数据集,即(用户,用户位置,物品,评分)提出LARS-U:将地区按照树状结构建模,然后从根节点出发,到叶子节点的过程中,利用每个节点上的数据都生成一个推荐列表,最终结果是推荐列表的加权。假设有一个南京的用户,就从根节点到南京节点经过四个节点,生成四个推荐结果,最后加权得到最终结果:

 对于第二种数据集,即(用户,物品,物品位置,评分),首先忽略位置信息,利用ItemCF算法计算出用户u对物品i的兴趣P(u,i),但是最终物品i在用户u的推荐列表中的权重为:

RecScore(u,i)=P(u,i)-TravelPenalty(u,i)

其中Travelpenalty表示物品i的位置对用户u的代价,其值为对于物品i与用户u之前评分的所有物品的位置计算距离的平均值,度量距离使用的是实际的距离,为了简化算法降低复杂度,物品i取自与用户评价过的物品距离小于阈值d的所有其他物品。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值