POI(point of interest)的推荐,事实上就是兴趣点的推荐,也就是对地理位置的推荐,在美团,点评等业务场景比较适用,于是决定开始看几篇相关的论文。最近在思考如何把看过的论文做个转化,而不是处于那种看了就忘,忘了又看的状态,所以决定开始写博客。当然是比较简单的。。嘻嘻。
1.引言
随着web2.0时代的到来,location-based social networks (LBSNs)在最近几年出现了。许多用户都会在去玩去吃饭时进行签到打卡,所以将用户的这些签到信息用在个性化推荐,对于在特定地点对特定用户进行广告投递,和对用户进行新地点的探索有重要的意义。
不像传统的桌面推荐,比如(电影,音乐等的推荐),POI推荐是将移动用户和物理地点(观光地点)等融合起来的,所以,面临了更多挑战:
1)数据稀疏:对POI地点的点评信息是要比对电影音乐等评价的花费要更昂贵的(毕竟你得实际去那一趟),并且很多用户由于隐私,不愿意签到。使得POI中的数据很稀疏,这使得大部分的协同过滤方法都GG了。
2)环境因素:POI推荐不仅要考虑用户个人的偏好,还有考虑时空上下文
3)冷启动:无论什么推荐都会有的问题
4)用户偏好的动态变化:用户的喜好是会随着时间的变化而变化,而捕捉到这种兴趣的迁移是十分有意义的。所以POI推荐是基于用户最近的喜好和用户所处的时空环境做推荐的。
为了应对以上四种挑战,我们提出了一种新的方法,来将以下四种因素融合起来。
1)序列影响:事实证明人类的活动是存在序列模式的,比如用户一般会在机场和酒店间存在序列的check in信息。
2)地理信息:人们趋向于访问与他们目前所处的POI相近的POI
3)时间循环因素:人们在一天的活动模式中是存在规律的。比如早上九点到办公室,中午12点出现在饭店。所以对于推荐而言,他在午餐时间出现在饭店的概率是比出现在酒吧概率高的。
4)语义因素:Whrrl数据集证明同一用户的check-in信息表现出了语义相似性。
虽然目前很多方法都提出了将上述几种因素进行融合,但是没有这样一种将所有都融合起来的方法(=。=),并且不能很好扩展模型。另一方面,目前的方法不能够很好的支持实时的推荐,1)重新训练模型非常耗费时间;2)不能够很好的追踪用户喜好的变化,因为用户最近的checkin信息会被淹没在大量的数据中。虽然最近有markov-based的文章通过挖掘用户时序行为模式来进行预测,但是没有考虑除了序列之外的其他几个因素。
最近,embedding 技术被广泛地使用到了各个领域,本文在embedding的基础上,提出了一种graph-based embedding called GE,特别的,我们使用二部图来捕捉POI-POI(序列影响),POI-地理位置(地理因素),POI-time slots(时间因素),POI-content words(语义因素),然后我们将这四种异质的网络图embedding到低维空间中(how?)。最后,为了追踪动态的用户喜好变化,最后提出的模型是将用户最近喜好和时空上下文的embedding结合起来进行推荐(原文是:To support real-time & context-aware recommendation, the final recommendations are made based on the embeddings of the user’s latest preferences and the spatiotemporal context in the shared latent space.)文章的主要贡献如下:
1)就目前所知,我们是第一个将上述几个因素全部考虑进来融合的。
2)我们提出了一种graph-based的embedding model来学习POI,时间,地理位置,语义的表示,然后基于学习到的这些表示,提出了新奇(?感觉有点类似于attention)的模型来进行用户喜好建模。
3)做了大量的试验后,发现我们的很好。
2.Graph-based embedding model
2.1 problem formulation
文章中用到的符号。
![](https://img.haomeiwen.com/i14831306/3ae5e7475b9196cb.png)
definition1:(POI)是一个特定的地点。有三个属性:identifier,geographical location and content,分别用v,lv,Wv来表示。
definition2:(check-in activity)由五元组组成(u, v, lv, τ, Wv),其中τ代表用户u在时间τ访问了地点v
definition3:(user profile)这里面是一系列由与用户相关的check-in activity组成的,并且按时间戳顺序排序
definition4:(POI-POI graph)denoted as Gvv = (V ∪ V,Evv),V是一系列check-in的POIs,Evv是他们之间的边
definition5:(POI-Region)denoted as Gvr=(V∪R,Evr),当v在region时,两个有连边
definition6:(POI-time)denoted as Gvt = (V ∪ T, Evt),连边权重是指在某一时间片中POI访问的越频繁权重越大
definition7:(POI-word)denoted as Gvw = (V ∪ W,Evw),
然后通过把这几个图embedding到低维的共享的空间,我们就能得到~v, ~r, ~t and ~w的表示。
然后将问题也形式化一下,在给定数据集D的情况下,有一个query q=(u,l,τ),然后给出topk的 POI。
![](https://img.haomeiwen.com/i14831306/a070478112c7f654.png)
2.2 模型描述和优化
2.2.1 二部图的表示
受LINE的启发(很多都提到了LINE,是时候学习一波了,好像是能够从大型的异质网络中学习embedding)
首先定义一个条件概率(这个用底下的KL散度推一下,不难):
![](https://img.haomeiwen.com/i14831306/a28beffa55601343.png)
![](https://img.haomeiwen.com/i14831306/263b50e35eddc59e.png)
因为上述计算很麻烦,于是采用负采样来优化模型。
![](https://img.haomeiwen.com/i14831306/af6f4240adffe299.png)
接下来开始将四张图放在一起联合学习embedding,目标函数和各部分的表示如下
![](https://img.haomeiwen.com/i14831306/ce34189749befef9.png)
![](https://img.haomeiwen.com/i14831306/3b867f0c14a3b713.png)
![](https://img.haomeiwen.com/i14831306/d209402a8b2123e8.png)
![](https://img.haomeiwen.com/i14831306/7134ff4781606159.png)
最后进行对用户喜好的动态建模 。之前的一样隐空间模型等对用户喜好建模都十分耗时,所以本文使用最近用户访问的POI的表示来建模,并且随着时间τ越远,该项POI的效果逐渐衰减。
![](https://img.haomeiwen.com/i14831306/de766b3a8f6a5f08.png)
finally。来看下文章如何进行推荐的。文章还是很巧妙的把上述几种embedding融合在一起了。(但是文章推荐给用户的是之前没有访问过的POI,这里感觉有点过于强硬,万一用户是呈周期性的想要访问某个点,所以我感觉应该把之前访问过的和未访问过一起加起来计算,并赋予不同权重给他们。个人见解哈哈。)
![](https://img.haomeiwen.com/i14831306/8622791c6f91bb21.png)
接下来就是实验部分啦,文章的实验部分进行的十分详细。建议可以去看看。不仅使用了基础的baseline,还将自己提出的算法进行了变种。分别验证了不同因素对于推荐的影响因素。很强~,就不一一贴了,可以自己去找论文看哇。
网友评论