【论文阅读】Modeling Spatio-temporal Neighbourhood for Personalized Point-of-interest Recommendation
authors:: Xiaolin Wang, Guohao Sun, Xiu Fang, Jian Yang, Shoujin Wang
container:: Proceedings of the Thirty-First International Joint Conference on Artificial Intelligence
year:: 2022
DOI:: 10.24963/ijcai.2022/490
rating:: ⭐⭐⭐
share:: false
comment:: 强调用户偏好,通过构建 TKG 图,以时间片的形式聚合 K 个用户/场所的邻居信息并打分,以此作为抽象表示。亮点主要在于聚合用户/场所邻居的方法。
前言
刚出炉的 IJCAI 2022 的一篇论文:Modeling Spatio-temporal Neighbourhood for Personalized Point-of-interest Recommendation
问题描述
(next POI recommendation)分别给定用户集合U={u1,u2,⋯,uU}, POI 集合L={l1,l2,⋯,lL},时间集合T={t1,t2,⋯,tT},表示用户ui在ti时刻访问了li。我们的任务是预测用户可能访问的地点,模型的输入是带 GPS 信息的用户历史访问序列Y,以及时间知识图 TKG G。模型的输出是位置概率矩阵P。
(Temporal Knowledge Graph)时间知识图 TKG G是一个四元组,G={(eu,r,el,t)∣eu∈Eu,r∈R,el∈El,t∈T},分别表示用户,访问关系,地点以及时间。
(Receptive Field)定义HU/L,U(D)为D层用户/POI 接受域;eu′/l′为用户/POI 邻居实体;Nu/l为邻居实体集合。
Overview
论文根据实际生活,提出了 3 个点以强调用户偏好:
-
Personal preference:不同用户对于同个场所存在偏好。例如在 12:00,用户 A 将 cafe 当做 dining palce,因为根据历史序列发现他在这个时刻经常访问 sushi bar,pizzeria 等场所;而用户 B 则将 cafe 当做 social place,因为根据历史序列发现他在这个时刻经常访问 go club,card room 等场所。
-
Dynamic preference:同一用户对于同一场所的偏好经常会发生变化。例如用户 B 在 12:00 将 cafe 当做 social place,而在 17:00 则作为 dining palce。
-
Personal acceptance to distance/time:用户的选择会受到距离和时间的影响。例如,用户 B 相比于用户 A 有更高的概率访问位置 L,因为根据用户 B 之前的轨迹比用户 A 有更长的距离/时间间隔。
在以前的方法中,并没有捕捉到用户的动态偏好。同时以前的方法大多将用户到 POI 的距离/时间视为客观的因素,这忽略了个人对距离/时间的接受程度,从而限制了他们的推荐性能。
本论文为了克服现有的基于序列和基于 Knowledge Graph (KG)的推荐方法的局限性,在 POI 推荐中引入了带有时间信息的知识图谱(称为 TKG),包括用户和带有时间戳的位置。在 TKG 中,考虑了用户对位置的个人偏好,并使用了注意机制来衡量每个用户对距离和时间的接受程度。论文的主要贡献如下:
- 提出了一个时空图卷积注意力网络,通过学习 TKG 更好地学习用户偏好;
- 考虑了用户对地点的个人偏好;
- 使用注意力机制衡量每个用户对距离和时间的接受程度。
STGCAN
模型总体框架如下图所示:
Embedding Layer
在 Embedding 层,将 user U,location L,timestamps T分别进行 Embedding。
EU∈RN×E,EL∈RL×E,ET∈RK×E
其中 timestamps 为 hour of week。
Neighbour Aggregation Layer
User Neighbour Aggregation Layer
用户接受域(User-receptive-feld)是用来在 TKG 上聚合用户邻居实体以进行用户表示的。
具体来说,对于 TKG 上的一个四元组(eu,r,el,t),我们可以找到用户eu的邻居四元组(eu′,r,el,t′)(t′<t),邻居节点eu′与eu都访问过场所el。根据访问时间找到最近的 K 个邻居,即Ntu={etu′,1,etu′,2,⋯,etu′,K}。如下图所示:
上面提到的接受域也就是寻找K个邻居的范围域。上图为 3 层的用户接受域。
然后,为了计算K个邻居实体与目标用户的相关性,用时空评分函数I进行评分:
λstu,u′=I=Is+It=It{(eu,r,el,t),(eu′,r,el,t′)}=exp(−γ∣t−t′∣)
其中γ为超参数。
最后,将计算的得到的K个时空评分通过 softmax 进行归一化。将这K个评分经过一个线性变换,最后的输出作为目标用户的表示。
αstu,i=∑i=1Kexp(λstu,i)exp(λstu,i)
etu←etu+σ(i=1∑Kαstu,i⋅etu′,i)
在每一层接受域中,更新方程如下:
etu[h+1]=etu+σ(i=1∑Kαstu,i⋅etu′,i[h])
Location Neighbour Aggregation Layer
位置接受域(Location-receptive-feld)是为了聚合 TKG 上的邻居实体来进行位置表示。
类似地,找到目标位置el的K个邻居四元组(eu′,r,el′,t′)(t′<t),根据用户的访问不同位置的时间进行排序,即Ntl,u={etl1′,u,etl2′,u,⋯,etlK′,u}。如下图所示:
与聚合用户邻居实体不同的是,聚合位置邻居实体时的时空评分函数I还通过 GPS 计算了不同位置之间的 Haversine 距离:
{Is=Is(GPSl,GPSlu′)=θ+H(GPSl,GPSlu′)1It=It{(eu,r,el,t),(eu′,r,el′,t′)}=θ+∣t−t′∣1
最后仍是与聚合用户实体类似的更新方程:
αstl,lu′=∑i=1Kexp(λstl,lu′)exp(λstl,lu′)
etl,u←etl,u+σ(i=1∑Kαstl,lu′⋅etlu′)
etl,u[h+1]=etl,u+σ(i=1∑Kαstl,lu′⋅etlu′[h])
Spatial-Temporal Interval Aware Attention Layer
在邻居聚合之后,用户和位置的表示被输入到时空间隔感知注意层,这是一个测量空间距离和时间的注意层。
采用插值嵌入的方式,将时空间隔嵌入用户和位置的表示。
这里采用的方法和[[@luo2021stan]]比较像。
{ds=(Δsmax−Δsmin)+θ[vsl⋅(Δsmax−Δs)+vsu⋅(Δs−Δsmin)]⋅inv_sdt=(Δtmax−Δtmin)+θ[vtl⋅(Δtmax−Δt)+vtu⋅(Δt−Δtmin)]⋅inv_t
其中vsl,vsu,vtl,vtu∈RE以及inv_s,inv_t∈RN×E均为可训练参数,分别表示最小/最大的时间/空间间隔以及用户的相对时空比例权重。
然后通过 self attention 将得到的时空间隔嵌入用户和位置的表示。
这里感觉说的不清不楚的,差值后如何使用,还有 self attention 也只是文字提了一嘴。还是说这里的 attention 只是下面的那两个全连接,没搞明白。
再次加入时间信息:
UAtt=Wd⋅(EU+EL+ET)+b
LAtt=WQ[Wd⋅(EL+ET)]T+b
最后计算得到用户访问概率:
P=(LAtt)T×UAtt
Neural Network Training
整体算法如下:
使用交叉熵损失函数计算损失,负样本为随机采样:
L=−j∈L∑(logσ(pj)+j′∈L∑slogσ(1−pj′N))−λΘ
其中Θ={vsu,vsl,vtu,vtl,inv_t,inv_s,WQ,⋯}为可学习参数,σ为激活函数。
Experiments
Datasets
Result
Impact of embedding dimension
Impact of depth of receptive feld
Impact of neighbour entity size
总结
总的来说感觉模型本身并不复杂,但有些细节没搞明白,想去看代码结果代码也写得不清不楚,就只是把框架代码放了上来。感觉主要的亮点还是在聚合邻居节点的时候采用的方法,在时间维度上选取当前用户/POI 的邻居,并且聚合也不是硬套 GNN,而是简单的采用一个打分函数。另外就是 attention 层只看他描述的话感觉并不 attention。
参考资料