查看原文
其他

​ICDE 2022 | 时空间隔感知的序列POI推荐

​Andrew PaperWeekly 2023-04-06

©PaperWeekly 原创 · 作者 | Andrew

单位 | 吉林大学

研究方向 | 数据挖掘,推荐系统



论文标题:

Spatial-Temporal Interval Aware Sequential POI Recommendation

论文来源:

ICDE 2022(吉林大学,西北工业大学)

论文链接:

https://ieeexplore.ieee.org/document/9835452

代码链接:

https://github.com/jiangyiheng1/STiSAN.pytorch





引言

空间(Spatial)和时间(Temporal)信息是序列 POI 推荐中两个重要且相辅相成的因素。空间因素(如地理距离间隔 )可以在用户的历史轨迹呈现空间分簇现象时,细粒度刻画 POI 之间在真实世界中的空间邻居程度;时间因素(如时间间隔 )可以描述 check-in 之间的相对时间临近程度,并以此来反应用户的个性化行为模式。

如图所示,如果一个序列模型在建模时仅考虑 POI 和空间信息,则 Fig. 1 中 user 1,user 2 的历史序列在隐空间中的表示会高度相似,并导致有偏差的推荐结果。



自注意力网络(Self-Attention Network,SAN)由于其全局注意力机制的设计,加权平均操作会在一定程度上弱化相邻 POI 之间空间相关性。但是在序列 POI 推荐场景中,具有强空间相关性的 POI 对于推荐精度至关重要,因为较短的地理距离间隔通常会导致更好的连续访问概率。

如 Fig. 2 中所示,具有强空间相关性的 POI 在历史序列的短期 check-in 和长期 check-in 中均有分布。但是由于上述 SAN 本身的结构特性,其无法充分考虑这些 POI 之间的空间相关性,并由此导致推荐精度受限。



因此,本文工作的主要贡献在于:
  • 本文针对上述序列中时间间隔表示和序列局部空间信息建模不足的问题,分别提出了两个无需额外参数和高额计算负担的方法,时间感知位置编码器(Time Aware Position Encoder,TAPE)和间隔感知注意力模块(Interval Aware Attention Block,IAAB)。

  • 本文将 TAPE 和 IAA 应用于自注意力网络(SAN),提出了一个端到端的时空间隔感知的序列 POI 推荐模型 STiSAN,以此来实现细粒度的偏好建模以及提供可解释的推荐结果。

  • 本文在 3 个公开 LBSN 数据集和 1 个真实世界城市交通数据集上进行了大量实验,结果表明 STiSAN 相较于多个 SOTA 模型可以取得 13.01% 的推荐精度提升。消融实验,指标评估以及可视化实验分别验证了 TAPE 和 IAAB 的有效性、可拓展性、可解释性。




模型方法

2.1 时间感知位置编码器(Time Aware Position Encoder, TAPE)



TAPE 的设计来源于 Transformer 中的 Positional Encoding。其核心在于利用用户历史序列中 POI 之间的时间间隔,动态调整 POI 在序列中的位置差。位置计算公式如下:
以 Fig. 1 中 user 1 为例,其序列中 POI 的位置由 变为 ,其位置差异与缩放后的时间间隔一致,再由正余弦函数编码为高维位置表示向量:

TAPE 的伪代码如下,其相较于 Positional Encoding,仅在位置计算部分增加了 计算复杂度。


class TimeAwarePE(nn.Module):
    def __init__(self, d)
    super(TimeAwarePE, self).__init__()
    self.div_term = torch.exp(torch.arange(d, 2)*-(math.log(10000.0)/d))

    def forward(self, x, t):

        # x:[n, d], t:[n]
        t_ = torch.clone(t)
        t_[1:] = t[:-1]
        delta_t = t - t_
        delta_t /= torch.sum(delta_t)/(x.size(0)-1)
        pos = torch.zeros_like(t)
        pos[0] = 1.0
        for k in range(1, x.size(1)):
            pos[k] = pos[k-1] + delta_t[k] + 1
        tape = torch.zeros_like(x)
        tape[:, 0::2] = torch.sin(pos * self.div_term)
        tape[:, 1::2] = torch.cos(pos * self.div_term)
        return x + tape

2.2 间隔感知注意力模块(Interval Aware Attention Block, IAAB)



IAAB 与传统 self-attention mechanism 的区别在于,其以驻点相加的方式引入了时空关系矩阵 ,并将其作为归纳偏置,使注意力的权重分布可以关注到相邻 POI 之间的空间相关性,
IAAB 的伪代码如下,相较于传统的 self-attention,其仅增加了  FLOPS,并且其显示相加的方式为推荐结果增加了可解释性。
class InrAttn(nn.Module):
    def __init__(self, dropout):
        super(InrAttn, self).__init__()
        self.dropout = nn.Dropout(dropout)

    def forward(self, query, key, value, r_mat, mask):
        # query, key, value:[n, d], r_mat:[n, n]
        # mask: [n, n] where up triangle elements are zeros
        r_mat = F.softmax(r_mat, dim=-1)
        attn_scores = torch.matmul(query, key.transpose(01))/math.sqrt(query.size(-1))
        attn_scores += r_mat
        attn_scores = attn_scores.masked_fill(mask == 0-1e9)
        probs = F.softmax(attn_scores)
        probs = self.drop(probs)
        return torch.matmul(probs, value)

2.3 间隔感知序列POI推荐模型STiSAN






实验验证
3.1 推荐性能对比
STiSAN 在本文所选用的 4 个数据集上均取得了最高的推荐精度,相较于目前的 SOTA,其平均可以取得 13.0% 的性能提升。

3.2 消融实验


3.3 TAPE的可拓展性以及可解释性分析

将 TAPE 拓展至基本的 SAN,可以为其带来平均 5.36%HR@10 的性能提升。



本文选用一条长度为 64 的历史序列进行可视化实验。序列中的时间间隔分布情况如 Fig. 5(a) 所示,Positional Encoding 和 TAPE 的权重热力图分别如 Fig. 5(b) 和 Fig. 5(c) 所示。TAPE 会按当前 POI 与前序 POI 的时间间隔大小,增强或削弱 self-attention 机制对当前 POI 的关注。

3.4 IAAB的可拓展性以及可解释性分析

如 Fig. 6 所示,将传统的 self-attention 替换为本文提出的 IAAB,可以有效缓解针对长序列局部相关性建模不足的问题,并取得更高的推荐精度。


本文依旧选用一条长度为 64 的历史序列,其中历史 POI 与待预测 POI 之间的地理距离间隔分布如 Fig. 7(a) 所示。根据 SA 和 IAAB 的热力图(Fig. 6(b), Fig. (c))所示,IAAB 对于具有强空间相关性的 POI 关注度更高,即使这些 POI 分布于序列的 long-term check-in 中,并且为推荐结果提供了可解释性保证。


更多阅读



#投 稿 通 道#

 让你的文字被更多人看到 



如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。


总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。 


PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学术热点剖析科研心得竞赛经验讲解等。我们的目的只有一个,让知识真正流动起来。


📝 稿件基本要求:

• 文章确系个人原创作品,未曾在公开渠道发表,如为其他平台已发表或待发表的文章,请明确标注 

• 稿件建议以 markdown 格式撰写,文中配图以附件形式发送,要求图片清晰,无版权问题

• PaperWeekly 尊重原作者署名权,并将为每篇被采纳的原创首发稿件,提供业内具有竞争力稿酬,具体依据文章阅读量和文章质量阶梯制结算


📬 投稿通道:

• 投稿邮箱:hr@paperweekly.site 

• 来稿请备注即时联系方式(微信),以便我们在稿件选用的第一时间联系作者

• 您也可以直接添加小编微信(pwbot02)快速投稿,备注:姓名-投稿


△长按添加PaperWeekly小编



🔍


现在,在「知乎」也能找到我们了

进入知乎首页搜索「PaperWeekly」

点击「关注」订阅我们的专栏吧


·

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存