摘要
从轨迹流中挖掘共同运动模式指在同一时间内发现具有相同运动行为的移动对象群体,在交通物流、疫情防控等方面具有重要意义。然而,现有研究面对大规模轨迹流数据难以做到快速响应。因此,本文首先提出了基于滑动窗口的分布式时空轨迹流共同运动模式挖掘算法,使用滑动窗口计算模型代替快照计算模型,利用增量式更新代替重新计算,使算法更适用于无界且快速到达的轨迹流数据,在效率和有效性方面呈现更好的性能。其次,针对分布式流处理系统中由于负载不均导致性能下降问题,提出了自适应多级动态数据分发策略,该策略能够适应轨迹流数据的动态变化,实时监测系统负载情况并根据负载不均的程度做出适当调整。最后,基于分布式流处理平台Flink实现了上述功能,并通过真实数据集的实验证明本文提出的算法比基准方法具有更快的响应速度和更低的延迟。
全球定位技术和无线通信技术的快速发展以及移动智能终端的广泛使用,使得持续获取海量移动对象位置数据成为可能。当前,移动互联网技术已经深入到人类生活工作的方方面面,海量位置数据可以被广泛、不间断地采集,汇聚形成具有时变性、持续性、快速到达的时空轨迹流数据。对轨迹流进行分析与挖掘可以实时监测、持续跟踪、及时发现移动对象的运动行为及其活动规律,可被广泛应用于交通物流、疫情防控和旅行推荐等多个领域。
学术界在流式处理和分布式计算方面对共同运动模式挖掘开展了深入的研究。共同运动模式是综合了Floc
现有研究工作在流式处理的计算模型设计和分布式计算中的数据分发方法上仍存在不足,导致模式挖掘效率较低。一方面,计算模型是影响轨迹流数据处理性能的重要因素。现有工
设计高效的时空轨迹流分布式共同运动模式挖掘算法颇具挑战。首先,在保证快速响应、低延迟要求下应对大规模轨迹流的分析与挖掘是一个难点。通常共同运动模式挖掘算法的时间复杂度较高,加之要处理大规模数据,所以性能表现不理想。轨迹流数据无界和快速到达的特性会造成因无法及时处理数据而形成的拥塞,因此快速处理滑动窗口中轨迹流数据是本文面临的挑战之一。其次,如何平衡调整数据分发后系统负载均衡程度和调整代价也是一个难点。当分布式系统出现负载不均时,通过调整数据分发使其恢复均衡状态不可避免地会产生调整代价。调整代价通常与系统均衡程度成正比,均衡程度越高,所需调整代价越大。因此寻找到两者之间平衡点是本文面临的另一挑战。
针对以上挑战,本文主要工作如下:(1) 提出了基于滑动窗口的分布式时空轨迹流共同运动模式挖掘算法,通过增量式更新而非重新计算提高挖掘算法的效率;(2) 针对各计算节点的负载不均问题,提出了自适应多级动态数据分发策略,该策略能够根据负载不均程度分级自动调整,既能使系统恢复均衡状态又不会产生较高调整代价;(3) 基于分布式流处理平台Flink实现了上述算法,并通过真实数据集验证了本文所提算法的有效性与效率。
轨迹数据的共同运动模式挖掘具有较高的研究和应用价值,目前共同运动模式挖掘面向的轨迹数据形式主要分为历史轨迹和轨迹流两种。
关于面向历史轨迹的共同运动模式挖掘,学术界开展了广泛而深入的研究。2005年Kalnis
目前针对历史轨迹数据的共同运动模式挖掘技术日趋成熟,但由于挖掘结果过于滞后,难以应用于真实场景。基于以上考虑,许多学者提出了针对轨迹流的实时共同运动模式挖掘方案。
针对轨迹流的共同运动模式挖掘,学术界也有许多研究。Vieira
尽管有部分研究工作涉及到对轨迹流的共同运动模式挖掘,但是这些工作大多使用快照计算模型,难以解决轨迹流数据量大及快速到达与模式挖掘代价高昂的矛盾。此外现有分布式解决方
本节主要介绍共同运动模式的问题定义,
符号 | 定义 | 符号 | 定义 |
---|---|---|---|
移动对象集合 | /s | 滑动窗口开始时刻 | |
时间序列 | 移动对象最小规模 | ||
时空轨迹流 | /min | 最小持续时长 | |
在时刻到达的移动对象 | /min | 最小局部连续时长 | |
移动对象在时刻的位置 | /min | 片段间最大间隔时长 | |
滑动窗口大小/min | 共同运动模式 | ||
滑动步长/min | 缓冲时间 | ||
连续窗口序列 | 计算节点数量 | ||
长度为的窗口有限子序列 |
给定移动对象集合和时间序列,表示时刻。
定义1(轨迹流) 时空轨迹流是指持续到达的由多个移动对象位置记录组成的时间序列,记为。其中,表示某一移动对象在时刻的位置记录,,表示在时刻到达的移动对象,,表示移动对象在时刻的位置信息,,。
在轨迹流的运动模式挖掘中,最新的运动规律更受关注。滑动窗口模型能够很好地处理最近到达的轨迹流数据。
定义2(滑动窗口) 给定滑动窗口大小和滑动步长,滑动窗口是轨迹流在时间间隔长度的一段连续的有限子序列,滑动窗口开始时刻为。在不引起歧义的情况下,下文将滑动窗口简称为窗口。
将轨迹流的某个窗口记为,向前滑动即为其连续的最新窗口,其中。一个连续的窗口序列满足:,,表示序列中的第个元素。连续的窗口序列成为窗口片段,简称片段。根据以上定义,下文给出L‑连续和G‑连通的概念。L‑连续控制片段的长度,G‑连通控制连续片段之间的间隙长度。
定义3(L‑连续) 给定的片段,序列为L‑连续。
定义4(G‑连通) 任意相邻窗口之间的时间间隙最多为G个滑动步长,则序列是G‑连通的,即,,其中表示集合中的第个元素。
下面给出基于滑动窗口的共同运动模式形式化定义。共同运动模式描述一组一起运动的移动对象,且同时满足5个约束条件:(1)邻近性:定义“一起运动”;(2)显著性:控制一起运动的移动对象的数量;(3)持续时间:控制移动对象一起运动的时间长度;(4)L‑连续;(5)G‑连通放松了“持续时间”的连续性。具体来说,移动对象一起运动的整个时间段不一定是严格连续的,在连续的片段之间允许存在间隙。因此,“L‑连续”和“G‑连通”分别控制每个连续片段的长度和两个连续片段之间的间隙。
定义5(共同运动模式) 给定时空轨迹流,如果存在一个窗口序列,满足以下5个约束条件,则的子集是一个共同运动模式:(1)邻近性:在的每个窗口中,的移动位置属于同一簇;(2)显著性:;(3)持续时间:;(4)连续性:为L‑连续;(5)连通性:为G‑连通。
基于快照模型计算邻近性约束时,假设相同时刻报告每个移动对象的位置,每个快照中的移动对象在时间上严格对齐。本文在计算基于滑动窗口的邻近性约束时,引入缓冲时间进行了时间上的放松,允许一定的“时空错位”,对时间段内不同时刻的移动对象计算近邻约束。考虑到移动对象运动具有时空局部性,短时间内的移动范围有限,本文方法具有合理性。为了提供近邻性约束的具体定义,本文选择依赖于基于密度的聚类进行定义。
定义6(分布式实时共同运动模式挖掘) 给定定义共同运动模式的参数、、和,计算节点个数,分布式实时共同运动模式挖掘是在窗口序列中使用个计算节点,找到所有共同运动模式,其中为当前时间。
共同运动模式挖掘首先需要使用聚类操作追踪移动对象的空间邻近性,聚类操作对于轨迹数据的模式挖掘具有十分重要的作用,但聚类操作也占据了模式挖掘整个过程的大量时间。大规模数据流源源不断、快速到达的特性要求共同运动模式挖掘算法必须快速高效。然而,计算共同运动模式需要对海量移动对象进行范围查询以及指数级的枚举操作,导致算法性能低下。面对共同运动模式挖掘的高计算复杂度,学术界现有研究工作取得了重要成果,主要包括CEP
基于滑动窗口的时空轨迹流共同运动挖掘算法框架包含3个阶段:基于滑动窗口的数据流分片、面向轨迹流的增量式聚类和基于位运算的模式枚举。其中面向轨迹流的增量式聚类是本文讨论的重点。
使用窗口技术对轨迹流分片,分批次地处理实时到达的轨迹流数据,从而实时计算和分析。考虑到移动对象时空位置变化连续、短时间内的邻近性具有相似性的现实因素,本文采用窗口技术对无限的数据流从时间维度划分片段,记录移动对象的位置更新,也利于后续处理阶段进行增量式计算。
聚类操作对于轨迹数据的模式挖掘具有十分重要的作用,占据模式挖掘整个过程的大量时间。现有研究工作基于快照模型进行模式定义,在每个快照上进行聚类,根据簇关系约束移动对象的空间邻近性。由于快照之间的计算是相互独立的,以致产生了大量的重复计算。此外,由于轨迹流采样频繁,其数据量和快照数量随时间不断增长,对这些数据进行聚类需要十分庞大的计算代价。
本文选择滑动窗口模型对轨迹流进行增量式聚类。固定大小的滑动窗口对最新到达的数据进行处理,模型本身与轨迹流采样率无关。同时,移动对象时空位置变化连续,短时间内的近邻性具有相似性,滑动窗口模型能够及时更新簇关系,无需对每个快照进行独立的聚类操作,提高了算法整体的效率。使用滑动窗口模型进行聚类操作时,直觉的方案是以窗口为单位,通过计算同一个滑动窗口内的位置记录得出满足空间邻近的移动对象集合。但是,与快照中移动对象的位置记录严格时间对齐不同,窗口中存在多个时间戳的位置记录,甚至同一个移动对象的多个记录,造成以滑动窗口为单位计算空间邻近性的混乱。因此,引入缓冲时间进行时间上的放松,允许一定的“时空错位”,对时间段内不同时间戳的位置记录计算近邻约束。当内出现同一个移动对象的多个记录时,最新时间戳的位置记录参与计算。
面向轨迹流的增量式聚类与传统DBSCAN算法一样,将位置记录分为核心点、边界点和噪声点。当聚类完成时,核心点和边界点将被分配一个簇标识。与DBSCAN不同的是,本文算法的思想是通过计算进入和离开窗口的位置记录对上一次聚类结果的影响来更新本次聚类结果。表示以位置记录为中心、距离阈值内的一组数据点,中位置记录的数量用表示,并且始终保持最新。当窗口向前滑动步长时,新的轨迹数据进入窗口,而一些现有的轨迹数据离开窗口。追踪滑动窗口内这些发生变化的轨迹数据及其邻域受到的影响,并通过更新以及类别标签即可保持簇的状态及时更新。显然,面向轨迹流的增量式聚类的主要任务是对当前窗口中的每一个点重新计算和,具体分为收集和聚类两个步骤,收集步骤找到所有对簇状态产生影响的位置记录,聚类步骤判断位置记录对簇分裂和合并的影响,更新簇状态。
收集阶段的主要任务是发现对簇状态有影响的位置记录。轨迹流中变化的位置点对簇造成的影响最直接,移动对象的位置变化可能会改变位置点的类型,影响位置点间的密度可达关系,从而造成簇的变化。当窗口滑动时,离开窗口的核心点可能会造成簇的消减(包括分裂、缩小和消失),进入窗口的核心点可能会造成簇的增长(包括合并、扩大和生成)。用表示进入窗口的位置记录集合,表示离开窗口的位置记录集合,表示当前窗口中的位置记录集合,表示上一个窗口中的位置记录集合。为了便于表述,本文将离开窗口的核心点和进入窗口的核心点分别定义为前核和新
定义7(前核) 给定上一个窗口中的核心点,如果在当前窗口中消失()或变为非核心点(),则称为前核,记为。
定义8(新核) 给定当前窗口中的核心点,如果未出现在上一个窗口()或为非核心点(),则称为新核,记为。
前核和新核是影响簇状态的关键因素。由于窗口中变化的位置记录p,改变了和所有邻域内位置记录的,促使前核和新核改变了。因而,在收集阶段,算法对和中的每个位置记录p逐个扫描,重新计算中每个位置记录的值并更新类别标签。在收集步骤结束时,当前窗口中的每个数据点都将有一个最新的值。最后,根据更新后的类别标签值计算前核集合和新核集合。为了提高邻域内位置记录的搜索效率,使用R树作为空间索引来维护窗口内保存的位置记录,当轨迹数据进入或离开窗口时,需要在R树中插入或删除结点。伪代码如算法1所示。
算法1 对簇状态产生影响的位置记录的收集
输入:进入窗口的轨迹点集,离开窗口的轨迹点集,当前窗口的。
输出:新核集合,前核集合,中的前核。
①;
②for in // 检查离开窗口的每一个轨迹点,如果是核心点,则加入,否则直接删除
③ if
④ ;
⑤ else delete p from the R‑tree index;
⑥ for in // 重新计算中每个位置记录的值并更新类别标签
⑦ if
⑧ ;
⑨ , ;
⑩end for
⑪for in // 检查进入窗口的每一个轨迹点,根据更新后的类别标签值计算前核集合和新核集合
⑫ insert into the R‑tree index;
⑬ , 1;
⑭ for in
⑮ if
⑯ ;
⑰ end for
⑱end for
⑲compute the sets and ;
⑳return (, , )
收集阶段得到了前核和新核,进一步计算它们对簇的影响范围和影响结果,能够加快簇演化的处理。前核会造成簇的缩小、分裂和消散。窗口中核心点的消失必然会导致簇的消减。除了前核本身对簇的影响,前核邻域内的位置记录也会对簇产生影响。具体而言,如果某前核邻域内的核心点因失去这一邻点而成为边界点或噪声点,则会出现更多的前核心点,若簇中所有核心点均因此成为前核心点,则该簇将会消散;如果簇中仅部分核心点转变为前核心点,则这些前核心点会切断核心点之间的密度可达路径,当簇中两个核心点之间的密度可达路径被完全切断,则会发生簇的分裂,这是判断簇分裂的关键。
事实上,通过检查窗口内的所有前核以及前核之间的可达关系能够加速簇的分裂。由于前核对簇的影响范围是局部的,通过估计前核的影响边界能够最小化前核的范围搜索空间,优化算法效率。考虑到前核之间的密度可达关系,前核是簇对应图的子图,这个子图对簇中剩余部分连通性的影响可以一起处理。下面对前核的可达关系和前核的影响边界给出两个定义。
定义9(再可达) 给定一对前核,如果直接密度可达,则直接再可达。一般来说,如果在和之间存在一条直接再可达的前核链,那么再可达,记为。
对于一个前核,再可达的前核集合记作,表示为。
定义10(前核最小外接核心点集) 给定一个前核以及,与的某个前核直接密度可达的、且在和中都为核心点的位置记录集合被称为的前核最小外接核心点集,表示为。
前核的最小外接核心点集能够确定由它们引起的簇演化的类型。如果对应的子图连通,则其余位置记录仍然在同一个簇中,原始簇缩小;如果对应的子图变为多个连通分量,则其余位置记录对应分解为多个簇;如果为空,则原始簇中的核心点都不存在,簇消失。
相似地,新核带来簇的扩大、合并和生成。窗口中新核的出现造成簇的扩大。同时,新核的出现改变其邻域内轨迹位置的值。如果簇中的非核心点因值增长变为核心点,可能带来新簇的生成;如果新出现的核心点建立了两个簇之间的密度可达路径,则带来簇的生成。检查窗口内的所有新核以及新核之间的可达关系能够加速簇的生成。本文将新核之间的可达关系定义为新生可达,在此基础上定义新核的最小外接核心点集来表达新核对簇的影响边界,从而避免对所有新核的遍历,加速簇状态的更新过程。
定义11(新生可达) 给定一对新核,如果直接密度可达,则直接新生可达。一般来说,如果在和之间存在一条直接新生可达的新核链,那么新生可达,记为。
对于一个新核,新生可达的新核集合记作,表示为。
定义12(新核最小外接核心点集) 给定一个新核以及,与的某个新核直接密度可达的、且在和中都为核心点的位置记录集合被称为的新核最小外接核心点集,表示为。
新核的最小外接核心点集也能够确定由它们引起的簇演化的类型。如果为空,则一个仅有中的新核构成的新簇将会出现;如果中的所有核心都属于同一个簇,那么中的所有新核都将被添加进该簇,进而导致了原始簇的成长。如果中的核心分属多个簇,这些核心将会与中的新核合为一个单独的簇。聚类阶段实现方式的伪代码如算法2所示。
算法2 基于滑动窗口的增量式聚类
输入:前核,新核,中的前核
输出:簇。
①;
②while // 遍历每一个前核
③ Compute and for ;
④ ; // 计算前核最小外接核心点集连通分量
⑤ if //大于1时分裂
⑥ a cluster splits;
⑦ else a cluster shrinks or dissipates
⑧ ;
⑨end while
⑩Remove from the R‑tree index;
⑪ ;
⑫for in // 遍历每一个新核
⑬ if // 如果新核最小外接核心点集分属多个簇,则合并
⑭ merge;
⑮ else a cluster grows or emerges
⑯ ;
⑰end for
⑱return
聚类操作能够发现满足共同运动模式中群体规模和空间邻近的位置记录集合,而时间连续性需要模式枚举来进一步验证。本文采用共同运动模式的最新研究工
分布式方案中数据倾斜是普遍存在的问题之一。具体来说,轨迹流数据被划分为多个窗口并行计算,由于不同窗口内轨迹点和簇数量的不同,可能出现不同计算节点上数据负载不均的情况,从而影响整体的处理效率。这是因为每个共同运动模式的生成需要多个计算单元协同合作,同步完成多个阶段的计算任务。负载不均时,负载较轻的计算单元往往需要等待负载较重的计算单元的计算结果,从而影响整个系统的挖掘效率。
对负载不均问题的研究,已经取得了一些重要成
除了数据分发阶段会导致负载不均外,由于轨迹流动态变化的特征,负载调整阶段也是影响负载不均的重要环节。数据流有无限性的特性,导致数据流处理任务被长期连续执行。在不同的时间,数据本身的分布偏差变化会影响系统整体负载,静态数据分配策略难以保持节点的平衡负载。因此,需要设计灵活的负载调整策略,同时平衡负载调整本身的代价,适应数据流新的分布特征。
为了解决上述问题,本文研究了共同运动模式分布式挖掘算法中的数据分发方案,其总体架构如

图1 自适应多级动态数据分发策略
Fig.1 Partitioning strategy for adaptive multi‑level dynamic data
在分布式流处理系统中,数据倾斜导致的负载不均是普遍存在的问题,但是现有共同运动模式挖掘工作对此考虑略有疏忽。计算节点并行执行多个子任务,节点的整体计算时间由计算量最大的子任务决定。这种方式尽管保证了节点局部聚类的正确性,但未能规避轨迹数据空间分布不均导致节点负载差距过大的问题,抑制了整体算法的性能。
通过分析数据分发的操作细节,本文将共同运动模式挖掘算法中两次数据分发的优化目标抽象为同一个问题。在模式挖掘的分布式处理中,尽管节点(子任务)之间的任务处理是并行的,但是划分至同一子任务的多个数据块将被串行处理,且每个数据块的任务独立进行。基于此,本文将数据块重新组合,同一组合中的所有数据块称为分区。每个分区的数据属于同一子任务,子任务依次处理分区内部的若干个数据块,每个计算节点并行运行子任务。不难发现,数据分发的难点在于保证各个分区中的负载之和差距尽可能地小,因此可以将这两次数据分发过程抽象为共同的数集分区问题。下面给出数集划分问题的定义。
定义13(数集划分问题) 给定正整数集,要划分的子集数量,目标是将划分为个子集,满足个子集中整数总和的最大值和最小值之差最小,形式化表示为。其中表示某个数据块的负载大小,子集数量代表计算节点个数,子集代表分区。
数集划分问题被Richard Karp证明是NP完全问
Karmarkar‑Karp差分算法空间复杂度为,但最糟糕情况下时间复杂度达到。由此可见,得到较好的分区组合方式所需的代价极大,而轨迹流数据的动态变化又使得分区组合方式难以一劳永逸。因此,在调整数据分发时,应尽可能减少调整频率或缩小调整范围。
计算成本模型是衡量节点中负载的关键指标。成本模型的设计原则是必须考量在处理过程中影响处理代价的主要因
共同运动模式挖掘的聚类计算以网格为单位,对于每个开始时刻为的窗口中的分区,影响计算代价的因素主要与网格中的位置记录数量和总窗口数|W|相关。分区的计算代价形式化表示为,则
(1) |
在算法运行的初始阶段,优化的数据分发方案能够确保负载均衡。然而,新到达的轨迹流属性分布会随着时间的推移而变化。分配给计算节点的工作量随之改变,这可能会导致负载失衡。为了避免算法整体性能下降,需要重新平衡负载。
在分布式查询研究中,负载迁移是重新平衡负载的重要因素。这是由于查询对象分散存储在各个计算节点中,节点处理查询任务依赖本地数据。当系统负载失衡时,除了需要通过改变指针来调整查询的流向外,还需要调整节点本地的查询对象数据,甚至需要中断系统,带来额外的网络通信和系统开销。分布式查询问题中负载调整需要平衡迁移成本和负载调整后的收益。
聚类和枚举操作无需依赖节点中存储的数据而进行计算,因而分布式共同运动模式挖掘算法中的负载调整无需考虑迁移代价,只需调整数据分发方案,改变轨迹数据的流向,从而均衡负载。但是,Karmarkar‑Karp差分算法的时间复杂度较高,频繁调整数据分发策略会带来额外的调整代价。为了应对不同程度的负载失衡,并以最小的调整代价恢复负载均衡,本文采用多级调整策略以重新平衡负载。3个层次的调整策略分别为分区拆分和合并、分区重新分配和分区重构,其调整能力和调整成本依次增加。
本文算法通过定期地收集每个分区的统计信息并计算节点负载来监测负载失衡是否发生。用表示负载值最大的节点,表示负载值最小的节点,表示节点的负载值。给定负载比阈值,如果,则节点间出现了负载失衡,此时需要进行负载调整。负载调整应满足以下两个要求:(1)负载调整后,节点间能恢复负载均衡;(2)调整成本小,能够高效地进行负载调整。
为了满足这些要求,本文针对不同的负载失衡程度自适应地采用调整策略。以聚类操作为例,用表示最大负载值节点中的最大分区数据,为其负载值。用表示所有节点中负载值最大的网格,为其负载值。用表示负载失衡的程度。三级负载调整概述如下:
(1)当节点间出现负载失衡时,并且,调整方式为分区拆分和合并,由于,只需将中的部分负载转移到来调整负载。
(2)当时,采用分区再分配调整。此时,仅拆分一个分区无法保证负载均衡,因此需要对更多的分区重新分配来调整负载。
(3)当网格严重过载、甚至超过某个节点的负载时,譬如,以上两种策略都无法恢复节点间的负载均衡,需要再次对当前窗口中的所有位置记录使用Karmarkar‑Karp差分算法构建分区,优化分发策略。
在大多数情况下,前两种方式可以满足平衡负载的要求,第3种策略则针对极端失衡情况。此外,这3种方法都不需要中断系统。在操作过程中,不会涉及任何本地数据,只需更改最新窗口中数据块对应的分区指针。下文将详细介绍分区拆分和合并、分区再分配和分区重构。
分区拆分和合并策略通过拆分负载大的分区和合并负载小的分区来恢复负载平衡。当时,分区数据被分为两个新的分区,每个分区的负载接近,并在新到达的窗口中将其中一个新分区数据指定给。调整后两个节点的整体计算时间趋于接近。重复以上操作,直到节点负载恢复平衡。此外,遍历所有分区,合并负载同时小于的相邻分区的位置记录数据。不难发现,拆分和合并操作的调整代价很低,在调整过程中只简单地改变部分轨迹数据的指向。
分区再分配策略通过对部分节点中的分区数据运行Karmarkar‑Karp差分算法来恢复负载平衡。当时,至少有的负载对应的位置记录需要转移,只分割一个分区数据不能保证恢复平衡。此时,首先对和中的分区使用Karmarkar‑Karp差分算法重分配。由于处理的数据规模较小,这一阶段Karmarkar‑Karp差分算法的时间开销也较少。如果分区重新分配后两个节点的负载仍然不平衡,就对其他的部分分区采用拆分和合并策略,然后重新分区再分配,直至负载均衡。虽然分区再分配的调整方法对部分分区数据使用了Karmarkar‑Karp算法,但是控制了数据规模,即使在最糟糕的情况下,其调整代价和调整能力也具有性价比。
分区重构策略通过对当前窗口中的所有位置记录重新计算最优的数据分发方法来恢复节点间的平衡。在大多数情况下,如果网格大小合适,则分区调整时数据块的大小也合适,前两种策略可以满足负载调整的要求。但不排除极端情况下,若干网格的负载大于其他计算节点,或者轨迹流数据的空间分布急剧变化,以至于网格大小不再适合。此时,必须根据位置记录新的分布统计情况来调整网格的大小,并再次使用Karmarkar‑Karp差分算法来计算数据分发方法。此时,负载调整的调整代价较大。
总而言之,节点的负载情况将被定期监测。一旦发现负载失衡,不同的调整策略将根据整体负载的不同自适应地执行。即使出现极端情况,算法也有应对的解决方案。
实验的硬件配置为由21个节点组成的集群,其中1个节点作为管理节点,其余的节点作为计算节点。管理节点为Intel(R) Xeon(R) CPU E5645处理器,主频2.4 GHz,六核,内存容量为24 GB。20个计算节点为Intel(R) Xeon(R) CPU E5620处理器,主频2.4 GHz,四核,内存容量为16 GB。所有节点的操作系统为Centos7.8,并配置jdk1.8,Hadoop3.1.3,Zookeeper3.5.7。Flink作为一个真正的流引擎,与其他流处理平台如Storm、Spark Streaming相比延迟低,吞吐量高,本文选择Flink1.12.0作为实验平台。实验程序采用Java程序设计语言进行编写,并通过Maven3.6.1进行打包上传到Flink集群。
(1)GeoLif
(2)北京市高德出租车数据集(Taxi):该数据集统计了北京市12 697辆出租车在2012年11月1日—2012年11月30日产生的时空轨迹数据。
对两个数据集都进行预处理,首先对移动对象进行重新编号,使编号连续并由1开始,并使用线性插值对缺失数据进行填充。对两个真实数据集预处理后的结果如
数据集 | 轨迹数 | 轨迹点数 |
---|---|---|
GeoLife | 18 670 | 44 189 853 |
Taxi | 121 468 | 248 284 500 |
为了全面评估本文算法对共同运动模式的发现能力及挖掘框架的性能,对设置的各个参数进行了实验。
参数 | 含义 | 参数值 |
---|---|---|
M/个 | 移动对象最小规模 | 2,4,6,8,10 |
K/min | 最小持续时长 | 3,6,9,12,15 |
L/min | 最小局部连续时长 | 2,3,4,5,6 |
G/min | 片段间最大间隔时长 | 2,3,4,5,6 |
(θ/η)/% | 窗口滑动步长/窗口大小 | 16,33,50,66,83 |
ε/m | 邻域半径 | 100,150,200,250,300 |
/个 | 核心点邻域半径内样本数 | 5,10,15,20,25 |
/% | 数据集规模 | 20,40,60,80,100 |
N/个 | 计算节点数 | 1,5,10,15,20 |
由于本文提出的分布式算法涉及多处优化,为了便于观察,本文在以下实验对比与分析中对所使用到的算法进行简化表示,第3节中描述方法简称为SWA,第4节中方法简称为SWA‑LB。本文使用的比较方法为ICP
为了评估SWA和SWA‑LB的有效性,本文分别比较了SWA和SWA‑LB的结果集与ICPE的结果集,有效率定义为
(3) |
式中:为查准率;为召回率,该指标广泛应用于数据挖掘问题
算法效率通过比较算法总执行时间和延时说明,其中延时指平均窗口(或快照)的处理时间。具体计算方式为
(4) |
数据集规模 | 20 | 40 | 60 | 80 | 100 |
---|---|---|---|---|---|
SWA | 98.1 | 96.2 | 95.5 | 95.0 | 93.3 |
SWA‑LB | 98.2 | 96.1 | 97.2 | 95.3 | 94.5 |

图2 值变化对算法效率的影响
Fig.2 Effect of varying value on the efficiency of algorithms




图3 M、K、L和G值变化对算法效率的影响
Fig.3 Effect of varying M, K, L, and G values on the efficiency of algorithms

图4 值变化对算法效率的影响
Fig.4 Effect of varying ε value on the efficiency of algorithms

图5 值变化对算法效率的影响
Fig.5 Effect of varying value on the efficiency of algorithms
可伸缩性实验通过改变数据集规模和计算节点数量观察算法性能。

图6 值变化对算法效率的影响
Fig.6 Effect of varying value on the efficiency of algorithms

图7 N值变化对算法效率的影响
Fig.7 Effect of varying N value on the efficiency of algorithms
本文主要研究面向时空轨迹流的共同运动模式分布式挖掘算法,基于现有挖掘框架,主要提出两点改进。首先,在数据处理的聚类阶段采用了基于滑动窗口的共同运动模式分布式挖掘算法,摒弃了常用的快照计算模型,利用增量式聚类代替重新聚类,更适应采样频繁的轨迹流数据;其次,针对分布式方案中不可回避的负载均衡问题提出了自适应多级动态数据分发策略,该策略能够实时监测系统负载情况,并在发生负载不均时做出适当调整,充分利用各计算节点资源。实验结果证明,SWA和SWA‑LB都具有较高的算法效率和可伸缩性。尽管本文对云环境中面向时空轨迹流的共同运动模式挖掘算法进行了详细的研究与实现,并取得了一些进展,但在算法和系统中仍存在有待改进和优化的空间:(1)本文SWA算法主要优化了其中的聚类操作,但枚举操作仍然占据了大部分的耗时,下一步工作可以关注挖掘算法中枚举操作的性能优化,更及时地发现共同运动模式;(2)本文提出的SWA‑LB算法仍存在负载调整粒度粗、自我调节能力差等问题,下一步工作可以利用轨迹流中的周期性规律,利用机器学习的技术建立负载预测模型,实现更智能的负载均衡策略。
参 考 文 献
Kalnis P, Mamoulis N, Bakiras S. On discovering moving clusters in spatio‑temporal data[C]//Proceedings of the 9th International Symposium on Spatial and Temporal Databases. Berlin: Springer, 2005: 364‑381. [百度学术]
Jeung H, Yiu M L, Zhou X, et al. Discovery of convoys in trajectory databases[J]. Proceedings of the VLDB Endowment, 2008, 1(1): 1068‑1080. [百度学术]
Li Z, Ding B, Han J, et al. Swarm: Mining relaxed temporal moving object clusters[J]. Proceedings of the VLDB Endowment, 2010, 3(1): 723‑734. [百度学术]
Li Y, Bailey J, Kulik L. Efficient mining of platoon patterns in trajectory databases[J]. Data & Knowledge Engineering, 2015, 100: 167‑187. [百度学术]
Tang L A, Zheng Y, Yuan J, et al. On discovery of traveling companions from streaming trajectories[C]//Proceedings of the 28th IEEE International Conference on Data Engineering. Piscataway, NJ: IEEE, 2012: 186‑197. [百度学术]
Chen L, Gao Y, Fang Z, et al. Real‑time distributed co‑movement pattern detection on streaming trajectories[J]. Proceedings of the VLDB Endowment, 2019, 12(10): 1208‑1220. [百度学术]
Fang Z, Gao Y, Pan L, et al. CoMing: A real‑time co‑movement mining system for streaming trajectories[C]//Proceedings of the 2020 International Conference on Management of Data. New York: ACM, 2020: 2777‑2780. [百度学术]
Tritsarolis A, Kontoulis Y, Pelekis N, et al. MaSEC: Discovering anchorages and co‑movement patterns on streaming vessel trajectories[C]//Proceedings of the 17th International Symposium on Spatial and Temporal Databases. Berlin: Springer, 2021: 170‑173. [百度学术]
朱美玲, 刘晨, 王雄斌, 等. 基于车牌识别流数据的车辆伴随模式发现方法[J]. 软件学报, 2017, 28(6): 1498‑1515. [百度学术]
Zhu Meiling, Liu Chen, Wang Xiongbin, et al. Approach to discover companion pattern based on anpr data stream[J]. Journal of Software, 2017, 28(6):1498‑1515. [百度学术]
于自强, 禹晓辉, 董吉文, 等. 分布式多数据流频繁伴随模式挖掘[J]. 软件学报, 2019, 30(4): 1078‑1093. [百度学术]
Yu Ziqiang, Yu Xiaohui, Dong Jiwen, et al. Distributed mining of frequent co‑occurrence patterns across multiple data streams[J]. Journal of Software, 2019, 30(4): 1078‑1093. [百度学术]
Vieira M R, Bakalov P, Tsotras V J. On‑line discovery of flock patterns in spatio‑temporal data[C]//Proceedings of the 17th ACM SIGSPATIAL International Conference on Advances in Geographic Information Systems. New York: ACM, 2009: 286‑295. [百度学术]
Benkert M, Gudmundsson J, Hübner F, et al. Reporting flock patterns[C]//Proceedings of the 14th European Symposium on Algorithms. Berlin: Springer, 2006: 660‑671. [百度学术]
Yeoman J, Duckham M. Decentralized detection and monitoring of convoy patterns[J]. International Journal of Geographical Information Science, 2016, 30(5): 993‑1011. [百度学术]
Orakzai F, Calders T, Pedersen T B. k/2‑hop: Fast mining of convoy patterns with effective pruning[J]. Proceedings of the VLDB Endowment, 2019, 12(9): 948‑960. [百度学术]
Helmi S, Kashani F B. Multiscale frequent co‑movement pattern mining[C]//Proceedings of the 36th IEEE International Conference on Data Engineering. Piscataway, NJ: IEEE, 2020: 829‑840. [百度学术]
Orakzai F, Calders T, Pedersen T B. Distributed convoy pattern mining[C]//Proceedings of the 17th IEEE International Conference on Mobile Data Management. Piscataway, NJ: IEEE, 2016: 122‑131. [百度学术]
Fan Q, Zhang D, Wu H, et al. A general and parallel platform for mining co‑movement patterns over large‑scale trajectories[J]. Proceedings of the VLDB Endowment, 2016, 10(4): 313‑324. [百度学术]
张敬伟, 刘绍建, 杨青, 等. DMFUCP:大规模轨迹数据通用伴随模式分布式挖掘框架[J]. 计算机研究与发展, 2022, 59(3): 647‑660. [百度学术]
Zhang Jingwei, Liu Shaojian, Yang Qing. DMFUCP: A distributed mi‑ning framework for universal companion patterns on large‑scale trajectory data[J]. Journal of Computer Research and Development, 2022, 59(3): 647‑660. [百度学术]
Tritsarolis A, Chondrodima E, Tampakis P, et al. Predicting co‑movement patterns in mobility data[J]. GeoInformatica, 2022,28(2): 1‑23. [百度学术]
Bhushan A, Bellur U, Sharma K, et al. Mining swarm patterns in sliding windows over moving object data streams[C]//Proceedings of the 25th ACM SIGSPATIAL International Conference on Advances in Geographic Information Systems. New York: ACM, 2017: 60:1‑60:4. [百度学术]
Ding J, Fang J, Chao P, et al. A distributed framework for online stream data clustering[C]//Proceedings of International Conference on Algorithms and Architectures for Parallel Processing. Cham: Springer International Publishing, 2020: 190‑204. [百度学术]
Li R, Wang R, Liu J, et al. Distributed spatio‑temporal k nearest neighbors join[C]//Proceedings of the 29th International Conference on Advances in Geographic Information Systems. New York: ACM, 2021: 435‑445. [百度学术]
Qian T, Sun S, Shan X, et al. Distributed‑swarm: A real‑time pattern detection model based on density clustering[J]. IEEE Access, 2022, 10: 59832‑59842. [百度学术]
Gao Y, Fang Z, Xu J, et al. An efficient and distributed framework for real‑time trajectory stream clustering[J]. IEEE Transactions on Knowledge and Data Engineering, 2023,36(5): 1‑17. [百度学术]
Gu J, Wang J, Zaniolo C. Ranking support for matched patterns over complex event streams: The CEPR system[C] //Proceedings of the 32nd IEEE International Conference on Data Engineering. Piscataway, NJ: IEEE, 2016: 1354‑1357. [百度学术]
Yang D, Guo Z, Xie Z, et al. Interactive visual exploration of neighbor‑based patterns in data streams[C]//Proceedings of the ACM SIGMOD International Conference on Management of Data. New York: ACM, 2010: 1151‑1154. [百度学术]
Yu Z, Yu X, Liu Y, et al. Mining frequent co‑occurrence patterns across multiple data streams[C]//Proceedings of the 18th International Conference on Extending Database Technology. Berlin: Springer, 2015: 73‑84. [百度学术]
Kim B, Koo K, Kim J, et al. DISC: Density‑based incremental clustering by striding over streaming data[C]//Proceedings of the 37th IEEE International Conference on Data Engineering. Piscataway. NJ: IEEE, 2021: 828‑839. [百度学术]
Yang Z, Zheng B, Tong C, et al. HASTE: A distributed system for hybrid and adaptive processing on streaming spatial‑textual data[C]//Proceedings of the 30th ACM International Conference on Information and Knowledge Management. New York: ACM, 2021: 2363‑2372. [百度学术]
Mahmood A R, Daghistani A, Aly A M, et al. Adaptive processing of spatial‑keyword data over a distributed streaming cluster[C]//Proceedings of the 26th ACM SIGSPATIAL International Conference on Advances in Geographic Information Systems. New York: ACM, 2018: 219‑228. [百度学术]
Chen Z, Cong G, Zhang Z, et al. Distributed publish/subscribe query processing on the spatio‑textual data stream[C]//Proceedings of the 33rd IEEE International Conference on Data Engineering. Piscataway, NJ: IEEE, 2017: 1095‑1106. [百度学术]
Chen Y, Chen Z, Cong G, et al. SSTD: A distributed system on streaming spatio‑textual data[J]. Proceedings of the VLDB Endowment, 2020, 13(11): 2284‑2296. [百度学术]
Karmarkar N, Karp R M. An efficient approximation scheme for the one‑dimensional bin‑packing problem[C]//Proceedings of the 23rd Symposium on Foundations of Computer Science. Piscataway, NJ: IEEE, 1982: 312‑320. [百度学术]
Mitchell J E, Todd M J. Solving combinatorial optimization problems using Karmarkar’s algorithm[J]. Mathematical Programming, 1992, 56: 245‑284. [百度学术]
Karp R M. Reducibility among combinatorial problems[C]//Proceedings of a Symposium on the Complexity of Computer Computations. Piscataway, NJ: IEEE, 1972: 85‑103. [百度学术]
Zheng Yu, Chen Yukun, Xie Xing, et al. Understanding mobility based on GPS data[C]//Proceedings of ACM Conference on Ubiquitous Computing. New York: ACM, 2008: 312‑321. [百度学术]
Zheng Yu, Xie Xing, Ma Weiying. GeoLife: A collaborative social networking service among user, location and trajectory[J]. IEEE Data Engineering Bulletin, 2010, 33(2): 32‑39. [百度学术]