本篇继续讨论对用户移动规律的理解:结合地理建模和矩阵分解来做兴趣点推荐。
位置推荐是一类非常受欢迎的应用。在位置推荐中,我们需要理解用户的潜在兴趣并熟悉用户所处的环境。然后,我们就可以根据用户的兴趣和位置的属性发现用户可能感兴趣的地点。与普通推荐任务相比,地理位置在位置推荐中是改进推荐性能的一个重要因素。
在前面一篇中,我们讨论了如何恢复用户行为数据用于移动规律的理解。我们发现,用户移动行为通常集中在像家庭、工作场所和最喜欢的餐馆这样的重要地点。而且,两个地点之间的距离通常很短。所以,我们想要利用这些信息来做一个更好的位置推荐算法。
为了向用户提供好的位置推荐,我们使用用户的位置记录作为一类隐性的反馈数据。
- 我们把用户去过的地方看成用户对一个特定地点的偏好。而用户去一个地点的次数则表示偏好的置信度。如果你去一些地方的次数更多,那么我们就更加确信你喜欢这些地方。但是,这并不意味着你喜欢这些地方胜于其他你去的不是那么多的地方。对于没有去过的地方,我们缺乏信息,所以它们可能是正的或者负的。
- 你们可以看到这张表或者这个矩阵中的数字。如果这些地点与用户的活动区域很接近,那么我们假定它们更可能是负的。这是因为用户可能非常熟悉那个区域,却故意不去那些地方。但是对于远离用户活动区域而且用户没有去过的地方,我们还不知道用户是不熟悉那个区域还是故意不去那个地方。所以,其中混合了正的偏好和负的偏好。
- 实际上,整个工作都是建立在这些重要的假设之上的。
矩阵分解模型
传统上,在推荐任务中,研究人员总是会使用矩阵分解模型。
- 我们有一个包含用户和兴趣点这两个维度的矩阵。矩阵中的值表示用户是否去过这个地方或者兴趣点。矩阵中的值可能为0或者1。
- 矩阵可以被分解成两个潜因子。一个是用户潜因子,另一个是位置潜因子,两个潜因子都有K这个低维度。
- 我们想要区分没有去过的地方,即这些0值。所以,我们在用户潜因子中增加活动区域向量,在地点潜因子中增加影响区域向量。
这里的活动区域,这两个向量中都有表示区域数量的维度L。活动区域向量是指用户是否去过这些区域。影响区域向量是指这个位置或者兴趣点是否在这些区域中有影响力。
- 所以,我们把用户潜因子、位置潜因子、活动区域和影响区域相乘,最终得到原始的用户兴趣点矩阵。
GeoMF
我们使用了一个加权矩阵分解的结构,称之为GeoMF:
假设Cu,i表示用户u访问兴趣点i的次数、我们使用一个以Cu,i作为自变量的单调递增函数来计算权重。去的次数越多,则权重就越大。这里,权重越大意味着我们需要对这个位置的值有更精确的近似。从这个函数中,你们可以看到R会被分解成P乘以Q和X乘以Y。我们增加了W,它是权重矩阵。我们还有一些P、Q和X的正则项。在这里,为了简化计算,我们假设Y在优化中是给定的。我们使用二维核密度估计来估算Y,Y是指兴趣点的影响区域。我们假设兴趣点的位置对每个网格的影响服从高斯分布。这意味着距离位置越近的网格就越容易被兴趣点影响。
这里我们使用迭代方法来进行优化:
首先,我们固定X,即用户的活动区域,更新P和Q。这里展示了我们更新P和Q的方法以及这些步骤的时间复杂度。
然后,我固定P和Q,更新X。这张幻灯片说明了我们更新X的方法以及这些步骤的时间复杂度。
这里我们可以看到我们的方法是怎么样区分未被访问的地点的。假设X不变。由于Y是给定的,我们可以估计(R-X*Y)。对于给定用户,(R-X*Y)可以用这个方程来表示。对于一个位置,我们为用户u圈定了一个活动区域。所以,ru,i的值很可能是负的。实际上,这个值取决于用户u到这个区域去的次数。如果用户经常去这个区域,那么这个值很可能是负的。这意味着,这些没有去过的地方在经常去的地方的周围。所以,它们更有可能在优化中是负的。这表明用户对这些地方不感兴趣。但是,对于远离用户去过的区域的没有去过的地方,这个值可能还是0,这意味着我们无法区分用户是不喜欢这个地方,还是因为还不知道这个地方所以没有去过这个地方。
性能比较
我们有上海、北京、广州、天津和杭州这五个城市的数据。上海有40万用户,北京有16万用户。我们有上海用户的2500万条签到记录。我们把这些数据分成训练集和测试集。约有70%的数据属于训练集,30%的数据属于测试集。在实验中,我们进行了五次独立的测试。使用召回率和准确率作为测量项。我们比较加权矩阵分解和其他五种基准算法。
基准算法包括基于用户的协同过滤(UCF)和贝叶斯矩阵分解(B-NMF)。
我们还比较了加权矩阵分解和规范的奇异值分解以及基于访问频率矩阵的矩阵分解。这两种方法的区别在于在矩阵中是使用访问次数还是0、1值来表示用户访问。我们还比较了加权矩阵分解和有偏的加权矩阵分解。下面是两张分别表示召回率(左)和准确率(右)的图。
这些算法的性能相似,所以我们只能看看表示准确率的这张图。我们可以发现,加权矩阵分解和有偏加权矩阵分解的性能最好,但是它们的性能非常接近。基于访问次数矩阵的矩阵分解性能最差。这意味着访问次数不能直接在矩阵中使用。我们最好使用加权矩阵分解方法,这意味着使用次数作为置信度,但是在矩阵中仍然使用0和1。加权矩阵分解的性能好于UCF和B-NMF。
最终,我们使用加权矩阵分解作为框架。
我们想研究空间聚类现象,文献中已经有很多关于这个现象的研究。
为了研究这些现象,首先忽略用户潜因子和条目潜因子。这意味着要去掉P和Q,而仅保留X和Y,即用户活动区域和地点影响区域。我们比较加权版本和非加权版本。我们分别称加权版本和非加权版本为GeoWLS和GeoLS。我们还比较不同的参数以及二维核密度估计这个基准方法。下面两张图表示召回率和准确率非常相似。从图中可以看到,我们的方法好于二维核密度估计方法。在这里,二维核密度估计方法的性能最差。此外,加权版本的性能好于非加权版本的性能。
最后,我们比较了加权MF、GeoWLS和结合了这两种方法的GeoMF
从图中可以看到,GeoWLS的性能最差。这意味着还需要利用用户潜因子和位置潜因子,也就是P和Q。与WMF相比,考虑了地理约束的GeoMF的性能更好一些。这意味着地理建模能够提高矩阵分解性能,这一点在实验中得到了验证。
总结
- 使用二维核密度估计来进行地理建模。
- 使用加权矩阵分解来基于位置访问数据做推荐,在这里将位置访问数据作为一种很好的反馈。
- 提出GeoMF模型,它结合了地理建模和矩阵分解,我们还提出了优化GeoMF的学习算法并分析了其时间复杂度。实验表明GeoMF的性能优于其他基准算法。