A Graph-based Approach for Trajectory Similarity Computation in Spatial Networks
本文发表在KDD 2021,是一篇关于计算轨迹相似度的文章。
阅读完本文,我有很多问题:
1.在POI REPRESENTATION LEARNING中的寻找邻居过程中,邻居是POI点附近的相关点(不在同一轨迹中),还是同一轨迹中的其他POI点集合(个人认为是这个,因为在随机游走中前序轨迹已存在,要在该轨迹中寻找邻居且保证在轨迹中,这里的轨迹应该是一条错综复杂的轨迹组和,统筹为一个“大轨迹”。由多个“小轨迹”组合而成,并且“小轨迹”之间的一些POI点是同一个。这样相似轨迹之间的共同POI数量就会更多。 并且对于给定的轨迹,更容易在训练数据集中找到它最相似的轨迹。)
2.为什么有三种衡量相似度的公式:式2,式11,式12。式2和式12的区别是什么?并且式12为什么是大于满足条件呢?我认为这里和问题定义3.1有关,因为是目标最小化相似度,所以在式11中,得到的相似度越小,轨迹则越相似。所以式12,一旦预测的不同轨迹之间的相似性值小于训练集中的同一最相似轨迹,则满足条件,找到了最相似的不同轨迹。
3.在 GNN 的目标函数中的拉普拉斯正则化项可以使连接的节点保持相同的标签,从而有助于缓解稀疏性问题。 更具体地说,GNN 的计算会产生给定节点的邻居信息。这部分结合NORM(G)那个公式不太理解。
创新点:
1.在空间网络方面(而不是基于欧式空间的网格)学习POI节点表示和轨迹表示,从而对可用训练实例的数量和系统错误引入的噪声点具有鲁棒性。
2.新的随机游走算法和修改的损失函数。
3.GTS 框架首先采用轨迹感知随机游走方案来学习空间网络中每个 POI 的表示。然后它利用基于 GNN 的模型结合 LSTM 来学习相似度计算的轨迹表示。
思考:
轨迹相似度可能对TUL问题有很大用处,因为这个指标可以视作同一用户所产生的轨迹具有较相似的一个相似度。
对轨迹相似度的了解还不够深入,应该再多看相关paper。
Abstract
轨迹相似度计算是许多空间数据分析应用中的基本操作。 在本文中,我们研究了空间网络上的轨迹相似度计算问题,其中对象之间的真实距离由网络距离反映。
在空间网络上与以往学习轨迹在欧几里得空间中表示的研究不同,它不仅需要捕捉轨迹的序列信息,还需要捕捉空间网络的结构。
为此,我们提出了 GTS,这是一个全新的框架,可以共同学习这两个因素,从而准确地计算相似度。 它首先学习道路网络中每个兴趣点 (POI) 的表示以及轨迹信息。
实现概况:通过在空间网络上的随机游走中结合 POI 和轨迹之间的距离以及损失函数来实现。 然后通过图神经网络模型学习轨迹表示,以识别同一轨迹内的相邻 POI,并使用 LSTM 模型来捕获轨迹中的序列信息。
1 Introduction
首先介绍了很多关于轨迹相似度计算的评价指标(Dynamic Time Warping [DTW], longest common subsequence [LCSS], edit distance with real penalty [ERP], edit distance on real sequences [EDR]
),但是这些指标都有一个明显的缺点,就是计算量太大了。
一些基于神经网络的方法,轨迹之间的相似性可以通过低维嵌入向量的相似性来衡量,可以在线性时间内完成,减少了时间复杂度。
然后说明了上述方法的不通用性,只能在欧式空间有效,但是不能用于空间网络的轨迹相似度计算,物体在很多实际场景中是在空间网络中运动的。有一些测量轨迹相似度的方法已经侧重于在空间网络中进行了,但仍然存在高计算开销,并且说明了深度学习方法的两大困难。
深度学习的大问题:一方面,在学习轨迹嵌入时必须考虑网络结构,而现有的欧氏空间解决方案仅捕获序列信息。 另一方面,学习过程受到数据稀疏性的影响:大问题是指空间网络中 POI 的数量,训练数据的覆盖范围可能不足以包含所有可能的组合。 因此,一旦轨迹模式在训练数据中不常见甚至缺失,训练后的模型就无法为其学习高质量的嵌入。
最后作者引出本文提出的方法,GTS。从三个步骤入手,
1.测量轨迹相似性(三个方面定义:POI-wise距离,POI-Trajectory距离,Trajectory-wise相似度)。
2.学习兴趣点POI表示(通过上面的轨迹相似度定义,将轨迹与空间网络拓扑结构一起考虑,为此,我们提出了一种轨迹感知随机游走算法和一个新的损失函数来训练一个 skip-gram 模型,使得在这些随机游走中同时出现的 POI 会产生相似的嵌入。)。
3.学习轨迹嵌入(基于上面的POI嵌入学习轨迹嵌入,GNN对每个 POI 及其相邻信息的嵌入进行编码,然后轨迹变成一系列 POI。然后使用LSTM学习其表示。这样,学习到的表示将包含更丰富的网络结构信息,因此即使它们没有明确包含在训练数据中,也能够反映各种轨迹模式。)。
2 Related work
2.1 Non-learning Trajectory Similarity Computation
基于机器学习的方法有两大类:
1.一种是基于网格的相似性,它使用欧几里德空间中的距离。即使进行了一些优化,它们的计算时间也很昂贵,并且可能会受到轨迹中噪声点的影响。
2.另一种是基于空间网络的相似性,其中轨迹首先映射到空间网络,然后通过在变换后的轨迹之上应用相似性函数来计算相似性。不幸的是,现有的道路约束轨迹测量要么存在高计算问题,要么太简单而无法在现实生活中使用。
2.2 Deep Learning based Approaches
当前的通过深度学习方法来计算轨迹相似度都是为欧几里得空间中的相似性度量而设计的,不能用于我们的问题,因为它们无法从空间网络中学习信息。
2.3 Graph Neural Networks
我们的工作利用了 GNN 的特性,可以获取空间网络中每个节点的邻域信息,从而克服数据稀疏性问题。
3 Preliminary
3.1 Trajectory with Spatial Networks
空间网络被表示为无向图:
G
=
(
V
,
E
)
G=(V,E)
G=(V,E)
每个节点
v
∈
V
v \in V
v∈V 是空间网络中的一个POI,代表的是一个道路的交叉路口,或者是道路的末端部分,由经度和纬度构成。
每条边
e
=
<
v
i
,
v
j
>
∈
E
e = <v_i,v_j> \in E
e=<vi,vj>∈E 表示两个POI(
v
i
,
v
j
v_i,v_j
vi,vj)之间的距离。
原始轨迹
τ
=
{
p
1
,
p
2
,
.
.
.
,
p
k
}
\tau = \left\{ {{p_1},{p_2},...,{p_k}} \right\}
τ={p1,p2,...,pk} 由带纬度和经度的连续点组成。将原始轨迹中的每个点(经纬度组成)映射到离每个经纬度点最近的一个POI兴趣点集合V中,然后将该对应的POI兴趣点作为新的顶点,组成一个有POI点构成的轨迹。
即
τ
=
{
p
1
,
p
2
,
.
.
.
,
p
k
}
→
τ
=
{
v
n
1
,
v
n
2
,
.
.
.
,
v
n
k
}
\tau = \left\{ {{p_1},{p_2},...,{p_k}} \right\} \to \tau = \left\{ {{v_{{n_1}}},{v_{{n_2}}},...,{v_{{n_k}}}} \right\}
τ={p1,p2,...,pk}→τ={vn1,vn2,...,vnk}
3.2 Similarity Between Trajectories
要开发稳健有效的学习技术,第一步是正确定义道路网络上两条轨迹之间的相似性度量。 与以往使用欧氏距离的研究不同,我们工作中的相似性度量不仅应该反映轨迹的属性,还应该反映空间网络的属性。 为了实现这一目标,我们通过从两个方面考虑距离来定义轨迹相似性:POI-wise 距离和 POI-Trajectory 距离。
POI-wise距离的定义方式。POI-wise 距离是道路网络上两个 POI 之间的距离,定义为它们之间的最短路径的长度(注意不是欧式距离,应该是1,2等等的路径长度)。给定两个 POI < v i , v j > ∈ V <v_i,v_j> \in V <vi,vj>∈V ,如果 v i v_i vi 可以从 v j v_j vj 到达,我们使用 d ( v i , v j ) d(v_i , v_j ) d(vi,vj) 来表示最短路径的长度,即它们之间的 POI-wise 距离。
POI-Trajectory距离定义:POI与轨迹之间的最短距离。
然而,精确值的计算非常昂贵,因为我们需要计算 POI 与该轨迹的所有段之间的距离。为了减少计算开销,我们将 POI-Trajectory 距离定义为给定 POI 与轨迹中所有 POI 之间的最短 POI-wise 距离。即
最后,基于POI-wise和POI-trajectory得到Trajectory-wise相似性:
Trajectory-wise相似性的度量公式,由公式可以看出,当POI-Trajectory距离越大,相似度越小;距离越小,相似度越大。
3.3 Overall Framework
引出问题:给定路网无向图
G
=
(
V
,
E
)
G=(V,E)
G=(V,E)和轨迹集
τ
=
{
τ
1
,
τ
2
,
.
.
.
,
τ
n
}
\tau = \left\{ {{\tau _1},{\tau _2},...,{\tau _n}} \right\}
τ={τ1,τ2,...,τn},任务目标是对于
∀
τ
i
∈
T
\forall {\tau _i} \in T
∀τi∈T ,找到一个轨迹
τ
j
\tau_j
τj 使得相似度
S
i
m
(
τ
i
,
τ
j
)
Sim(\tau_i,\tau_j)
Sim(τi,τj)最小,并且
i
≠
j
i \ne j
i=j。
4 POI Representation Learning
在本节中,我们将介绍一个新的框架 TraNode2Vec,用于学习道路网络上的 POI 表示。
4.1 Objective Function
由于我们的目标是学习道路网络上的轨迹相似性,因此第一步是学习网络中 POI 的高质量呈现。在我们的工作中,我们的目标是通过第 3 节中定义的距离和相似度函数来学习轨迹感知 POI 嵌入。
整个目标函数要求能够帮助制定一种表示,即邻近POI与同一轨迹中的POI应该高度相关。
所以制定两种关系:
1.道路网络中POI 之间的拓扑关系,这将直接影响它们之间的距离。
2.两个 POI 是否属于同一个轨迹。
这两种关系可以形而上学地描述为 POI 的“邻居”,我们可以在其中使用能够捕获邻居属性的现有嵌入方法对它们进行建模。
然后为了捕捉这个“邻居”的属性,利用了NLP领域中的Skip-gram方法,采用他们的一个目标函数:
通过优化这个目标函数,给定 POI 的学习嵌入将与其邻居的嵌入有明确的联系。
最大化一个总体log概率。目标是满足上述两种关系,即“邻居”。1. 道路网络中POI 之间的拓扑关系,这将直接影响它们之间的距离。2.两个 POI 是否属于同一个轨迹。我的理解是,对每一个轨迹中的POI集合中的每一个点,对该点的领域信息进行捕获,找到该点的一个重要程度,从而丰富该点的信息。
上述公式的计算相当复杂,作者在精度和效率之间做了一个折衷,假设给的POI点的所有邻居都是独立分布的,则有:
上述概率项应用softmax:
作者提到上述方法可以用负采样减少计算时间。
4.2 Finding Neighbors
这里是对上述目标函数中的
N
s
(
v
)
N_s(v)
Ns(v)的由来的一个解释。
以前的网络嵌入方法,如 node2vec ,通过基于图的拓扑结构的随机游走算法找到这样的邻居。 然而,在我们的工作中,我们不仅需要考虑道路网络的拓扑结构,还需要考虑给定的现有轨迹。
采用随机游走算法,在给定的POI节点集的空间路网拓扑结构找到
N
s
(
v
)
N_s(v)
Ns(v)。公式如下:
随机游走是基于上一个节点的选择概率。s是上一个节点,x是当前节点。
由于我们的目标是学习轨迹感知的 POI 表示,我们需要在随机游走的转移概率定义中反映现有轨迹的影响。在之前的方法如node2vec中,下一个节点的概率仅由前两步访问的节点决定。 虽然这种方法可以捕获图形的拓扑结构,但它未能在我们的问题设置中考虑轨迹。
为了确保两个 POI 是否在同一轨迹中,我们需要设计一种随机游走算法,其中每一步的转移概率也受轨迹起始节点的影响。(设计一个适用于自己的随机游走算法)
为了达到这个目标,一个直接的解决方案是通过基于采样的方法。 我们不再只考虑前两个节点,而是根据前两个节点和起始节点来选择下一个节点。 前后两个节点之间的关系可以保持图的拓扑结构。 轨迹信息将保存在下一个节点和起始节点之间的连接中。
假设随机游走刚刚访问了当前节点 s 的边
(
t
,
s
)
(t, s)
(t,s),我们将转移概率定义为
π
s
x
=
α
(
t
,
x
)
∗
e
−
d
(
s
,
x
)
π_{sx} = α (t, x)*e^{−d(s,x)}
πsx=α(t,x)∗e−d(s,x),其中 POI s 和 x 之间的道路网络距离在
d
(
s
,
x
)
d(s, x)
d(s,x) 中产生。
α
(
t
,
x
)
α(t, x)
α(t,x) 是等式(7)中定义的采样概率:
根据前两个节点(t,s)和起始节点 (v) 来选择下一个节点(
x
i
x_i
xi)。结合下图可以更好理解。
其中,红色的线是轨迹,黑色的粗线是路网拓扑结构。v是起始节点,t是上一个时刻的节点,s是当前时刻的节点,
x
i
x_i
xi是下一个要选择的节点。
d
t
x
=
0
d_{tx} = 0
dtx=0 即 t 这个节点自己,POI为0(我认为这个最少POI是(t,x]左闭右开的,不包含t),且在轨迹中,所以概率为
1
p
\frac{1}{p}
p1.
d
t
x
=
1
d_{tx} = 1
dtx=1 即
x
1
x_1
x1这个点,因为 t 到
x
1
x_1
x1有路网连接,包含至少一个POI点,且在轨迹中,所以概率为
1
1
1.
d
t
x
=
2
d_{tx} = 2
dtx=2 即
x
2
x_2
x2,
x
4
x_4
x4两点,因为t 到
x
2
x_2
x2 要经过两个路段,包含至少两个POI点,且在轨迹中。t 到
x
4
x_4
x4 包含至少两个POI点,且在轨迹中。所以概率为
1
q
\frac{1}{q}
q1.
x
3
x_3
x3是0,因为他不属于轨迹内。
由此,我们可以确保路径中的所有节点都与起始节点 v 直接连接。此外,道路网络的拓扑结构也可以在我们的采样方法中保持。这里有一个疑问,随机游走图3中的轨迹是怎么得来的呢?是原始的训练轨迹吗?我认为是在一个整体的拓扑路网网络结构中,分布着一系列的轨迹(错综复杂,并且轨迹之间有交叉POI点),在这些已经分布的轨迹中进行随机游走,这样有可能有些POI点的邻居可能是另一条轨迹的POI点。
5 Graph-based Trajectory Embedding
接下来进行如何根据先前学习的 POI 表示来学习轨迹嵌入。
5.1 GNN-based Representation
虽然 POI 表示已经从空间网络中捕获了某些信息,但我们仍然需要将其纳入学习轨迹嵌入的过程中。 原因是我们需要从不同方面获取空间网络的信息:在POI表征学习过程中,利用空间网络使得连接的POI在空间网络中的embedding相似; 而在学习轨迹嵌入的过程中,我们需要更多来自空间网络的节点连接信息,以使轨迹表示更加稳定和鲁棒。
轨迹表示的主要挑战是搜索空间是所有 POI 之间组合的枚举。结果,我们无法获得足够的训练实例来覆盖所有可能的轨迹模式,从而导致数据稀疏问题。为了克服这个问题,我们可以利用图神经网络 (GNN) 将来自空间网络的更多信息合并到每个轨迹中。
我们在这里使用 GNN 的原因是它在 GNN 的目标函数中的拉普拉斯正则化项可以使连接的节点保持相同的标签,从而有助于缓解稀疏性问题。 更具体地说,GNN 的计算会产生给定节点的邻居信息。
在我们的任务中,我们可以通过使用具有相同轨迹集的更多 POI 来处理稀疏性。 在 GNN 的帮助下,对于一个轨迹中的每个 POI,我们可以强加其相邻的 POI 以生成轨迹嵌入。 这样,相似轨迹之间就会有更多的共同POI。 并且对于给定的轨迹,更容易在训练集中找到最相似的轨迹来满足我们在定义 3.1 中的目标。
为此,我们基于轨迹中每个 POI 强加的 POI 构建图作为 GNN 的输入图。 同时,我们可以使用空间网络为 GNN 构建相邻图,其中只有空间网络中的 POI 才会在相邻图中连接。 这样,我们可以直接结合空间网络来计算轨迹表示。
给定POI集合
V
=
{
v
1
,
v
2
,
.
.
.
,
v
m
}
V = \left\{ {{{\rm{v}}_1},{{\rm{v}}_2},...,{v_m}} \right\}
V={v1,v2,...,vm},权重边集合
E
E
E,构建邻接图
G
G
G 的如下:
尽管如此,这种格式的邻接图
G
G
G仍然不能准确反映POI之间的关系。 原因是
G
G
G 中的值不等于节点之间的影响性。
为了解决这个问题,我们在我们的工作中构建了拉普拉斯矩阵 A,其权重为
α
α
α 以控制邻居的影响:
I
I
I是单位矩阵,
N
o
r
m
(
G
)
Norm(G)
Norm(G)是正则化函数,权重
α
α
α 用以控制邻居的影响。
P
=
{
p
1
,
p
2
,
.
.
.
,
p
n
}
P = \left\{ {{p_1},{p_2},...,{p_n}} \right\}
P={p1,p2,...,pn}代表POI集合的嵌入
V
=
{
v
1
,
v
2
,
.
.
.
,
v
n
}
V = \left\{ {{{\rm{v}}_1},{{\rm{v}}_2},...,{v_n}} \right\}
V={v1,v2,...,vn},其中
p
i
=
f
(
v
i
)
p_i = f(v_i)
pi=f(vi)并且
f
(
∗
)
f(*)
f(∗)是由式3得到的POI嵌入函数。
由于每个 POI 及其邻居都是 V 的子集,我们只需要来自图 G 的子图来生成 GNN 的表示。 这里我们使用图神经网络 (GNN)模型作为编码器。给定一个POI节点
v
i
v_i
vi 以及他的邻居
N
(
v
i
)
=
{
v
i
1
,
v
i
2
,
.
.
.
,
v
i
k
}
N(v_i) = \left\{ {{v_{{i_1}}},{v_{{i_2}}},...,{v_{{i_{\rm{k}}}}}} \right\}
N(vi)={vi1,vi2,...,vik},由一层GNN生成的表征
P
i
~
\widetilde {{\rm P}i}
Pi
由下式定义:
A
i
A_i
Ai是POI
v
i
v_i
vi 的邻接矩阵
A
A
A 的行向量。
P
i
P_i
Pi 是POI
v
i
v_i
vi 和它的邻居
N
(
v
i
)
=
{
v
i
1
,
v
i
2
,
.
.
.
,
v
i
k
}
N(v_i) = \left\{ {{v_{{i_1}}},{v_{{i_2}}},...,{v_{{i_{\rm{k}}}}}} \right\}
N(vi)={vi1,vi2,...,vik}的一堆特征
{
p
i
,
p
i
1
;
p
i
2
;
⋯
,
p
i
k
}
\left\{ {{p_{i,}}{p_{{i_1};}}{p_{{i_2}; \cdots ,}}{p_{{i_k}}}} \right\}
{pi,pi1;pi2;⋯,pik}。
W
W
W 是将组合的 POI 特征投影到新空间的学习参数。
一旦获得了基于 GNN 的嵌入,我们就可以使用它们来构建带有序列模型的轨迹嵌入。 这里我们选择LSTM来完成这个任务。具体来说,我们使用最后一个时间步的输出作为轨迹嵌入。 给定网络表示 P = { p ~ 1 , p ~ 2 , . . . , p ~ n } P = \left\{ {{{\widetilde p}_{1,}}{{\widetilde p}_{2,}}{{...}_,}{{\widetilde p}_n}} \right\} P={p 1,p 2,...,p n} 的轨迹 τ \tau τ ,我们可以用 L S T M LSTM LSTM 生成它的嵌入 E E E 作为 L S T M ( P ) LSTM(P) LSTM(P),即 E = L S T M ( P ) E = LSTM(P) E=LSTM(P)其中 L S T M ( ⋅ ) LSTM(·) LSTM(⋅) 是 L S T M LSTM LSTM 的操作,它将在最后一个时间步输出嵌入向量。
5.2 Similarity Construction
通过得到训练集中所有轨迹的表示,我们然后指定目标函数。
根据我们对 Trajectory-wise similarity 的定义,我们的任务目标是为给定轨迹找到最相似的轨迹。 为了达到这个目标,我们使用轨迹嵌入向量之间的点积来表示它们之间的相似性。 假设轨迹
τ
i
τ_i
τi 和
τ
j
τ_j
τj 的嵌入向量为
E
i
E_i
Ei 和
E
j
E_j
Ej ,相似度得分
S
i
m
(
τ
i
,
τ
j
)
Sim(τ_i , τ_j )
Sim(τi,τj) 可以计算为等式(11)。
这里应该是值越小轨迹越相似。
5.3 Objective Function
我们使用成对损失来最大化最相似轨迹和给定轨迹之间的相似性。在我们的框架中,我们使用成对损失作为目标函数,这也广泛用于其他基于排名的应用程序。
给定轨迹训练集
T
t
r
T^{tr}
Ttr ,我们将目标函数定义为等式(12)。
其中,
τ
i
′
τ_i^{'}
τi′ 是轨迹
τ
i
τ_i
τi最相似的轨迹。而
1
(
∗
)
\mathbb{1(*)}
1(∗)是指示函数,条件满足则为1,否则为0。
对于等式(12)中的给定轨迹,我们需要计算所有其他轨迹与它之间的相似性。 这个过程将非常耗时,因为轨迹数据集通常变化很大。 为了减少训练过程中的计算时间,我们随机采样一个轨迹而不是遍历给定轨迹的所有轨迹。
6 Experiment
6.1 Experiment Setup
数据集:北京路网(BRN),纽约公路网 (NRN)。
参数设置:见论文。
评价指标:
Baseline:
Traj2vec:他们使用序列到序列模型来学习轨迹的表示。 均方误差被用作损失函数来优化他们的方法。
Siamese:该方法是一种基于孪生网络的时间序列学习方法。 他们使用交叉熵作为目标函数来训练框架。 我们用 LSTM 设置他们的 Siamese网络的主干,并使用与类似的设置来支持轨迹相似性计算。
NeuTraj:该方法修改了 LSTM 的结构,以在训练其框架的过程中学习网格的嵌入。 为了用它来支持我们的任务,我们在其框架中用 POI 替换了网格。
Traj2SimVec:该方法采用了一种新的损失来通过点匹配来学习轨迹相似性。 我们以类似的方式将他们的模型应用于道路网络,以了解轨迹之间的相似性。
6.2 Results
首先,我们的方法在所有指标上都优于所有其他方法,这可以验证我们方法的优越性。 主要原因是我们的框架可以利用来自道路网络的信息,而其他人只考虑网格的信息。
具体来说,我们的方法明显优于 NeuTraj。 改进来自两个方面:(i)POI 的嵌入生成独立于我们方法中的轨迹相似性学习,其中 NeuTraj 同时学习它们; (ii) NeuTraj 利用回归损失来学习两条轨迹之间的实际相似性,而 GTS 可以学习轨迹之间的偏序关系。 这两个因素都提高了轨迹相似度计算的性能。
此外,GTS 优于 Traj2SimVec 的另一个原因是我们使用嵌入向量的点积来计算两个轨迹之间的相似性,其中 Traj2SimVec 使用嵌入向量之间的绝对差异的 L2 范数。 使用点积计算相似度受到推荐领域协同过滤的启发,已被证明比线性运算更有效,因为它可以在间接连接的样本之间有效地传播信息。
最后,GTS 优于 Siamese 的优势在于 Siamese 中的交叉熵损失无法学习相似和不同轨迹之间的偏序关系。 Siamese 的目标是使相似轨迹之间的相似性尽可能大。 然而,这种优化过程会导致过度拟合。 同时,GTS 的损失函数可以避免这个问题,因为如果相似轨迹之间的预测相似度大于不同轨迹之间的预测相似度,它的值将为零?
6.3 Ablation Experiment
GTS/POI:在这种方法中,我们没有利用我们的 POI 嵌入作为轨迹相似性模型的输入。 嵌入矩阵与框架中的其他组件一起随机初始化和训练。
GTS/GNN:我们没有在 POI 上应用 GNN 进行进一步编码,而是使用我们的 POI 嵌入作为 LSTM 的输入来获得轨迹嵌入。
分析:
首先,我们可以发现利用我们的 POI 嵌入可以显着提高性能。 由于轨迹相似度这个目标函数不能直接约束GTS/POI中的POI embedding,这个过程中学到的POI embedding是随机的,没有可解释的物理意义。 那么POI嵌入之间的关系将是不确定的,POI的组合不能反映空间网络上现有轨迹的空间拓扑。 我们框架中轨迹相似性学习的两步策略可以解决这个问题:第一步学习的 POI 嵌入将包括空间网络和训练数据中现有轨迹的信息。 然后它们的组合将导致更合理的轨迹模式。
此外,我们可以观察到 GNN 绝对可以提高我们框架的性能。 通过将 GNN 应用于 POI 嵌入,它可以提供更丰富的空间网络信息。 原因是 GNN 中的邻接图与空间网络具有相同的拓扑结构。 此外,轨迹数据集中的数据稀疏性问题也可以借助 GNN 得到缓解。 对于网络中的每个节点,GNN 可以帮助强加所有连接的 POI 以生成轨迹嵌入。 这样,相似轨迹之间的共同POI数量就会更多。 并且对于给定的轨迹,更容易在训练数据集中找到它最相似的轨迹。
6.4 Parameter Analysis
如图 4(a) 所示,我们可以看到结果随着参数 α 的不同值而变化很大。 这证明 GNN 的使用对学习轨迹相似性的性能有显着影响。 GNN 会产生给定样本的邻居信息。 当 α = 0.1 时性能最好,这意味着给定 POI 与其邻居之间的关系达到轨迹相似性学习的最佳状态。 当 α = 0.0 时,GNN 将等同于 MLP,其中任何给定的 POI 都没有邻居。 通过比较 α = 0.1 和 α = 0.0 之间的结果,我们可以得出结论,对于给定的 POI,以适当的方式收集其邻域信息将有助于提高性能。 但是,当 α 的值太大时,性能会变差。 主要原因是在这种情况下,邻接图中的权重不能反映POI之间的实际关系。
轨迹嵌入维度的影响可以在图 4(b) 中找到。 很明显,轨迹嵌入的维度决定了它们在训练过程中可以包含多少信息。 如果维度太小,会导致欠拟合问题,模型不能很好地拟合训练数据集。 同时,如果该值太大,可能会导致过度拟合问题,模型无法在测试数据集上取得良好的性能。 过度拟合问题可以通过许多其他技术来解决,例如我们的成对损失和 GNN 组件。 这就是为什么当轨迹嵌入的维度很大时我们可以获得良好性能的原因。
7 Conclusion
在本文中,我们提出了第一个基于深度学习的空间网络轨迹相似度计算框架。 与现有方法相比,我们的框架能够通过考虑空间网络的结构来捕获轨迹的潜在路线信息,从而对可用训练实例的数量和系统错误引入的噪声点具有鲁棒性。 为此,我们的 GTS 框架首先采用轨迹感知随机游走方案来学习空间网络中每个 POI 的表示。 然后它利用基于 GNN 的模型结合 LSTM 来学习相似度计算的轨迹表示。 几个流行的现实生活数据集的实验结果表明我们的框架在有效性方面的优势。 未来的工作有几个有前途的方向:首先,扩展 GTS 以共同从轨迹中学习时空信息是很有趣的; 其次,GTS 还可以应用于其他相关问题,例如道路网络上的轨迹聚类和路线推荐。 第三,我们计划利用最新的图神经网络模型进一步提高 GTS 的整体性能。