本章主要讲了利用用户的上下文信息进行更加个性化的推荐。上下文包括用户访问推荐系统的时间、地点、心情等,本章主要是讲如何利用时间信息和地点信息优化推荐算法。用户特征和物品特征从大的角度上反映了用户的长期兴趣和物品的适合人群,但是一个用户的具体需求和特定的时间和地点是密切相关的。也就是说,用户特征反映了用户的长期兴趣,而上下文信息则反映了用户的短期兴趣。
时间上下文信息
时间信息对用户兴趣的影响表现在以下几个方面:
- 用户兴趣是变化的。用户最近的行为最能体现他现在的兴趣,当然这种兴趣是渐变的用户的兴趣,对突变的用户兴趣很难起作用。
- 物品也是有生命周期的。不同的物品具有不同的生命周期,比如新闻的生命周期很短暂,而电影的生命周期相对较长。
- 季节效应。季节效应主要反映了时间本身对用户兴趣的影响,节日也是一种季节效应(不同的季节会买不同的东西,不同的节日也会有与平时不同的购物行为)。
我们可以收集这样一些用户行为数据集,这些数据集由一系列三元组构成,其中每个三元组(u,i,t)代表了用户u在时刻t对物品i产生过行为。利用这些用户行为数据集,我们可以统计如下一些时间特性:
- 数据集每天独立用户数的增长情况。确定系统处于什么发展期。
- 系统的物品变化情况。反映了时间对物品热度的影响。
- 用户访问情况。可以统计用户的平均活跃天数,也可以统计相隔T天来系统的用户的重合度。
在利用用户的时间上下文信息优化推荐效果时,为了实现系统的实时性需要1)在每个用户访问系统时都根据这个时间点前的行为实时计算推荐列表(及时调整推荐结果使之满足用户最近的兴趣);2)平衡考虑用户的近期行为和长期行为(在用户没有新行为的时候也能改变推荐列表,使得推荐系统具有一定的时间多样性,当然还是要以高精度为前提)。而时间上下文相关的推荐算法,作者介绍了这么几种:
- 最近最热门。说白了就是给用户推荐最近最热门的物品,这是一种简单的非个性化推荐算法,可以看作是一种规则。通过统计最近一段时间物品的热度加权和(需要给每条记录进行时间衰减加权)来定义物品的流行度。
- 基于时间上下文的CF算法。这里包括ItemCF算法和UserCF算法。 但是这里在计算物品或者用户之间的相似度的时候不是直接进行出现次数的统计,而是对加上时间衰减的出现次数的统计,保证越近的行为对相似度计算的影响越大。
对于基于时间上下文的ItemCF算法来说,每个和物品i、j都有交集的用户对该两种物品的相似度的贡献不再恒定是1,而是与用户对物品i、j产生行为的时间越远,对这两种物品的相似度的贡献就越小,物品相似度公式如下:其中有,,与用户u的兴趣变化程度有关,用户u的兴趣变化越快则越应该取较大的值。
同理,对于基于时间上下文的UserCF算法,计算用户之间的相似度的时候,也需要根据时间对那些和两种物品都有交集的用户进行时间上的衰减,此时的用户相似度计算公式如下: - 时间段图模型。此时还是将用户和物品之间的关系信息看作是一个二分图,对图进行广度优先遍历,实现图上的路径融合,算出每个边 的权重。不过需要注意的是,同一个用户和物品之间可能有多次交集,此时就需要增加图中边的数量来表示这种关系。比如用户u在1和2两个时刻都对物品i产生行为,此时就需要用3条边来表示这种交互行为,分别是(u, i)、(u:2, i)和(u, i:2)。这里不在增加(u:2, i:2)这条边,一方面是因为增加这条边不会对结果有所改进,另一方面则是因为增加一条边会增加图的空间复杂度和时间复杂度。
地点上下文信息
不同地区的用户兴趣有所不同,用户到了不同的地方兴趣也会发生变化。文中作者提到了几种基于地点上下文信息的推荐算法,其本质还是协同过滤算法,只是利用地点信息对原数据集进行新的划分,从而得到不同的统计值,此时相同两个用户或者物品之间的相似度在地点不同的情况下是有所不同的,最后的推荐列表也会有所变化。
个人总结:时间信息和地点信息对推荐结果的帮助是毋庸置疑的。从特征的角度来看,我感觉加入时间信息和地点信息其实是对特征的细粒化,此时可以看作是用户特征或者物品特征与时间特征或者地点特征的二阶交互。