1.本发明属于时空数据管理技术领域,具体涉及一种基于轨迹表示学习的相似度查询优化方法,基于路网分区的深度表示学习模型(pt2vec)和针对轨迹相似度查询的pt-gtree索引,用来实现大规模轨迹数据的相似度查询。
背景技术:2.随着物联网和车联网技术中位置获取的快速发展,已经产生了可用于描述运动物体的多样性和属性的轨迹数据。轨迹模式分析和管理已经成为近几十年来的一个关键问题,因为它支持许多领域和应用(例如,智能城市、智能交通、基于位置的服务、健康管理等)。由于最近人工智能技术的发展,可以利用人工智能技术以前所未有的规模分析轨迹数据,以评估智能交通系统(its) 中有关有效性、效率准确性和隐私的适用问题。传统的大规模轨迹数据研究主要集中在轨迹相似度计算、轨迹聚类、轨迹异常检测等方面,并使用r-tree索引和网格索引等技术建立索引结构。目前随着深度学习技术的快速发展,深度表示学习技术不仅能够从形式上对原始轨迹进行规范和简化还可以从冗余的原始信息中提取出有价值的部分,从而使轨迹模式分析和管理更加高效。
3.现有的轨迹相似度度量方法,如动态时间包装(dtw)、最长公共子序列(lcss) 和编辑距离实序列(edr)。然而,现有的传统方法通常采用动态规划来确定两个轨迹的成对点匹配的最佳对齐,这导致了二次计算复杂度。但是,当轨迹规模很大时这些方法不适用。
4.早期的轨迹表示方法大多是基于人工设计的特征来表示轨迹,因此这类方法也叫做轨迹特征提取。因为这类轨迹中包含了大量的时间、空间和语义信息。轨迹特征提取的核心思想是,利用已有的时空信息来挖掘新的特将原始的轨迹点序列转化为特征序列。但是目前轨迹数据的规模是非常大的,基于人工设计特征的轨迹表示方法依赖专家知识,而且对于不同的轨迹场景需要重新选择特征,且特征种类有限,因此增加了此类方法的应用难度。相反,如果使用一种模型自动学习出轨迹序列的相关信息,并生成一种轨迹表示,就可以解决以上问题。
技术实现要素:5.为了解决大规模轨迹相似度查询效率问题,本发明提出了一种基于轨迹表示学习的相似度查询优化方法,包括以下步骤:
6.s1:对路网进行分区,并对每个分区及边界边按顺序排号赋予标签单词,构建词汇表;
7.s2:获取多条原始轨迹,基于上述词汇表,对原始轨迹进行路网匹配,将匹配后的轨迹序列转换为词序列;
8.s3:根据分区结果构建pt-gtree,将步骤s2中匹配后的轨迹存储到pt-gtree 最小公共祖先节点中,针对轨迹相似性查询,利用pt-gtree对查询数据库进行剪枝,确定查询候选轨迹集;
9.s4:构建基于gru(门循环单元)的编码器-解码器模型,使用步骤s2中的词序列作为输入,经过编码器将其编码为向量v,然后通过解码器解码出一个输出序列y,同时设计一种基于空间和拓扑信息的损失函数对该模型进行训练;
10.s5:利用训练好的编码器-解码器模型将步骤s3中确定的候选轨迹嵌入到低维向量空间,将候选轨迹都表示成向量的形式,使用两个轨迹向量之间的欧氏距离来表示轨迹的相似程度,距离越小轨迹越相似。
11.进一步的,步骤s1中,利用多层划分算法对路网进行划分,具体的,
12.对路网的顶点和边缘进行粗化来减少网络规模;
13.使用kernighan-lin网络划分算法对粗化的路网图上进行划分形成多个子图;通过设定两个参数m和n进行划分,其中m为每个子图中路网节点的个数;n 为划分子图的数量;
14.对子图进行解粗,生成原始网络的最终分区,对最终分区和边界边按顺序编号赋予标签,每个标签对应相应的单词,这些单词组成词汇表。
15.进一步的,基于pt-gtree索引的轨迹相似度查询剪枝方法如下:
16.利用步骤s2中的分区结果构建pt-gtree,找到所有原始轨迹经过的所有叶子节点,找到所有叶子节点的最小公共祖先节点,并将原始轨迹存储到相应的树节点中;
17.给定一条待查询轨迹,首先找到待查询轨迹经过的所有叶子节点,再根据这些叶子节点找到待查询轨迹的最小公共祖先节点,将最小公共祖先节点和其孩子节点中存储的原始轨迹作为候选集。
18.进一步的,损失函数如下所示
[0019][0020][0021]
其中,w是将h
t
从隐藏状态空间投射到单词列表空间的投影矩阵,wu表示它的第u行,d(u,y
t
)表示单词之间最短的路网距离,λ是一个距离尺度参数,tk(y
t
)表示接近y
t
的k个单词,t(y
t
)表示拓扑结构上直接与目标单词相连的单词。
[0022]
进一步的,步骤s5中,将词序列输入到改进后模型的编码器,通过嵌入和3 层gru网络的计算单元将轨迹序列编码为一个低维的潜在向量v;
[0023]
解码器依此计算每个位置上的输出序列的条件概率;具体的,在某一位置上,解码器将该位置之前的输出序列和潜在向量转换为隐藏状态,该隐藏状态保留了词序列和输出序列的序列信息,然后通过隐藏状态预测该位置的输出,最后得到输出序列y,利用损失函数计算输出序列y和目标序列之间的损失,模型根据损失来调整参数,使模型更加准确。
[0024]
本发明的有益效果如下:
[0025]
本发明提供了一种基于轨迹表示学习的相似度查询优化方法,是利用深度学习方法,将轨迹嵌入到低维潜在向量,从而支持高效的轨迹相似度计算和查询。本发明提出了一种基于路网分区的轨迹表示学习模型pt2vec,pt2vec考虑了轨迹的空间特征和底层路网的拓扑约束将轨迹嵌入到低维向量空间,设计一个基于空间和拓扑信息的损失函数,加快模
型的训练,提高模型准确度,并有效的解决了大规模轨迹相似度计算时间过大的问题。同时为了减小轨迹查询空间,提高查询效率,建立一个pt-gtree索引对查询数据库中的轨迹进行剪枝。
[0026]
本发明的序列编码器-解码器模型的损失函数是基于路网拓扑和空间信息设计的,原始的序列编码器-解码器没有建模单词之间的拓扑和空间相关性,原始的损失函数以相同的权重惩罚输出单词,但是在路网空间中,更接近目标单词的输出单词比那些更遥远的输出单词更容易接受,当试图从解码器解码一个单词时,为每一个单词分配一个权重,单词的权重与其到目标单词的路网距离成反比,所以单词越接近目标单词,分配给它的权重越大。同时为了加快模型的训练,根据路网的拓扑结构进一步优化损失函数,因为除了和目标单词在拓扑结构上相连的单词,大多数其他的单词的权重应该非常小,所以只要损失函数能鼓励解码器将概率分配给和目标单词在拓扑结构上相连的单词。
附图说明
[0027]
为了便于本领域技术人员理解,下面结合附图对本发明作进一步的说明:
[0028]
图1为本发明提供的基于路网划分的轨迹表示学习和相似度查询方法的框架图;
[0029]
图2为实施例中的路网分区结构图;
[0030]
图3为实施例中的路网匹配图;
[0031]
图4为实施例中基于gru的编码器-解码器模型图;
[0032]
图5为实施例中损失函数单词之间的距离和拓扑关系图;
[0033]
图6为实施例中pt-gtree结构图;
具体实施方式
[0034]
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
[0035]
本发明提供了一种基于轨迹表示学习的相似度查询优化方法,利用基于路网分区的轨迹表示学习模型将轨迹嵌入到低维向量,并将文本问题中的基于gru 的编码器-解码器模型扩展到轨迹数据中,提出另一种针对大规模轨迹数据的基于gru的编码器-解码器模型,同时设计了一个基于空间和拓扑信息的损失函数提高模型准确性和效率。最后,建立了一个pt-gtree索引对查询数据库进行剪枝确定查询候选集,利用训练好的模型将候选轨迹转换为向量,使用两个轨迹向量之间的欧氏距离计算查询结果,表示轨迹的相似程度,距离越小轨迹越相似,该方法包括如下步骤:
[0036]
步骤1、对路网进行分区,得到分区结果,根据分区结果构建词汇表,其中,词汇表是由分区和边界边组成。之后,对原始轨迹进行路网匹配,将匹配后的轨迹序列转换为词序列。接下来构建基于gru的编码器-解码器模型,并设计一个基于空间和拓扑信息的损失函数对该模型进行训练。
[0037]
步骤1.1、利用多层划分算法对路网进行分区;
[0038]
首先通过对顶点和边缘进行粗化来减少网络规模,然后使用传统的网络划分算法,如kernighan-lin算法对粗化的图上进行划分。最后,对子图进行解粗,生成原始网络的
最终分区。同时划分子图的大小通过两个参数来确定的:m和n,其中m用来控制叶子节点,也就是最终划分完之后,每个子图中路网节点的个数。 n用来控制划分子图时,将一个大子图划分为几个小子图。
[0039]
然后,对最终分区和边界边按顺序编号,这些标签是相应的单词,这些单词组成词汇表。
[0040]
基于gru的编码器-解码器模型包括如下结构;
[0041]
步骤1.2、将上述步骤1.1中的最终分区和边界边按顺序编号,这些标签是相应的单词,这些单词组成词汇表。将路网匹配后的轨迹序列转换为词序列作为模型的输入;
[0042]
步骤1.3、将轨迹序列x输入到模型的编码器,通过嵌入和3层gru网络的计算单元将轨迹序列编码为一个低维的潜在向量v;
[0043]
步骤1.4、解码器依此计算每个位置t上的p(y
t
|y1,...,y
t-1
,v),具体来说,在位置t上,解码器将该位置之前的输出序列y1,...,y
t-1
和潜在向量v转换为隐藏状态h
t
,该状态保留了词序列x和输出序列y1,...,y
t-1
的序列信息,然后通过h
t
预测y
t
,最后得到预测的序列y。
[0044]
步骤1.5、模型训练,目标是得到一个概率最高的输出序列,设计了一个基于空间和拓扑信息的损失函数,用优化的方法降低损失,学习模型的参数,同时为了避免相同的上下文变量对模型性能的限制,给编码器-解码器模型加入注意力机制。
[0045]
步骤2、根据分区结果构建pt-gtree,将轨迹存储到其最小公共祖先节点中。之后,对于轨迹相似性查询,利用pt-gtree对查询数据库进行剪枝,确定查询候选集。最后,利用步骤1中训练好的表示学习模型将候选轨迹嵌入到低维向量,利用向量之间的欧氏距离计算结果。
[0046]
步骤2基于pt-gtree索引的轨迹相似度查询剪枝方法如下:
[0047]
步骤2.1、利用步骤1.1中的分区结果构建pt-gtree,找到轨迹经过的所有叶子节点,找到所有叶子节点的最小公共祖先节点,并将轨迹存储到相应的树节点中;
[0048]
步骤2.2、给定一条查询轨迹,首先找到查询轨迹经过的所有叶子节点,然后,根据这些叶子节点找到查询轨迹的最小公共祖先节点,将最小公共祖先节点和其孩子节点中存储的轨迹作为候选集;
[0049]
步骤2.3、将查询轨迹和候选集中的轨迹利用训练好的基于gru的编码器
‑ꢀ
解码器模型嵌入到低维向量,利用向量之间的欧氏距离计算查询结果。
[0050]
其中,步骤1.5中,基于空间和拓扑信息的损失函数设计如下:
[0051]
步骤1.5.1、在路网空间中,更接近目标的输出单词比那些更远的输出单词更容易接受,因此,为每一个单词分配一个权重,单词的权重与其到目标单词的路网距离成反比。
[0052]
步骤1.5.2、除了和目标单词在拓扑结构上相连的单词,大多数其他单词的权重都应该非常小,因此,不需要计算对数概率的精确值,只要能鼓励解码器将概率分配给和目标单词在拓扑结构上相连的单词。
[0053]
步骤1.5.3、因此,根据生成的由边界边连接的子分区,从目标单词开始,启发式地选择以宽度优先的方式接近目标单词的k个单词(记为tk(y
t
))。因此,这k个词主要来自于周围的子分区和边界边。此外,由于在拓扑结构上直接与目标单词相连的单词(记为t(y
t
))更重要,因此赋予它们更大的概率。并将其他单词的概率直接赋给0。
[0054]
实施例:
[0055]
如图1所示,基于路网划分的轨迹表示学习和相似度查询方法包括如下步骤:
[0056]
首先,对道路网络进行分区,得到道路网络分区的结果如图2所示。其中每一个分区都包含不大于m个的路网节点,图3显示了一个道路网络分区的示例,是一个分区。子分区和都有9个路网顶点,可以进一步递归分区,因此,是另一个子分区较小的分区,其单词标签分别为1、2、3 和4。考虑完整的分区p3,它有5个边界边,所以有它们的标签是5、6、7、8和9。因此,将分区和边界边组成词汇表,标签就是对应单词的标号。
[0057]
接下来将原始轨迹序列转换为单词序列,为了获得单词序列,需要将每个原始轨迹映射到道路网络上,得到一个路段序列。图3显示了将原始轨迹点映射到道路网络上的示例,匹配的轨迹表示为底层道路网络的边。以图2为例,对于分区p3,轨迹穿过两个子分区和一个边界边它们的标签分别为1、2、7,因此,t2的单词序列是{1、7、2}。同样,t1的单词序列是{1、5、3、8、4、9、2}。
[0058]
将轨迹转换为单词序列作为模型的输入,这里使用基于gru的编码器-解码器模型。如图4所示,存在两个序列x=《x1,...,xm》和y=《y1,...,yn》,其中xi表示输入序列的第i个标记,yi表示输出序列的第j个标记。序列编码器-解码器模型目的是将序列x编码为一个低维的潜在向量v,该向量表示v在解码器通过最大化条件概率来解码返回y(向量v保存了x中的序列信息)
[0059]
编码器输出的向量v编码了整p(y|x)个输入序列x=《x1,...,xm》的信息,解码器通过将向量v中的信息解码生成输出序列,其中隐藏状态h
t
捕获《x,y1,..,y
t-1
》中的顺序信息,因此为了解模型如何建立条件概率p(y|x)=p(y1,...,yn|x1,...,xm),使用链式规则得到联合概率函数
[0060][0061]
为了训练序列编码器-解码器模型,需要一个损失函数来优化目标,即使输出序列的联合概率最大化。为了达到最大概率,可以使用最大似然估计(mle),它相当于最小化负对数似然(nll)。因此,处理文本序列的损失函数被设计为如下方程式。
[0062]
maxp(y1,...,yn|x1,...,xm)=min-logp(y1,...,yn|x1,...,xm)
[0063][0064]
上述损失函数以相同的权重惩罚输出词。然而,在学习轨迹序列的表示时,接近目标词或拓扑连接到目标的单词应该有更高的输出概率,而不是相等。例如,在图5中,假设矩形是生成的叶子分区,并且的解码目标字是y1,那么在解码过程中以相等的概率惩罚输出的y3和y9显然不是一个很好的策略。像y2,y3和y5这样与y1相邻或更接近y1的单词应该有更高的概率。
[0065]
根据路网中的拓扑属性改进了损失函数,并利用其训练模型。
[0066]
除了和目标单元y
t
在拓扑结构上相连的单词大多数其他单词的权重都应该非常小。因此不需要计算对数概率的精确值,只要能够鼓励解码器将概率分配给和目标单词在
拓扑结构上相连的单词。则改进后的损失函数如下:
[0067][0068][0069]
其中,w是将h
t
从隐藏状态空间投射到单词列表空间的投影矩阵,wu表示它的第u行,d(u,y
t
)表示单词之间最短的路网距离,λ是一个距离尺度参数,tk(y
t
)表示接近y
t
的k个单词,t(y
t
)表示拓扑结构上直接与目标单词相连的单词。
[0070]
保留由递归过程生成的分区的每个级别,就可以以自上而下的方式为轨迹索引构建一个层次树结构-pt-gtree。根节点是整个路网。叶节点是用于生成单词的子分区,而这些子分区将没有进一步的子分区。非叶节点是分区过程的中间结果(子分区),同一层次上的节点是原道路网的完整划分。如图6所示,pt-gtree 是一棵高度平衡的树:(1)每个树节点代表一个子分区(2) 每个内部节点有n(≥2)个子节点(子分区);(3)每个叶节点最多包含m(≥1) 个顶点,所有叶节点出现在同一级别;(4)每个节点维护一个轨迹列表如图3所示,原始轨迹将被映射到路段上,并由路段序列表示。一个轨迹可以通过一个或多个叶子分区。对于每个轨迹t,找到可以以自下而上的方式包围t的最低级别节点,即找到t所遍历的子分区中最小公共祖先节点(lca)。然后将t插入到lca的轨迹列表中。
[0071]
如图6所示,构建的pt-gtree的叶节点为内部节点包括p
11
,此外,还有7条轨迹。对于t1,它通过和的子分区。这些节点的lca是所以将t1插入到中。类似地,其他的轨迹都被插入到相应的lca中。直观地看,高度相似的轨迹在空间上是相邻的。如果一个节点可以封装指定轨迹tq的所有段,那么节点空间外的轨迹可能不太相似,因此可以安全地过滤掉。t1是查询轨迹,可以看到其lca为其轨迹列表中包含另外两个轨迹。因此,候选轨迹设置为cndt={t4,t7}。进一步计算t1之间的向量欧氏距离,得到相似度查询结果。
[0072]
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。