一种针对活动轨迹的高效查询方法

文档序号:10724980阅读:1539来源:国知局
一种针对活动轨迹的高效查询方法
【专利摘要】本发明公开了一种针对活动轨迹的高效查询方法,提供了两种对于轨迹数据库的高效的相似性查询方法:活动轨迹相似性查询和有序活动轨迹相似性查询,同时也提出新的网格索引结构,即活动轨迹网格索引,本方法具有高效性及可扩展性,把地理距离和活动匹配都融合到相似性测量中,可以向用户返回更多的结果,具备更有效的可应用性和现实意义。
【专利说明】
一种针对活动轨迹的高效查询方法
技术领域
[0001 ]本发明涉及数据库、数据分析、数据挖掘、轨迹数据分析、轨迹数据挖掘领域,特别 是涉及一种针对活动轨迹的高效查询方法。
【背景技术】
[0002] 在传感技术、具备GPS功能的移动设备以及无线网络迅速发展的驱动下,产生了大 量描述移动对象的运动历史的数据,即轨迹。非常多的应用领域都会产生并管理这些数据, 这使得前一阶段大量研究工作都集中在各个层面的轨迹数据分析上,其中具备代表性的工 作有设计优秀的轨迹索引结构、高效的轨迹查询程序、不确定性管理、轨迹挖掘。
[0003] 尽管这些工作已近取得了卓越的成果,但它们都集中于轨迹的时空特性。而且轨 迹常常被描述为在二维或三维空间的一串由时间戳标记的地理位置,这意味着对轨迹数据 库来说,时空特性非常重要。然而,近年来,基于位置的网络应用非常热门,比如在线记录服 务(例如Foursquare),位置或路线分享(例如Facebook Place、Bikely)和带位置标签的媒 体分享(例如Flicker)。这些轨迹数据通过将位置和语义进行联系来重新定义并充实轨迹 数据库。从这些应用产生的数据我们不仅可以知道传统轨迹数据库中的用户在什么时间到 了什么地方,而且可以通过与位置关联的多媒体内容中提取用户的活动信息。
[0004]我们由轨迹数据来表示这种新型的包含在特殊地点的用户活动信息的轨迹数据, 即轨迹数据中每个地方都和用户所做的一系列活动(可能没有)相联系。
[0005] 由于活动轨迹变得无处不在而且仍然在快速增长,毫无疑问,分析这些轨迹数据 非常重要而且将会引出许多有趣的发现。由于轨迹数据库中的相似性查询仍然有广阔的应 用空间,所以人们长时间地研究它并且取得了许多成果,但这些成果并不适用于轨迹数据, 因为它们并不考虑用户的活动。

【发明内容】

[0006] 本发明主要解决的技术问题是提供一种针对活动轨迹的高效查询方法,具有可靠 性高、准确性强等优点,同时在数据库、数据分析、数据挖掘、轨迹数据分析、轨迹数据挖掘 的应用及普及上有着广泛的市场前景。
[0007] 为解决上述技术问题,本发明采用的一个技术方案是:
[0008] 提供一种针对活动轨迹的高效查询方法,其步骤包括:
[0009] 1)构造活动轨迹网格索引GAT:将待查询的数据集所在的空间区域划分为若干单 元格,并且依次构造1~(1-3、(1-2、(1-1、(1层网格,使得单元格具有层次性,(1为自然数,然后利 用空间填充曲线赋予每个单元格一个数字的ID号,使得多位空间的单元格与由整数域的一 维数字组成的ID号进行匹配;
[0010]在d层网格中为数据集中的每个活动α构造一个用于识别出包含目标查询活动的 区域的分层单元逆序表,然后聚集d-Ι层至1层网格中属于同一个父单元格的单元格,并且 为每一层网格构造构造不同级别h的分层单元逆序表,这样就为每个活动都构造了一个分 层单元逆序表HICL,其中,d层至1层网格所对应的分层单元逆序表的级别h依次递增,级别 最低的单元为叶子单元;
[0011] 为在d层网格的每个单元格中的每个活动α构造一个逆序活动表,所述逆序活动表 提供了在轨迹级别上的活动信息,所述逆序活动表1TL包括单元格中活动α的ID列表,即所 述逆序活动表提供了在单元格中包含活动α的所有轨迹;
[0012] 在主存储器中构造数据库中的每条轨迹Tr的轨迹活动概要TAS,所述轨迹活动概 要利用内存空间概括存储Tr中包含的轨迹,所述轨迹活动概要过滤掉与查询需求不匹配的 轨迹,且在过滤时不需要在磁盘中检索出全部的信息;
[0013] 为数据库中的每条轨迹Tr中的每个活动α构造一个活动倒排表APL,所述活动倒排 表包含活动*^^轨迹点列表;
[0014] 2)利用活动轨迹相似性查询ATSQ或者有序活动轨迹相似性查询0ATSQ方法,对活 动轨迹数据库进行相似性查询。
[0015] 在本发明一个较佳实施例中,当构造完分层单元逆序表后,设置存储在主存储器 中的分层单元逆序表的级别范围,并且设置存储在二级存储器中的分层单元逆序表的级别 范围,根据预设的存储预算Β和活动词汇表C的基数来判断分层单元逆序表的级别h,然后根 据预设的级别范围将分层单元逆序表分别存放在二级存储器或主存储器中,并选择满足的 h作为最大级别,把级别高的分层单元逆序表HICL存在主存储器中,把级别低的分层单元逆 序表存在二级存储器中。
[0016] 在本发明一个较佳实施例中,所述逆序活动表不包含每条轨迹上每个点的细节信 息,ITL存储在主存储器上,当存储器的内存不足时,先把所有的单元格分割成大小合适的 分区,然后在二级存储器中存储所有的分区,并在每次查询的时候取出目标查询位置周围 的分区存储到主存储器中。
[0017] 在本发明一个较佳实施例中,所述轨迹活动概要过滤掉与查询需求不匹配的轨迹 的具体步骤包括:在整个数据库中,根据发生频率将词汇表中的活动进行分类,并为这些活 动分配连续的数字ID号;把每条轨迹的活动的ID号进行分类,计算连续ID间的缺口,选择数 值最大的M-1个缺口作为分隔位置来将每条轨迹Tr的活动划分成Μ个区间1 = (1^ 12,...,
Im},使得全部区间间隔最小化 其中|la|定义为13中最大值ID和最小值ID的 , 差,并根据内存预算来选择Μ的值;每个区间只需要使用8字节的两位整数来存储,即N条轨 迹总共耗费8MN字节。
[0018] 在本发明一个较佳实施例中,所述利用活动轨迹相似性查询ATSQ对活动轨迹数据 库进行相似性查询的具体步骤包括:
[0019] (a. 1)定义所述活动轨迹相似性查询ATSQ为:给出一个活动轨迹的集合D、一个队 列Q和一个正整数K,活动轨迹相似性查询ATSQ将返回D和Q中有着数值最小的最短匹配距离 的K条优秀轨迹;
[0020] (a. 2)构造活动轨迹相似性查询ATSQ,对至少含λ条候选者轨迹的集合进行检索, 集合中包括目标查询活动的周边位置信息和至少一个目标查询活动;
[0021] (a. 3)为所有轨迹记录目前得到的前k小的最小匹配距离的&和下界距离Dlb,其 中,计算下界距离Dib是用一组有序表〇6118!!(9〇记录1]1个至今还未访问过的离91最近的单元 格,使得保持并更新下界距离Dlb,q是Q中的一个目标查询位置,把有序表CellSn( qi)初始化 为空,然后只要从PQ中删除了一个入口(111乜#,(^111〇4),就把(^1110从(^11~^〇中移 除,并把它的子单元的ID号插入到cells n(qi)中,根据mdist对cellsn(qi)中的前m个单元格 进行升序排序;当,就安全终止算法,否则将提取更多的候选者并重复上述步骤;
[0022] (a.4)确认每个候选者和目标查询内容是否完全匹配,给出一个候选者TreCS,CS 为候选者集合,先检查候选者的轨迹活动概要TAS是否覆盖了目标查询所有活动,即 V'<x e € TVU(_rr),然后获取每个候选者的活动倒排表APL,检查每个目标查询活 动是否都存在倒排表中,如果都在,则该条轨迹置为有效,否则,把它从候选者轨迹中删除; [0023] (a.5)为每个有效候选者计算最短匹配距离并插入到结果集中。
[0024]在本发明一个较佳实施例中,所述计算下界距离Dlb的具体步骤包括:
[0025] 设置输入参数变量Q,ce 11 sn( qi)和输出参数变量为Dib,其中qi e Q;
[0026] 将PQ队顶的最小距离赋值给mdist,将Dib设置为0;
[0027] 如果。611811(9〇不空,贝11先继续对〇611811(9〇中的每个单元进行循环计算,仓1|建一 个满足公式Pj. Φ =cj. Φ和公式d(qi,pj)=mdist(qi,cj)的点ρ」,ρ· Φ是与p有联系的活动 的集合;仓ll建一条轨迹Tri = (pi,p2,…,pm),将Dib+min(DmPm(qi,Tri),d(qi,pm))赋值给Dib; 如果cells n(qi)为空,将Dib+mdist赋值给Dib,其中,(qi,i>i) e Q,Cj为cellsn(qi)中的一个 单元,cj. Φ为与Cj有联系的活动的集合。
[0028]在本发明一个较佳实施例中,利用有序活动轨迹相似性查询0ATSQ方法对活动轨 迹数据库进行相似性查询的具体步骤包括:
[0029] (b.l)设置所述有序活动轨迹相似性查询的定义:当给出一个活动轨迹的集合於, 一个队列Q,一个正整数k,所述有序活动轨迹相似性查询将返回2>和〇中有着最小的Dm?(Q, Tr)的k条优秀轨迹,D"m(Q,Tr)是Tr到Q的有序最短匹配距离;
[0030] (b. 2)构造有序活动轨迹相似性查询0ATSQ,对至少含λ条候选者轨迹的集合进行 检索,集合中包括目标查询活动的周边位置信息和至少一个目标查询活动;
[0031] 查阅候选者Tr的APL以找出包含qi. Φ中任意活动的所有的点,只保存这些点中最 小和最大的位置索引,并把它设置为要查询的点啦的匹配索引界限祖8((11) = [113,1113],对每 对查询点的MIBs进行比较,如果存在两个查询点qi,q jeQ(i<j)满足MIB(qi).lb>MIB (qj) .ub,就删除Tr候选者集合中不符合qi-qj顺序的匹配的点qi和qj,Lb和Ub分别表示MIB 的下界和上界,,其中,因为每个点除了其位置属性外,还有一个属性是该点所在的位置可 以进行的活动,所以设置qi. Φ为点W的活动属性中含有的活动;
[0032] (b.3)通过最短匹配距离的算法获得Dmpm,所述Dmpm是取和子轨迹Tr[k,j]之间的最 小点匹配距离;
[0033] (b.4)计算有序最短匹配距离,设置一个队列Q: {qi,q2, · . ·,qm}和
[0034] 一个有效的
[0035] 候选者轨迹1>:{?1,?2,.。一}、一个111\11的矩阵6,矩阵6的元素6(1」)(1彡1彡111, 1彡j彡η)代表子队列Q[1,i]: {qi,q2,…,qi}和子轨迹
[0036] Tr[l,j]: {qi,q2, · · .,qj}之间的有序最短匹配距离0]11。111,6(111,11)就是(>)和1'1'之间的 Dmom信,且
[0038] 在本发明一个较佳实施例中,所述计算有序最短匹配距离的具体步骤包括:
[0039] 设置输入变量队列Q、候选者Tr、目前为止发现的第k个最小的Dm?,即设置输 出变量0""(〇,1^),并将矩阵中格式为6(0,*)的元素赋值为0;
[0040] 当i = (l··· |Q| )时,如果印JM) > 0|._则退出程序重新计算;
[0041] 当i = (l…|Q| )、j = (l…|Tr| )时:将G(i, j)的值置为+°°,当k=(j…1)时、G(i-1, k)辛+ ,贝lj计算D_(qi,Tr[k,j]),并且根据公式
更新G( i,j),最终获得有序最短匹配距离G( | Q |,| Tr |)。
[0042] 在本发明一个较佳实施例中,所述对至少含λ条候选者轨迹的集合进行检索的具 体步骤包括:
[0043] (&.2.1)用最佳优先搜索算法来获取候选者的集合,用(111虹^,(^111〇4)作为入 口来保持优先级队列PQ,其中,mdist是单元号为cell ID的单元格c到查询点q的最小距离,q eQ;
[0044] (a.2.2)把所有单元格插入到包含任意目标查询活动的最高级别的分层单元逆序 表,然后重复地把PQ的入口删除,即删除候选者中具有最小的mdist的查询点q 1;
[0045] (a. 2.3)如果被删除的入口不是叶子单元,则把它包含有取.?的子单元插回到PQ 中,自动删除不含要查询活动的单元,如果被删除的入口是叶子单元,则检查该单元的逆序 活动表中是否有活动,并把逆序活动表中的轨迹放到候选者集合CS中。
[0046] 在本发明一个较佳实施例中,所述计算最短匹配距离的步骤包括:
[0047] (a.5.1)设置输入参数变量查询点q、候选者Tr和输出变量Dmpm(q,Tr);;
[0048] (a.5.2)对于活动αeq.Φ在轨迹的活动倒排表Tr.APL中的点赋给CP;
[0049] (a.5.3)根据CP中的点的位置与q之间的距离进行分类;
[0050] (a.5.4)初始化用来存储查询关键词的每个子集的当前最短匹配距离的哈希表
[0051 ] (a. 5.5)当点 peCP 时:
[0052] (a. 5.5.1)如果根据q. Φ获得哈希表中与关键字集合相关的最小匹配距离 Φ!且:??. Φ]小于等于P和q之间的最短匹配距离d(p,q),贝丨J结束计算,否则,将ρ · Φ门 q. Φ的值赋给Ρ. Φ',初始化一个先进先出队列X来存储P · Φ'的子集,将Ρ. Φ '添加到先进 先出队列中,从L队列中删除队头元素,并将删除后的队列赋值给ks;
[0053] (8.5.5.2)当1^的值不为空时:如果;?^/沿5心7(知)且:?€[^^]:2 4(|?4),则跳出本 层循环,继续下一层循环,否则,将d(p,q)}赋值给哈希映射函数将ks的所有大小为 ks |-1的子集放进先进先出队列I,如果s是哈希表Η的一个键、ks不含于8且8不含于ks则 时,将ks U s赋值给key,将[.小f :?取s]}赋if[给咒_
[0054] (a ·5 ·6)得到最短匹配趴离~^(免·?>)=贤[中Φ]。
[0055] 本发明的有益效果是:本方法具有高效性及可扩展性,把地理距离和活动匹配都 融合到相似性测量中,可以向用户返回更多的结果,具备更有效的可应用性和现实意义。
【附图说明】
[0056]为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使 用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于 本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它 的附图,其中:
[0057]图1是本发明的在LA上使用ATSQ时因素 k的影响示意图;
[0058]图2是本发明的在NY上使用ATSQ时因素 k的影响示意图;
[0059] 图3是本发明的在LA上使用0ATSQ时因素 k的影响示意图;
[0060] 图4是本发明的在NY上使用0ATSQ时因素 k的影响示意图;
[0061 ]图5是本发明的在LA上使用ATSQ时因素| Q |的影响示意图;
[0062]图6是本发明的在NY上使用ATSQ时因素|Q|的影响示意图;
[0063]图7是本发明的在LA上使用0ATSQ时因素|Q|的影响示意图;
[0064]图8是本发明的在NY上使用0ATSQ时因素|Q|的影响示意图;
[0065]图9是本发明的在LA上使用ATSQ时因素|q. Φ |的影响示意图;
[0066]图10是本发明的在NY上使用ATSQ时因素|q.? |的影响示意图;
[0067]图11是本发明的在LA上使用0ATSQ时因素|q.? |的影响示意图;
[0068]图12是本发明的在NY上使用0ATSQ时因素|q.? |的影响示意图;
[0069]图13是本发明的在LA上使用ATSQ时因素 S(Q)的影响示意图;
[0070]图14是本发明的在NY上使用ATSQ时因素 S(Q)的影响示意图;
[0071]图15是本发明的在LA上使用0ATSQ时因素 S(Q)的影响示意图;
[0072]图16是本发明的在ΝΥ上使用0ATSQ时因素 S(Q)的影响示意图;
[0073]图17是本发明的在LA上使用0ATSQ时因素|D|的影响示意图;
[0074]图18是本发明的在NY上使用0ATSQ时因素|D|的影响示意图;
[0075]图19是本发明的在LA上使用0ATSQ时因素分割粒度的影响示意图;
[0076]图20是本发明的在NY上使用0ATSQ时因素分割粒度的影响示意图。
【具体实施方式】
[0077]下面将对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施 例仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通 技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范 围。
[0078]请参阅图1-20,本发明实施例包括:
[0079] -种针对活动轨迹的高效查询方法,提出了两种对于轨迹数据库的
[0080] 高效的相
[0081 ] 似性查询方法:活动轨迹相似性查询(Activity Trajectory Simility Query, ATSQ,下文均以ATSQ表示)和有序活动轨迹相似性查询(Order-sensitive Activity Trajectory Simility Query,0ATSQ,下文均以0ATSQ表不)。
[0082]同时,也提出新的网格索引结构--活动轨迹网格索引(Gridindex of Activity Trajectories,GAT),它可以分层地组织轨迹段和相关活动信息;另外,提出由候选者检索 和确认过程组成的最佳优先搜索架构。
[0083] GAT的构造方式是:首先,我们通过将整个空间区域划分为的方格单元构造 d层网 格,空间区域就是指我们要查询的数据集所在的空间区域,例如,要查询的轨迹是苏州出租 车的运行轨迹,那么空间区域就指苏州。
[0084] 然后按照类似的方式进一步依次构造(d-Ι)层网格,(d-2)网格,一直到1层网格, 这使得单元格具有层次性。然后使用空间填充曲线为每个单元格设计一个独有的数字ID 号,这就将多位空间的单元格与整数域的一维数字匹配起来。此外,GAT主要由以下四要素 组成:
[0085] (1)分层单元逆序表(Hierarchical Inverted Cell List,HICL)。
[0086] 为了识别出包含要查询的活动的区域,我们首先在d层网格中为数据集中的每个 活动构造一个单元逆序表;之后,我们聚集(d-Ι)层网格中属于同一个父单元格的单元格构 造级别更高的单元逆序表;重复以上过程一直到1层网格。最终,我们为每个活动都构造了 一个分层的单元逆序表。接下来,我们讨论该结构的存储。
[0087] 因为活动的数量非常多,在主存储其中存储全部的HICL是不可行的。在这种情况 下,我们只能把级别高的HICL存在主存储器中而把级别低的存在二级存储器中。级别判定 是根据给出的存储预算B和活动词汇表C的基数,我们来评估级别h,级别更高的将被放到二 级存储器中,并选择满足的h作为最大级别,例如:。
[0088] (2)逆序活动表(Inverted Trajectory List, ITL)。
[0089] 在d层网格的每个单元格中,我们为其中的每个活动α构造一个逆序活动表,即包 含了单元格中α的活动的ID列表。该结构提供了在轨迹级别上的活动信息,如:在单元格都 有哪些轨迹包含了α。由于不是包含每条轨迹上每个点的细节信息,相比于原始数据集ITL 的规模更小。因此,在大多情况下,ITL都可以在主流服务器的主存储器上存储。不仅如此, 在内存有限的情况下,我们可以把所有的单元格分割成大小合适的分区,在二级存储器中 存储所有的分区,并在每次查询的时候取出要查询的位置附近的分区存储到主存储器中。
[0090] (3)轨迹活动概要(Trajectory Activity Sketch,TAS)〇
[0091] 对数据库中的每条轨迹Tr,我们在主存储器中构造它的活动概要。活动概要通过 用比较小的内存空间概括存储Tr中包含的轨迹。该数据结构无需从磁盘中检索全部的细节 信息就可以迅速过滤掉与查询需求不匹配的轨迹。
[0092] 为了达到这个目的,我们把整个数据库中根据发生频率将词汇表中的活动分类, 并为这些活动分配连续的数字ID号。我们将每条轨迹Tr的活动划分成Μ个区间,1 = (1^ 12, . . .,Im},这样就可以使全部区间间隔最小化,如Σρ?Ι1」其中| Ia|定义为la中最大和最 f 小的ID的差。这样就可以尽可能压缩区间使得简化效果最大化。我们根据内存预算来选择Μ 的值。选择较大的Μ值(即,更多区间)是为了使简化效果更好。每个区间只需要两位整数来 存储(将使用8字节),因此,N条轨迹总共耗费8MN字节。
[0093] 为了找出想要的部分,我们首先把每条轨迹的活动ID号进行分类,然后计算连续 ID间的缺口,最后选择最大的M-1个缺口作为分隔位置来将所有活动分成Μ个区间。不难证 明这是最理想的分割,因为用分割点(用缺口 g')而不是点(用却空g)重定位将导致区间的 总规模增加 g-g'。
[0094] (4)活动倒排表(Activity Posting List,APL)〇
[0095] 对数据库中的每条轨迹Tr,我们为Tr中的每个活动α构造一个活动倒排表,即包含 α的轨迹点列表。由于该数据结构的大量数据需求,我们将它存储在磁盘中,并且只有当需 要计算查询距离时才取出。
[0096] 这些准备工作完成后,为了对活动轨迹数据库进行高效的相似性查询,我们先提 出搜索方法。
[0097] 首先,我们了解一下该算法中的一个重要概念:活动轨迹相似性查询(ATSQ)。其定 义是给出一个活动轨迹的集合恐,一个队列Q,一个正整数k,ATSQ将返回2)与Q有着最小的最 短匹配距离的k条优秀轨迹。
[0098] 搜索算法的基本结构如下:第一,对至少含λ条候选者轨迹的集合进行检索,集合 中包含靠近要查询位置的地方和至少一个要查询的活动。第二,确认每个候选者要查询的是 否完全匹配。最后,为每个有效候选者计算最短匹配距离并插入到结果集中。在这个过程中, 为所有"看不见的"轨迹记录目前为止得到的最小的k个小匹配距离(ΜΜ_??.Ιπ)和下届距离 (Dlb)。只要,就立即安全终止算法,因为所有这些"看不见的"轨迹都不可能成为 前k条结果。否则我们将拿来更多的候选者并重复上述过程。该算法中有以下四处关键点:
[0099] (1)候选者检索。
[0100] 我们用最佳优先搜索算法来获取候选者集合。特别地,用(mdist,cellID,q)作为 入口来保持优先级队列(piorityqueue,PQ),其中mdist是单元号为〇61110的单元格〇到查 询点qeQ的最小距离。检索过程从把所有单元格插入到包含任意要查询的活动的HICL的最 高级。然后和最佳优先搜索相似,算法重复性地把PQ的入口删除,即删除关于一些查询点 具有最小的mdist的候选者。如果它不是叶子单元(HICL中的最低级的单元),把它包含有 q: · Φ的孩子单元插回到PQ中。这样,不含要查询活动的单元将被自动删除。一旦被删除的 入口是叶子单元,就检查该单元的ITL(如果存在)q中是否有活动并把ITL中的轨迹放到候 选者集合CS中。
[0101] (2)计算下界距离。
[0102] 为了保持并更新下界距离Dlb,用一组有序表cellSn(qi)记录m个至今还未访问过 的离最近的单元格。首先,把列表初始化为空。然后无论何时从PQ中删除了一个入口 (mdist,cell ID,q),我们就先把cell ID从cel lsn(qi)中移除,并把它的子单元的ID号插入到 cellsn(qi)中。cellsn(qi)中的单元格可以根据它们的mdist进行升序排序,而且只使用头m 个单元。算法1讲述了如何使用这些单元来得到更严格的下界距离,具体如下:
[0105] (3)确认候选者。
[0106] 给出一个候选者Tr e CS,我们先检查它的TAS是否覆盖了要查询的所有活动,即 Va e ρ.Φ?扣e ΓΑ?(τν)。显然,这可能产生假阳性结果,g卩TAS覆盖了查询活动但轨迹却 不正确。但它可以确保没有漏报。
[0107] 为进一步评估假阳性结果,我们获取每个候选者的活动倒排表(Activity Posting List,APL)来检查每个要查询的活动是否都存在倒排表。如果是,该条轨迹置为有 效;否则,把它从候选者轨迹中删除。
[0108] (4)计算最短匹配距离。
[0109] 提出一个更智能且更高效的算法2来计算最短匹配距离,如下:输入:查询点q,候 选者Tr
[0110] 输出:D聊(q,Tr)
[0111] 对于aeq. Φ在Tr.APL中的点赋给CP;
[0112] 根据和q之间的距离对CP中的点进行分类;
[0113] 初始化哈希表況来存储查询关键词的每个子集的当前最短匹配距离;

[0116] 有时候用户可能对活动顺序和要查询的相同的轨迹更感兴趣,因此,我们把查询 方法扩展成有序查询方法。该方法主要有以下三大部分内容。
[0117] (1)有序相似性查询。
[0118] 有序活动轨迹相似性查询(0ATSQ)。其定义是给出一个活动轨迹的集合U,一个队 列Q,一个正整数k,0ATSQ将返回D与Q有着最小的D m?( Q,Tr)的k条优秀轨迹。
[0119] (2)重新检索和确认报考者。
[0120] 我们用最短匹配距离作为有序最短匹配距离的下界,因此,我们仍然采用之前讲 述的查询算法中检索候选者和确认候选者的方法。然而,对0ATSQ来说,由于额外的顺序约 束,这种方法得到的候选者结果可能不是有序的匹配结果。因此我们在此之后进一步确认 候选者。
[0121] 最后,为每个要查询的点qi,我们查阅候选者Tr的APL,来找出包含qi · Φ中任意活 动的所有的点。然后只保存这些点中最小和最大的位置索引,把它叫做的匹配索引界限, 用1〇8^0 = [113,1113]。最后我们对没对查询点的1188进行比较。如果这儿存在两个查询点 qi,qjeQ(i<j)满足MIB(qi).lb>MIB(qj).ub,就把Tr候选者集合中删除因为匹配的点q i和 Qj不符合qi-qj的顺序。
[0122] (3)计算有序最短匹配距离。
[0123] 我们用动态规划提出了更高效的计算方法。给出一个队列Q: {qi,q2, ...,qm}和一 个有效的候选者轨迹Tr: {P1,p2,. . .,pm},我们定义一个m Xη矩阵G,它的元素 G( i,j) (1彡i 彡m,1彡j彡η)代表子队列Q[1,i]: {qi,q2,…,qi}和子轨迹Tr[l,j]: {ρι,ρ2,…,qj}之间的 D_,G (m,η)就是Q和Tr之间的D_值,且
[0125] 其中Dmpm是qdP子轨迹Tr[k,j]之间的最小点匹配距离。可以通过查询方法中(4) 中的最短匹配距离算法计算得到。
[0126] 计算过程如下所示:
[0129] 所述针对活动轨迹的高效查询方法,把地理距离和活动匹配都融合到相似性测量 中,这样我们就可以向用户返回更多的结果,例如目的地建议和旅行计划。也就是说,具备 更有效的可应用性和现实意义。
[0130] 此外本方法具有高效性及可扩展性,基于真实的轨迹数据库(Foursuuare分别在 Los Angeles(LA)和New York(NY)的在线搜索记录,基本情况如表1)进行了广泛的实验研 究,并把我们的算法和三种基准算法(基于逆序表(Inverted List,IL)的算法,基于R树(R-tree,RT)的算法,基于IR树(IR-tree,IRT)的算法)都在不考虑顺序和有序的情况下进行了 性能比较以及内存消耗评估。对比数据库状态如表1所示:
[0132]对比参数值默认设置如表2所示:
[0134] 具体影响因素如下:
[0135] (l)k 的影响
[0136] k是返回结果的轨迹的条数。本方法提出的索引结构一一GAT和其他三种基本算法 的索引相比较,其运行时间随k的不同的变化如图1所示。从图1中可以看出,结果如下:
[0137] A. GAT比E快至少一个数量级,比RT和IRT快至少4-5倍;
[0138] B.由于IL是找出和要查询的活动相匹配所有的候选者轨迹然后计算所有候选者 的匹
[0139] 配距离,所以对所有的k值它的运行时间都一样,而其他三种方法的运行时间随k 值增加而增加;
[0140] C.尽管NY数据集的轨迹数量更多,除了RT外的所有算法在NY上的运行时间都比LA 短。
[0141] (2)|Q| 的影响
[0142] |Q|为要查询的位置的数量。各查询算法随着|Q|的不同其性能如图2所示。从图2 中可以看出:
[0143] A.我们所提出的方法比其他的基准方法性能都好;
[0144] B.随着|Q|的增加,RT,IRT和GAT都会花费更多时间;
[0145] C.在不考虑顺序和有序情况下,IL的性能很不同,在不考虑顺序的情况下,IL随着 Q |的增加运行时间变得更短,但在有序时,IL随着| Q |的增加运行时间却变得更长。
[0146] (3)|q.cD| 的影响
[0147] |q.?|为每个要查询的点的活动数量。实验结果如图3所示。从图3中可以看出:除 了RT之外的其他方法随着|q.?|的增加,花费的时间都更少。
[0148] (4)S(Q)的影响
[0149] S(Q)为查询的直径长,即所有要查询的点中一对距离最大的点之间的距离,也就 是说,
。实验结果如图4所示,从中我们可以看到:IL不受参数δ (Q)变化的影响,而其他三种方法都随着WQ)的增加效率变得更低。
[0150] (5)_的影响
[0151] 为评估各算法的可扩展性,我们从NY数据集中抽样取出不同规模(轨迹数量不同) 的数据集。实验结果如图5所示,从中可以看出:
[0152] A.四种方法的时间花费都随着数据集的规模增大呈线性或非线性增长;
[0153] B.无论是在不考虑顺序还是有序的情况下,我们所提出的方法相比其他方法都有 更好的可扩展性。
[0154] (6)分割粒度的影响。
[0155] 分别将分割粒度设置为 32X32(d = 5),64X64(d = 6),128X128(d = 7)W&256X 256(d = 8)。我们记录下使用GAT的ATSQ(不考虑顺序)和0ATSQ(有序)的运行时间以及内存 开销(Memory Cost)。实验结果如图6所示,从图中可以看出:
[0156] A.分割粒度越大,ATSQ和0ATSQ的性能都更好,但是随着分割粒度增加,尤其是超 过64以后,性能并无明显提尚;
[0157] B.内存开销随着分割粒度的增加而增加,但由于我们会把级别d>6的单元格放在 磁盘中,因此分割粒度超过64以后,内存开销的增加更为平缓。
[0158] 以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发 明说明书内容所作的等效结构或等效流程变换,或直接或间接运用在其它相关的技术领 域,均同理包括在本发明的专利保护范围内。
【主权项】
1. 一种针对活动轨迹的高效查询方法,其特征在于,步骤包括: 1) 构造活动轨迹网格索引GAT:将待查询的数据集所在的空间区域划分为若干单元格, 并且依次构造1-,(1-3、(1-2、(1-1、(1层网格,使得单元格具有层次性,(1为自然数,然后利用空 间填充曲线赋予每个单元格一个数字的ID号,使得多位空间的单元格与由整数域的一维数 字组成的ID号进行匹配; 在d层网格中为数据集中的每个活动α构造一个用于识别出包含目标查询活动的区域 的分层单元逆序表,然后聚集d-1层至1层网格中属于同一个父单元格的单元格,并且为每 一层网格构造构造不同级别h的分层单元逆序表,运样就为每个活动都构造了一个分层单 元逆序表HI化,其中,d层至1层网格所对应的分层单元逆序表的级别h依次递增,级别最低 的单元为叶子单元; 为在d层网格的每个单元格中的每个活动α构造一个逆序活动表,所述逆序活动表提供 了在轨迹级别上的活动信息,所述逆序活动表1TL包括单元格中活动α的ID列表,即所述逆 序活动表提供了在单元格中包含活动α的所有轨迹; 在主存储器中构造数据库中的每条轨迹化的轨迹活动概要TAS,所述轨迹活动概要利 用内存空间概括存储化中包含的轨迹,所述轨迹活动概要过滤掉与查询需求不匹配的轨 迹,且在过滤时不需要在磁盘中检索出全部的信息; 为数据库中的每条轨迹Tr中的每个活动α构造一个活动倒排表APL,所述活动倒排表包 含活动α的轨迹点列表; 2) 利用活动轨迹相似性查询ATSQ或者有序活动轨迹相似性查询OATSQ方法,对活动轨 迹数据库进行相似性查询。2. 根据权利要求1所述的一种针对活动轨迹的高效查询方法,其特征在于,当构造完分 层单元逆序表后,设置存储在主存储器中的分层单元逆序表的级别范围,并且设置存储在 二级存储器中的分层单元逆序表的级别范围,根据预设的存储预算Β和活动词汇表C的基数 来判断分层单元逆序表的级别h,然后根据预设的级别范围将分层单元逆序表分别存放在 二级存储器或主存储器中,并选择满足的h作为最大级别,把级别高的分层单元逆序表HI化 存在主存储器中,把级别低的分层单元逆序表存在二级存储器中。3. 根据权利要求1所述的一种针对活动轨迹的高效查询方法,其特征在于,所述逆序活 动表不包含每条轨迹上每个点的细节信息,I化存储在主存储器上,当存储器的内存不足 时,先把所有的单元格分割成大小合适的分区,然后在二级存储器中存储所有的分区,并在 每次查询的时候取出目标查询位置周围的分区存储到主存储器中。4. 根据权利要求1所述的一种针对活动轨迹的高效查询方法,其特征在于,所述轨迹活 动概要过滤掉与查询需求不匹配的轨迹的具体步骤包括:在整个数据库中,根据发生频率 将词汇表中的活动进行分类,并为运些活动分配连续的数字ID号;把每条轨迹的活动的ID 号进行分类,计算连续ID间的缺口,选择数值最大的M-1个缺口作为分隔位置来将每条轨迹 Tr的活动划分成Μ个区间1 =山,12,. . .,Im},使得全部区间间隔最小其中 Ia|定义为la中最大值ID和最小值ID的差,并根据内存预算来选择Μ的值;每个区间只需要使 用8字节的两位整数来存储,即Ν条轨迹总共耗费8ΜΝ字节。5. 根据权利要求1所述的一种针对活动轨迹的高效查询方法,其特征在于,所述利用活 动轨迹相似性查询ATSQ对活动轨迹数据库进行相似性查询的具体步骤包括: (a. 1)定义所述活动轨迹相似性查询ATSQ为:给出一个活动轨迹的集合D、一个队列Q和 一个正整数K,活动轨迹相似性查询ATSQ将返回D和Q中有着数值最小的最短匹配距离的K条 优秀轨迹; (a. 2)构造活动轨迹相似性查询ATSQ,对至少含λ条候选者轨迹的集合进行检索,集合 中包括目标查询活动的周边位置信息和至少一个目标查询活动; (a. 3)为所有轨迹记录目前得到的前k小的最小匹配距离和下界距离化b,其中,计算 下界距离化b是用一组有序表cellsn(qi)记录m个至今还未访问过的离qi最近的单元格,使得 保持并更新下界距离化b,q是Q中的一个目标查询位置,把有序表cellsn(qi)初始化为空,然 后只要从PQ中删除了一个入口(111山3*,061110,9〇,就把061110从06113。^〇中移除,并把 它的子单元的ID号插入到cellsn(qi)中,根据mdist对cellsn(qi)中的前m个单元格进行升 序排序;当化。< 1)11,,就安全终止算法,否则将提取更多的候选者并重复上述步骤; (a. 4)确认每个候选者和目标查询内容是否完全匹配,给出一个候选者Tr e CS,CS为候 选者集合,先检查候选者的轨迹活动概要TAS是否覆盖了目标查询所有活动,即 ¥货E Q取化助eTAS(Tr),然后获取每个候选者的活动倒排表APL,检查每个目标查询活动 是否都存在倒排表中,如果都在,则该条轨迹置为有效,否则,把它从候选者轨迹中删除; (a.5)为每个有效候选者计算最短匹配距离并插入到结果集中。6. 根据权利要求1所述的一种针对活动轨迹的高效查询方法,其特征在于,所述计算下 界距离化b的具体步骤包括: 设置输入参数变量Q,ce 11 sn (qi)和输出参数变量为化b,其中qi e Q; 将PQ队顶的最小距离赋值给mdist,将化b设置为Ο; 如果cellsn(qi)不空,则先继续对cellsn(qi)中的每个单元cj进行循环计算,仓リ建一个 满足公式Pj.Φ=Cj.Φ和公式d(qi,pj)=mdist(qi,Cj)的点pj,pj.Φ是与p有联系的活动的 集合;包I建一条轨迹化i=(pi,P2, . . .,Pm),将Dib+min(Dmpm(qi,T;Ti),d(qi,pm))赋值给Dib;如 果cellsn(qi)为空,将Dib+mdist赋值给Dib,其中,(qi,巫 i)eQ,cj为cellsn(qi)中的一个单 元,Cj. Φ为与Cj有联系的活动的集合。7. 根据权利要求6所述的一种针对活动轨迹的高效查询方法,其特征在于,利用有序活 动轨迹相似性查询OATSQ方法对活动轨迹数据库进行相似性查询的具体步骤包括: (b.l)设置所述有序活动轨迹相似性查询的定义:当给出一个活动轨迹的集合15,一个 队列Q,一个正整数k,所述有序活动轨迹相似性查询将返回巧和Q中有着最小的Dmom(Q,化) 的k条优秀轨迹,Dm?(Q,Tr)是化到Q的有序最短匹配距离; (b.2)构造有序活动轨迹相似性查询OATSQ,对至少含λ条候选者轨迹的集合进行检索, 集合中包括目标查询活动的周边位置信息和至少一个目标查询活动. 查阅候选者化的A化W找出包含qi.O中任意活动的所有的点,只保存运些点中最小和 最大的位置索引,并把它设置为要查询的点qi的匹配索引界限^8站)=[化,油],对每对查 询点的MIBs进行比较,如果存在两个查询点qi,qjeQ(i<j)满足MIB(qiMb>MIB(qj).ub, 就删除化候选者集合中不符合qi一qj顺序的匹配的点qi和qj,化和ub分别表示MIB的下界和 上界,,其中,因为每个点除了其位置属性外,还有一个属性是该点所在的位置可w进行的 活动,所W设置qi. Φ为点Pi的活动属性中含有的活动; (b.3)通过最短匹配距离的算法获得Dmpm,所述Dmpm是qi和子轨迹Tr比,j]之间的最小点 匹配距离; (b.4)计算有序最短匹配距离Dmnm,设置一个队列Q: {qi,q2, . . .,qm}和一个有效的候选 者轨迹化:{pi,P2,. .Pm}、一个mXn的矩阵G,矩阵G的元素 G(i,代表子 队列Q[1,i]: {qi,q2, . . .,qi}和子轨迹Tr[l,j]: {qi,q2, . . .,qi}之间的有序最短匹配距离 Dm? ,G(m, η)就是〇和1'1'之间的Dm?值,且(1)。8. 根据权利要求7所述的一种针对活动轨迹的高效查询方法,其特征在于,所述计算有 序最短匹配距离的具体步骤包括: 设置输入变量队列Q、候选者Tr、目前为止发现的第k个最小的Dm?,即I媒。W.,设置输出变 量0"?(9,化),并将矩阵中格式为6(0,*)的元素赋值为0; 当i = (1…IQI)时,如果(艰,听1) >巧,。,。则退出程序重新计算; 当i = |Q| )、j = |化I)时:将G(i, j)的值置为+°°,当k=(j…l)、G(i-l,k)声时, 贝1J计算Dmpm(化,Tr[k,_j]),并且根据公壬更 新G( i,j),最终获得有序最短匹配距离G( I QI,I Tr I)。9. 根据权利要求5或7所述的一种针对活动轨迹的高效查询方法,其特征在于,所述对 至少含λ条候选者轨迹的集合进行检索的具体步骤包括: (a. 2.1)用最佳优先捜索算法来获取候选者的集合,用(mdist, cell ID, qi)作为入口来 保持优先级队列PQ,其中,mdist是单元号为celllD的单元格c到查询点q的最小距离,qeQ; (a. 2.2)把所有单元格插入到包含任意目标查询活动的最高级别的分层单元逆序表, 然后重复地把PQ的入口删除,即删除候选者中具有最小的md i S t的查询点qi; (a. 2.3)如果被删除的入口不是叶子单元,则把它包含有qi. Φ的子单元插回到PQ中,自 动删除不含要查询活动的单元,如果被删除的入口是叶子单元,则检查该单元的逆序活动 表中是否有活动,并把逆序活动表中的轨迹放到候选者集合CS中。10. 根据权利要求5或7所述的一种针对活动轨迹的高效查询方法,其特征在于,所述计 算最短匹配距离的步骤包括: (a. 5.1)设置输入参数变量查询点q、候选者Tr和输出变量Dmpm(q,Tr); (a.5.2)对于活动aeq . Φ在轨迹的活动倒排表Tr.A化中的点赋给CP; (a. 5.3)根据CP中的点的位置与q之间的距离进行分类; (a.5.4)初始化用来存储查询关键词的每个子集的当前最短匹配距离的哈希表货; (a.5.5)当点 peep 时: (a.5.5.1)如果根据q.O获得哈希表中与关键字集合相关的最小匹配距离糸>'!聲Φ!且 :村如發;!小于等于P和q之间的最短匹配距离d(p,q),则结束计算,否则,将p.Onq.O的值 赋给P. φ/,初始化一个先进先出队列左来存储P. φ/的子集,将P. Φ '添加到先进先出队列 中,从.£队列中删除队头元素,并将删除后的队列赋值给ks; (a. 5.5.2)当ks的值不为空时:如果況ft.化姐巧唯巧)且狀[始]< d'如弓·),则跳出本层循 环,继续下一层循环,否则,将d(p,q)}赋值给哈希映射函数:?:贼],将ks的所有大小为Iks I- 1的子集放进先进先出队列心,如果S是哈希表Η的一个键、ks不含于S且S不含于ks则时,将 ksUs 赋值给 key,)lt(a. 5.6)得到最短匹配距离
【文档编号】G06F17/30GK106095852SQ201610389571
【公开日】2016年11月9日
【申请日】2016年6月6日 公开号201610389571.8, CN 106095852 A, CN 106095852A, CN 201610389571, CN-A-106095852, CN106095852 A, CN106095852A, CN201610389571, CN201610389571.8
【发明人】郑凯, 贾梦迪
【申请人】苏州大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1