利用上下文信息
5.1 时间上下文信息
5.1.1 时间效应简介
时间是一种重要的上下文信息,对用户兴趣有着深入而广泛的影响。一般认为,时间信息对 用户兴趣的影响表现在以下几个方面:
- 用户兴趣是变化的
- 物品也是有生命周期的
- 季节效应
5.1.2 时间效应举例
5.1.3 系统时间特性的分析
在给定时间信息后,推荐系统从一个静态系统变成了一个时变的系统,而用户行为数据也变成了时间序列。研究一个时变系统,需要首先研究这个系统的时间特性。包含时间信息的用户行为数据集由一系列三元组构成,其中每个三元组(u,t,i)代表了用户u在时刻t对物品i产生过行为。在给定数据集后,可以通过统计如下信息研究系统的时间特性。
- 数据集每天独立用户数的增在的情况
- 系统的物品变化情况
- 用户访问情况
5.1.4 推荐系统的实时性
一个实时的推荐系统需要能够实时响应用户新的行为,让推荐列表不断变化,从而满足用户不断变化的兴趣
实现推荐系统的实时性除了对用户行为的存取有实时性要求,还要求推荐算法本身具有实时 性,而推荐算法本身的实时性意味着:
- 实时推荐系统不能每天都给所有用户离线计算推荐结果,然后在线展示昨天计算出来的结果。所以要求在每个用户访问推荐系统时,都根据用户这个时间点前的行为实时计算推荐列表
- 推荐算法需要平衡考虑用户的近期行为和长期行为,即要让推荐列表反应出用户近期行 为所体现的兴趣变化,又不能让推荐列表完全受用户近期行为的影响,要保证推荐列表 对用户兴趣预测的延续性
提高推荐结果的时间多样性需要分两步解决:
- 需要保证推荐系统能够在用户有了新的行为后及时调整推荐结果,使推荐结果满足用户最近的兴趣
- 需要保证推荐系统在用户没有新的行为时也能够经常变化一下结果,具有一定的时间多样性
如果用户没有行为,如何保证给用户的推荐结果具有一定的时间多样性呢? 一般的思路有以下几种:
- 在生成推荐结果时加入一定的随机性。比如从推荐列表前20个结果中随机挑选10个结果展示给用户,或者按照推荐物品的权重釆样10个结果展示给用户
- 记录用户每天看到的推荐结果,然后在每天给用户进行推荐时对他前几天看到过很多次的推荐结果进行适当地降权
- 每天给用户使用不同的推荐算法。可以设计很多推荐算法,比如协同过滤算法、内容过滤算法等,然后在每天用户访问推荐系统时随机挑选一种算法给他进行推荐。
5.1.6 时间上下文推荐算法
1. 最近最热门
2. 时间上下文相关的ItemCF算法
基于物品(item-based )的个性化推荐算法是商用推荐系统中应用最广泛的,该算法由两个核心部分构成:
- 利用用户行为离线计算物品之间的相似度
- 根据用户的历史行为和物品相似度矩阵,给用户做在线个性化推荐
时间信息在上面两个核心部分中都有重要的应用,这体现在两种时间效应上:
- 物品相似度 用户在相隔很短的时间内喜欢的物品具有更高相似度
-
在线推荐 用户近期行为相比用户很久之前的行为,更能体现用户现在的兴趣
3. 时间上下文相关的UserCF算法
和ItemCF算法一样,UserCF算法同样可以利用时间信息提高预测的准确率。关于UserCF算法的基本思想:给用户推荐和他兴趣相似的其他用户喜欢的物品。从这个基本思想出发,我们可以在以下两个方面利用时间信息改进UserCF算法:
- 用户兴趣相似度 如果两个用户同时喜欢相同的物品,那么这两个用户应该有更大的兴趣相似度
-
相似兴趣用户的最近行为 在找到和当前用户u兴趣相似的一组用户后,这组用户最近的兴趣显然相比这组用户很久之前的兴趣更加接近用户u今天的兴趣。也就是说我们应该给用户推荐和他兴趣相似的用户最近喜欢的物品
5.1.7时间段图模型
因为这个算法需要在全图上进行迭代计算,所以时间复杂度比较高。因此可以使用一种称为路径融合算法的方法来度量图上两个顶点的相关性。两个相关性比较高的顶点一般具有如下特征:
- 两个顶点之间有很多路径相连
- 两个顶点之间的路径比较短
-
两个顶点之间的路径不经过出度比较大的顶点
5.2 地点上下文信息
地点作为一种重要的空间特征,也是一种重要的上下文信息。不同地区的用户兴趣有所不同,用户到了不同的地方,兴趣也会有所不同。
基于位置的推荐算法
明尼苏达大学的研究人员提出过一个称为LARS的和用户地点相关的推荐系统。该系统首先将物品分成两类,一类是有空间属性的,比如餐馆、商店、旅游景点等,另一类是无空间属性的物品,比如图书和电影等。同时,它将用户也分成两类,一类是有空间属性的,比如给出了用户现在的地址(国家、城市、邮编等), 另一类用户并没有相关的空间属性信息。
对于第一种数据集,LARS的基本思想是将数据集根据用户的位置划分成很多子集。因为位置信息是一个树状结构,比如国家、省、市、县的结构。因此,数据集也会划分成一个树状结构。 然后给定每一个用户的位置,我们可以将他分配到某一个叶子节点中,而该叶子节点包含了所有和他同一个位置的用户的行为数据集。然后,LARS就利用这个叶子节点上的用户行为数据, 通过ItemCF给用户进行推荐。
这样做的缺点是每个叶子节点上的用户数量可能很少,因此他们的行为数据可能过于稀疏,从而无法训练出一个好的推荐算法。为此我们可以从根节点出发,在到叶子节点的过程中,利用每个中间节点上的数据训练出一个推荐模型,然后给用户生成推荐列表。而最终的推荐结果是这一系列推荐列表的加权。文章的作者将这种算法成为金字塔模型,而金字塔的深度影响了推荐系统的性能,因而深度是这个算法的一个重要指标。下文用LARS-U代表该算法。
举一个简单的例子,如图5.16所示,假设有一个来自中国江苏南京的用户。我们会首先根据所有用户的行为利用某种推荐算法(假设是ItemCF )给他生成推荐列表,然后利用中国用户的行为给他生成第二个推荐列表,以此类推,我们用中国江苏的用户行为给该用户生成第三个推荐列 表,并利用中国江苏南京的用户行为给该用户生成第四个推荐列表。然后,我们按照一定的权重将这4个推荐列表线性相加,从而得到给该用户的最终推荐列表。
对于第二种数据集,每条用户行为表示为四元组(用户、物品、物品位置、评分),表示了 用户对某个位置的物品给了某种评分。对于这种数据集,LARS会首先忽略物品的位置信息,利 用ItemCF算法计算用户u对物品i的兴趣但最终物品i在用户u的推荐列表中的权重定义为:
RecScore(u,i) = P(u,i) – TravelPenalty(u,i)
在该公式中,TravelPenalty(u,i)表示了物品i的位置对用户u的代价。计算TravelPenalty(u,i)的基本思想是对于物品i与用户u之前评分的所有物品的位置计算距离的平均值 (或者最小值)。