一种基于序列模式挖掘的多用户模型移动轨迹预测方法与流程

文档序号:11620706阅读:447来源:国知局
一种基于序列模式挖掘的多用户模型移动轨迹预测方法与流程

本发明属于数据挖掘技术领域,涉及一种基于聚类离群分析的手机信令轨迹预处理方法。



背景技术:

用户的当前位置是一个关键的用户上下文属性,可以和很多应用关联起来,提供更好的基于位置的服务(lbslocationbasedservice),很多基于位置的服务的app为居民的衣食住行都提供了极大的便利。在交通运输领域,车辆实时的位置信息也成为了拥堵分析、道路流量分析的实施基础。显然,如果能够通过某种手段有效获取用户当前位置,并有效预测其未来的位置,其潜在的价值不可估量。

目前的移动轨迹预测已经有相当数量的研究。从对数据的利用方式来说,主要分为两大类,一类是纵向的预测方式,一类是横向的预测方式。纵向的预测是指是通过个人的历史数据对个人的轨迹进行预测,每个用户之间的预测都是独立无关的。如jeungh,liuq,shenht等人在文献“ahybridpredictionmodelformovingobjects”,ieee24thint.conf.ondataengineering(icde),2008:70-79.中基于个人gps数据使用频繁模式结合运动方程的方式对个人的未来轨迹进行预测,其做法是较近的未来使用运动方程预测,较远的未来使用频繁模式进行预测。而横向的预测是利用大量用户的轨迹来预测个人的移动轨迹,人与人的移动行为具有相似性,所以“相似”的用户在预测中可以相互贡献。文献“predictionofmovingobjectlocationbasedonfrequenttrajectories”,computerandinformationsciences–iscis2006中定义了一种基于网格边的序列结构和模式结构,用于序列模式的挖掘进而进行预测。虽然该文献使用了横向的数据,但是它的缺点在于笼统地将全部人口的全部轨迹数据纳入同一个预测模型,对每一个人都采用该模型进行预测,这样会导致轨迹丰富者主导预测结果。总体来说,采用横向的方试来做轨迹预测的相关研究是较少的。

从预测方法的选取上来看,主要分为运动方程预测、基于运动模型预测和基于频繁模式的预测方法。运动方程的方法希望使用运动方程来描述人的移动轨迹,从而通过方程就可以计算出未来的位置。文献"stripes:anefficientindexforpredictedtrajectories."acmsigmodinternationalconferenceonmanagementofdata,paris,france,june2004:635-646、"queryandupdateefficientb+-treebasedindexingofmovingobjects."(e)proceedingsofthethirtiethinternationalconferenceonverylargedatabases,toronto,canada,august31-september320042004:768–779、"indexingthepositionsofcontinuouslymovingobjects."acmsigmodinternationalconferenceonmanagementofdata,may16-18,2000,dallas,texas,usadblp,2000:331-342.中均使用了线性的运动方程,假设人总是在做分段的线性运动,那么预测位置往往会输出在近期轨迹的延长线上。非线性模型预测的主要思想是通过非线性的数学公式模拟移动对象的运动轨迹,如文献"predictionandindexingofmovingobjectswithunknownmotionpatterns."acmsigmodinternationalconferenceonmanagementofdata,paris,france,junedblp,2004:611-622中提出的recursivemotionfunction(rmf)方法能够较为精确地模拟移动对象的短期运动趋势,也是当前预测精度较高的一种非线性预测方法。其做法是让每个用户在自己的设备上运行一个能够捕捉用户历史轨迹建立修正非线性运动方程的软件,服务器通过请求响应的方式得到某用户未来的位置。总的来说,这种基于运动方程的预测方式是对用户运动形态的模拟,所以往往在做近期预测时比较有效,而较长期的预测就无法胜任。另外人的移动轨迹系统不像下落的乒乓球,飞行的导弹这种系统,能看见明显的控制量。人的轨迹往往具有许多突发性。

而基于运动模型的预测主要是利用动态贝叶斯网络或者马尔科夫模型来对轨迹进行建模并预测。如liu,chienliang,e.jou,andc.h.lee在文献"analysisandpredictionoftrajectoriesusingbayesiannetwork."internationalconferenceonnaturalcomputationieee,2010:3808-3812中使用了贝叶斯网络来进行预测,将历史轨迹中出现的访问位置作为网络节点,推算出一个位置到另一个位置的转移概率。alvarez-garcia,j.a.等人在文献"tripdestinationpredictionbasedonpastgpslogusingahiddenmarkovmodel."expertsystemswithapplications37.12(2010):8166-8171中使用了隐马尔可夫的运动模型来对运动轨迹进行刻画,然而这种方式往往要在阶数比较高的情况下才相对比较准确,然而高阶数的代价是极大的时间复杂度。

所以在近几年时间里,出现了基于序列模式的预测方法,并提出了很多改进算法。主要有4种序列模式挖掘算法:aprioriall算法、gsp(generalizedsequentialpattern)算法、freespan算法以及prefixspan算法。aprioriall算法和gsp算法这两种算法都属于apriori类算法,都要产生大量的候选序列,需要有足够的存贮空间,同时还需要反复扫描数据库,需要占用很多运行时间。该类算法的执行效率比较低,特别是在支持度比较低的情况下,其执行效率将会大大下降。和aprioriall相比,gsp的执行效率比较高,总体来说要比aprioriall高2~20倍。而freespan和prefixspan算法都属于模式增长算法,它们的查找更加集中和有效。由于该类算法不生成大量的候选序列以及不需要反复扫描原数据库,和apriori类算法相比该类算法要快且更有效,特别是在支持度比较低的情况下更明显。此外,在时空的执行效率上,prefixspan比freespan更优。

基于序列模式的预测方法的思想大多都是,首先抽取频繁区域(停驻区域),然后将轨迹转化为区域序列。基于给定的区域序列,从中挖掘频繁出现的序列即为轨迹模式。对于频繁区域的挖掘,大多采用聚类的方式,比如k-means聚类算法,基于密度的聚类算法,以及基于时间的聚类算法,这些算法各有优缺点,分别适用于不同的数据类型。另外大多数研究主要通过数据挖掘技术从移动数据集中找出频繁轨迹。morzy在文献"predictionofmovingobjectlocationbasedonfrequenttrajectories."computerandinformationsciences-iscis2006,internationalsymposium,istanbul,turkey,november1-3,2006,proceedings2006:583-592中使用了改进的apriori算法来生成关联规则,但apriori类算法存在着两个明显的缺点,如果用户实际路径的数据库规模比较大时,则有可能会产生大量的候选序列;当存在较长的移动模式时,需要多次扫描数据库。因此,算法的时空消耗很大。在文献"miningfrequenttrajectoriesofmovingobjectsforlocationprediction."internationalconferenceonmachinelearninganddatamininginpatternrecognitionspringer-verlag,2007:667-680中他使用了改进的prefixspan算法——traj-prefixspan算法来发现用户移动轨迹的频繁模式,从而产生预测规则。prefixspan算法是freespan的改进算法,即通过前缀投影挖掘序列模式。其基本思想是:投影时不考虑所有可能出现的频繁子序列,只检查前缀序列,然后把相应的后缀投影成投影数据库。每个投影数据库中,只检查局部频繁模式,然后扩充到前缀中,继续进行挖掘,直到挖掘出所有的频繁序列,在整个过程中不需要生成候选序列。yingjiaching等人在文献"semantictrajectoryminingforlocationprediction."acmsigspatialinternationalsymposiumonadvancesingeographicinformationsystems,acm-gis2011,november1-4,2011,chicago,il,usa,proceedings2011:34-43.中使用了基于轨迹语义的prefixspan算法来进行挖掘。一般来说,基于频繁模式的预测方法取得了比早期运动方程预测方法更高的准确率。

专利20110308289.x提出了一种基于历史轨迹数据挖掘的位置预测算法,运用prefixspan序列模式挖掘算法对抽象后的轨迹的运动模式进行建模,构造模式树。该方法的缺点在于是基于单个用户的纵向历史数据进行预测,在历史数据较少的情况下不能较好地预测。

由于人的移动行为是具有一定规律的,即人往往会将大部分时间花在高频次地往返少数地点上,所以大部分的国内外研究都是基于纵向的利用数据来进行预测,而且大多依赖于完整、静态、高采样率的用户轨迹数据,而手机信令轨迹具有采样率低、个人历史数据少但横向数据丰富的特点,现有的研究方法难以直接应用到手机定位场景中。



技术实现要素:

本发明的目的是提供一种基于序列模式挖掘的多用户模型移动轨迹预测方法,能够充分利用手机信令定位的横向轨迹数据,建立多种用户模型进行预测。预测方法的具体手段为:

基于序列模式挖掘的多用户模型移动轨迹预测方法,利用手机信令定位的横向轨迹数据,建立多种用户模型进行预测;基于用户停留区域的用户间相似度指标对横向的用户轨迹数据进行划分并建立不同的用户预测模型;在prefixspan算法的基础上提出了基于序列挖掘模式的移动轨迹预测并且预测模型能够通过新产生的即时轨迹进行更新;包括两个部分:离线部分和在线部分;包括两个部分:离线部分和在线部分。

所述预测系统离线部分具体按照以下步骤实施:

步骤1,轨迹停留点簇识别:使用改进的time-basedcluster算法对轨迹进行分析,将轨迹点聚为停留点簇或者转移点簇,并用停留点簇的中心点作为停留点来替代停留点簇,滤去离群点;

步骤2,轨迹抽象为网格序列:将产生定位轨迹的地理区域划分为大小均匀、紧密相邻的网格阵列,得到网格化地图,然后对每一个网格进行编号;将步骤1所得由经纬度序列构成的轨迹转换为由网格编号序列构成的抽象轨迹;

步骤3,停留网格扩展为停留区域:停留网格扩展为停留区域的过程看作为多个用户的停留点异同判别过程,通过判断两个停留点是否能够看作是同一个停留区域,判断产生这两个停留点的个体是否都曾在同一个区域逗留;扩展完成后将抽象轨迹中停留点网格编号替换为停留区域编号;

步骤4,对用户进行分组划分:定义用户相似度的衡量指标,基于上一步得到的轨迹数据,使用凝聚的层次聚类方法将一部分相似的用户聚合在一起便于得出这部分用户的预测模型;

步骤5,分别对每组用户进行频繁序列模式挖掘:利用停留区域对轨迹分段,得到的每一条轨迹就代表一次出行;然后使用带有分类序列规则的改进prefixspan算法挖掘序列模式,并得到关联规则;

步骤6,构建预测树:使用预测树来管理挖掘出的序列模式,预测树包含所有轨迹模式及不同起点和终点的支持度;

所述在线匹配阶段包括以下步骤:

步骤7,将用户即时轨迹作为前缀遍历该组预测树进行匹配查找,并输出预测结果。

本发明的特点还在于:

所述步骤1中改进的time-basedcluster算法具体为:

算法每次遍历当前定位点时,都计算当前聚类中心与当前定位点之间的距离。聚类中心点定义如下:

其中x,y的值分别表示经度和纬度。聚类中心即为当前类中所有点位置的平均。

如果距离小于阈值d,则将当前点加入当前聚类中,在遍历一遍之后全部定位点都将被加入到簇中,根据停留时间和聚类大小判定为停留点簇或转移点簇。另外设置tplist作为疑似离群点的缓存器,当第一次发现当前定位点无法归入到当前聚类中时,判断该点可能是一个并不代表个体真实运动轨迹的离群点,将该点放入tplist暂时存储。如果连续的发现了m个无法归入到当前聚类中的点,则判定用户发生了真实的位置即停留期结束开始前往下一个停留点。

所述步骤3具体按照以下步骤实施:

步骤3.1,设置一个停留网格阈值代表每个停留点网格中停留点的个数,将所有网格中停留点大于等于的网格按照停留点个数的降序放入列表s,从s的头部开始遍历每一个停留点网格;

步骤3.2,对每个网格进行上下左右四个方向上的扩展得到四个扩展区域,这4个区域仅关注meetcondition为true的区域。meetcondition为true指的是扩展区域满足平均停留点个数大于扩展区域的扩展部分必须存在停留点个数大于的网格、扩展部分不包含于任何已经发现的停留区域中这三个条件;

步骤3.3,选取这四个扩展区域中平均停留点个数最多的区域作为实际扩展区域,其扩展方向为实际的扩展方向,然后以实际扩展区域为基础重复步骤3.2和3.3。同时,为了防止区域扩大过剩,设置一个阈值size用于控制最终扩展出来的停留区域的最大面积。

所述步骤4具体按照以下步骤实施:

步骤4.1,确定用户间相似函数;

步骤4.2,把每个样本归为一类,计算每两个类之间的距离,即计算样本与样本之间的相似度;

步骤4.3,寻找各个类之间最近的两个类,把它们归为一类;

步骤4.4,重新计算新生成的这个类与各个旧类之间的相似度;

步骤4.5,设置一个距离阈值d,重复步骤4.3和4.4直到所有的聚类两两之间都不存在一个小于d的距离,则聚类过程终止。

其中,步骤4.1中所述的用户相似度函数按照以下公式计算:

其中公式第一项使用了tanimoto系数,用于判断两个用户同一天内趋向去到同一个停留区域的程度,第二项,则对匹配上的停留区域的时间进行评价。tanimoto系数如下式所示:

所述步骤5中改进的prefixspan算法具体按照以下步骤实施:

步骤5.1,将轨迹的出发地和目的地作为分类标签引入算法中,第1次全局扫描轨迹数据库,发现长度为1的频繁序列,对每个1项集从1开始编号;

步骤5.2,以长度为1的频繁模式序列为前缀构造相应的投影数据库;

步骤5.3,把每个投影数据库按照编号hash到不同节点上并行进行递归挖掘直到找到所有的频繁序列。同时设置一个时间阈值,若某轨迹连续两个轨迹点无法达到该阈值要求,说明不满足时间连续性约束,则不再递归。

所述步骤6具体为:

预测树的每一个节点(除root)代表了一个频繁的位置(网格)和其上溯到根节点所形成的模式的支持度。除了与root节点直接相连的边之外,每条边上有一个时间范围,表示在模式中,从父节点所代表的位置到子节点所代表的位置的时间间隔范围,提供了对用户到达未来位置时刻的预测。此外每一个节点绑定一个hash链表,表中以当前轨迹的出发地为键,最大可能目的地作为值。该hash链表的构造原理是基于每个出发地-到达地标签的置信度。

构造树时首先对模式列表按照模式的长度进行升序排列,去掉其中长度为1的模式,。然后遍历每一个模式,将模式纳入树结构中。规则是:按照模式的顺序,如果树中已经存在相同的路径,则只需要更新这些路径上节点的支持度计数和对应的hash结构。对于hash结构的更新方法是:只对子节点建立其hash链表结构并更新。得到新的模式时,更新其对应节点的支持度,读取新模式所持有的od分类标签及其支持度,更新对应节点的hash结构。利用的新的模式更新对应节点的支持度、读取新模式的所持有的od分类标签及其置信度,更新对应节点的hash结构。注意对hash结构的更新过程中,每一次更新都需要将支持度计数最大的目的地作为hash表中哨兵项x中所存储的目的地。

所述步骤7具体规则为:

规则1,如果即时轨迹不含出发地,预测时沿着支持度最大的节点前进到叶子节点,得到接下来的转移轨迹。将新产生的轨迹递归的从根节点开始进行预测,直到没有模式可以匹配,则提取叶子节点的hash结构,使用哨兵出发地对应的目的地作为下一个停留区域的预测;

规则2,如果即时轨迹包含出发地信息,优先选取包含出发地信息且支持度最大的节点向下遍历,否则选取支持度最大的节点。到达叶子节点后,使用新生成的轨迹部分递归的进行预测,直到不满足继续遍历的条件(没有可以匹配的路径了),每次都记录上次获取到的目的地信息,最后一次获取到的目的地信息作为目的地预测的输出。如果没有输出任何目的地则,意味着目的地预测失败;

规则3,取得用户即时轨迹后,可能会发现没有任何首节点可以匹配轨迹的第一个位置。在这种情况下采用最近优先策略,逐渐去掉即时轨迹最早的位置直到能够匹配上任何一个模式,后续规则同1,2。

本发明的有益效果:在个人历史轨迹数据较为稀疏的情况下,本发明充分地利用了横向轨迹数据,且使用了分组预测模型,提高了轨迹预测的准确性。

附图说明

图1是本发明的主流程图

图2是停留簇和转移簇形态示意图

图3是停留区域实例图

图4是停留区域抽象轨迹示意图

图5是序列挖掘单元示意图

图6是预测树示意图

图7是不同预测模型下目的地预测的准确率对比图。

具体实施方案

下面结合附图和具体实施方式对本发明进行详细说明。

本发明基于序列模式挖掘的多用户模型移动轨迹预测方法中涉及到的相关定义如下:

定义1,一条轨迹或者时空序列是多个三元组构成的数据序列:

traj=<x0,y0,t0>,....,<xn,yn,tn>

其中(xi,yi)是r2中的二维点,其值分别表示纬度和经度。ti是为时间戳,表示产生对应(xi,yi)的时刻,且有即按照时间顺序将定位点进行排序得到的序列称为轨迹。

定义2,停留点指的是用户轨迹中出现的超过给定的停留时间的团簇状定位点集,这种团簇状的形态一般是由于用户极小范围的运动(如公司建筑设施中上班)或完全静止不动(如在十字路口等待红灯)所致,如图2中c所示。

定义3,聚类中心,为当前类所有点位置的平均值:

定义4,轨迹隶属关系,指给定轨迹序列s=<(x1,y1),...,(xk,yk)>和t=<(x1',y'1),...,(x'n,y'n)>以及一个邻域方程n:r2→ρ(r2)。轨迹s包含于轨迹t,当且仅当存在整数0≤i0<.....<ik≤n使得即如果其他轨迹的定位点位于另一轨迹定位点的邻域中则可以认为两个定位点是相同的。

定义5,轨迹转换后的网格抽象轨迹由3元组构成:

s'=<(cellid1,entertime1,type),...,(cellidn,entertimen,type)>

其中entertime为第一个出现在当前网格的轨迹点的时间戳,type用0和1作值来表示停留点所在的网格还是转移点所在的网格。在极少数情况下,如果转移点和停留点位于同一个网格,则优先认为该网格为停留点网格。

定义6,停留区域抽象轨迹由3元组构成:

s'=<(regionid1,entertime),(cellid1,entertime1),...,(cellidn,entertimen),(regionid2,entertime)>

定义7,每个用户的特征向量为:

regioni=[(regionid0,entertime0,leavetime0),...,(regionidn,entertimen,leavetimen)]

表示第i个用户某一条轨迹的全部停留区域按时间排序的序列以及对应的时间点序列。

定义8,轨迹间的支持关系指的是:如果y支持x,则必有对于轨迹序列数据库s={t1,...tn},其中ti代表一条轨迹,则ti的支持度被定义为轨迹序列数据库中支持ti的轨迹的百分比。

定义9,频繁轨迹的关联规则指的是将频繁轨迹ti={r0,r1,r2,....rn}表示为tail(ti)={r0,....rk}与head(ti)={rk+1,....rn}的形式。

定义10,轨迹关联规则置信度为:

本发明提供的基于序列模式挖掘的多用户模型移动轨迹预测方法包括两个部分:在线部分和离线部分。其主流程图如图1所示。离线部分具体按照以下步骤实施:

步骤1,轨迹停留点提取,使用改进的time-basedcluster算法对轨迹进行分析,尽可能多的探测出轨迹中的停留点簇并用停留点的中心点来替代停留点簇。同时轨迹中的点数将减少,降低了后续挖掘算法实际的时间复杂度;

其中改进的time-basedcluster算法如表1所示:

表1

改进算法在每次遍历当前定位点时,都计算当前聚类中心与当前定位点之间的距离。如果距离小于阈值d,则将当前点加入当前聚类中(第6-7行),在遍历一遍之后全部定位点都将被加入到某个簇中,不过一些被判断成为停留点簇,一些是转移点簇,通过逗留时间duration与聚类大小size来共同判定这是一个转移簇还是停留簇。另外将tplist作为疑似离群点的缓存器,当第一次发现当前定位点无法归入到当前聚类中时,判断该点可能是一个并不代表个体真实运动轨迹的离群点,将该点放入tplist暂时存储。如果连续发现了m个无法归入到当前聚类中的点,则判定用户发生了真实的位置即停留期结束开始前往下一个停留点。

size的取值下界根据以下方法确定。可以假设用户在一定时间范围内的运动是匀速的以及连续两个点的记录时间差(采样间隔)也是恒定的。同时因为使用了位置的平均来做聚类中心,所以可以将每个聚类看做一个半径为d的圆形。图2是理想情况下转移簇与停留簇的形态,图中a,b为转移簇,c为停留簇。可以将聚出来的类看做是用户的轨迹在穿越图中的圆形。以a簇中的方式穿越,簇所包括的点数必然是最少的,而弯曲的穿越方式和停留簇中的点数理论上都应该大于a中的点数。而最短的穿越距离为直径2d。那么size的下界由以下公式确定:

如果第一个聚类和最后一个聚类的大小小于此值,则不认为其是停留簇,而若size>1.5sizemin,则判定其是一个停留簇。其中1.5是对弯曲轨迹做的一个惩罚。

步骤2,将产生定位轨迹的地理区域划分为网格阵列,得到网格化地图,然后对每一个网格进行编号,方便确定当前定位点属于哪一个网格。最后将一条由经纬度序列构成的轨迹转换为由网格编号序列构成的抽象轨迹;

步骤3,进行停留点异同判别。将停留点网格扩展为矩形的停留区域,判断两个停留点是否可以看作是同一个停留区域,从而判断产生这两个停留点的个体是否都曾在同一个区域逗留,并将抽象轨迹中停留点网格编号替换为停留区域编号;

步骤4,定义用户相似度的衡量指标,使用层次聚类将一部分相似的用户聚合在一起,便于提炼出一个专属于这部分用户的预测模型,使横向数据中用户和用户之间的轨迹能相互补充,弥补个人历史轨迹的不足;

步骤5,挖掘频繁序列模式。现在轨迹已经转化成带停留区域的抽象轨迹形态,如图4所示,为了能够给出用户可能要去的目的地,在构造初始轨迹序列数据库时舍弃不具备目的地轨迹部分,用一个常值编号来填充没有出发地的轨迹,这样,所有参与序列挖掘的轨迹单元都拥有出发地目的地以及这之间的迁移路径。利用停留区域对轨迹分段,得到的每一条轨迹就代表一次出行,为研究中轨迹的最小单位,如图5所示。然后使用改进的prefixspan算法挖掘序列模式,并得到关联规则;

步骤6,构建预测树,预测树结构如图6所示。使用预测树的结构来管理挖掘出的序列模式,预测树包含所有预测模式及不同起点和终点的支持度,可以在复杂度较低的情况下输出预测结果;

在线匹配阶段包括以下步骤:

步骤7,根据用户即时轨迹遍历预测树并输出预测结果。预测规则如下:

规则1,如果即时轨迹不含出发地,预测时沿着支持度最大的节点前进到叶子节点,得到接下来的转移轨迹。将新产生的轨迹递归的从根节点开始进行预测,直到没有模式可以匹配,则提取叶子节点的hash结构,使用哨兵出发地对应的目的地作为下一个停留区域的预测;

规则2,如果即时轨迹包含出发地信息,优先选取包含出发地信息且支持度最大的节点向下遍历,否则选取支持度最大的节点。到达叶子节点后,使用新生成的轨迹部分递归的进行预测,直到不满足继续遍历的条件(没有可以匹配的路径了),每次都记录上次获取到的目的地信息,最后一次获取到的目的地信息作为目的地预测的输出。如果没有输出任何目的地则,意味着目的地预测失败;

规则3,取得用户即时轨迹后,可能会发现没有任何首节点可以匹配轨迹的第一个位置。这种情况下采用最近优先策略,逐渐去掉即时轨迹最早的位置直到能够匹配上任何一个模式,后续规则同1,2。

本发明的特点还在于:

所述步骤2具体按照以下步骤实施:

步骤2.1,选择邻域为固定大小的网格的邻域方程来分割地图。邻域方程n(x',y')如下式:

其中d是正方形网格的边长,网格化的范围是可以进行轨迹预测的范围。

步骤2.2,进行网格编号,有定位点(x0,y0)以及网格边界maxlng,minlat,minlat,maxlat,设每一个网格的边长为sizecell。经度方向上小数点后5位约等于地面距离0.9米和纬度方向上约等于地面距离的1.1米。那么网格总数按照式(1),(2),(3)进行计算。两个方向上的网格数都向上取整。

countcell=countlat*countlng(3)

网格编号用二元组<m,n>表示,其中1≤m≤countlat,1≤n≤countlng,为整数。可以利用下式判断定位点属于哪一个网格

步骤2.3,将一条由经纬度序列构成的轨迹转换为由网格编号构成的抽象轨迹。

所述步骤3具体按照以下步骤实施:

步骤3.1,设置一个停留网格阈值代表每个停留点网格中停留点的个数,将所有网格中停留点大于等于的网格按照停留点个数的降序放入列表s,从s的头部开始遍历每一个停留点网格;

步骤3.2,对每个网格进行上下左右四个方向上的扩展得到四个扩展区域,这4个区域仅关注实际meetcondition为true的区域。meetcondition为true指的是扩展区域满足平均停留点个数大于扩展区域的扩展部分必须存在停留点个数大于的网格、扩展部分不包含于任何已经发现的停留区域中这三个条件;

步骤3.3,选取这四个扩展区域中平均停留点个数最多的区域作为实际扩展区域,其扩展方向为实际的扩展方向,然后以实际扩展区域为基础重复步骤3.2和3.3。同时,为了防止区域扩大过剩,设置一个阈值size用于控制最终扩展出来的停留区域的最大面积。图3是扩展出的停留区域实例图。

所述步骤4具体按照以下步骤实施:

步骤4.1,确定用户间相似函数;

步骤4.2,把每个样本归为一类,计算每两个类之间的距离,也就是样本与样本之间的相似度;

步骤4.3,寻找各个类之间最近的两个类,把他们归为一类;

步骤4.4,重新计算新生成的这个类与各个旧类之间的相似度;

步骤4.5,设置一个距离阈值d,重复步骤4.3和4.4直到所有的聚类两两之间都不存在一个小于d的距离,则聚类过程终止。

其中,步骤4.1中所述的用户相似度函数按照以下公式计算:

其中公式第一项使用了tanimoto系数,用于判断两个用户同一天内趋向去到同一个停留区域的程度,公式中第二项对匹配上的停留区域的时间进行评价。tanimoto系数如下式所示:

所述步骤5中改进的prefixspan算法具体按照以下步骤实施:

步骤5.1,第1次全局扫描轨迹数据库,发现长度为1的频繁序列作为,设置出发地和目的地作为分类标签,对每个1项集从1开始编号;

步骤5.2,以长度为1的频繁模式序列为前缀构造相应的投影数据库;

步骤5.3,把每个投影数据库按照编号hash到不同节点上并行进行递归挖掘直到找到所有的频繁序列。同时设置一个时间阈值,若某轨迹连续两个相邻区域时间间隔无法达到该阈值要求,说明不满足时间连续性约束,则不再递归。

所述步骤6具体为:

预测树的每一个节点(除root)代表一个频繁的位置(网格)和其上溯到根节点所形成的模式的支持度。除了与root节点直接相连的边之外,每条边上有一个时间范围,表示在模式中,从父节点所代表的位置到子节点所代表的位置的时间间隔范围,这作为参考信息一定程度上提供了对用户到达未来位置时刻的预测。此外每一个节点绑定一个hash链表,表中以当前轨迹的出发地为键,最大可能目的地作为值。该hash链表的构造原理是基于每个出发地-到达地标签的置信度。

构造预测树的算法如表2所示。

表2

建立预测树时首先对模式列表按照模式的长度进行升序排列,去掉其中长度为1的模式,然后遍历每一个模式,将模式纳入树结构中。规则是:按照模式的顺序,如果树中已经存在相同的路径,则只需要更新这些路径上节点的支持度计数和对应的hash结构。hash结构的更新方法是:只对子节点建立其hash链表结构并更新。得到新的模式时,更新其对应节点的支持度,读取新模式所持有的od分类标签及其支持度,更新对应节点的hash结构。注意对hash结构的更新过程中,每一次更新都需要将支持度计数最大的目的地作为hash表中哨兵项x中所存储的目的地。

进一步地,根据图6来具体说明预测阶段的基本原理:

假设获取到的当前用户即时轨迹为从o1出发到r1。首先从root节点开始向下开始匹配,匹配到了<r1,10>这个节点则匹配成功。接下发现可能的路径中支持度最大的为<r5,10>,沿着这个节点向下继续遍历,得到<r1,r5,r6>作为预测轨迹,得到d2作为预测目的地。

本发明使用5000名用户在连续5个工作日中产生的全部用户轨迹进行实验。使用4天的数据轮流建立预测模型,把剩下1天的数据作为测试集,将测试集中所有轨迹的出发地和前半部分作为已知的即时轨迹,后半部分和目的地作为校验轨迹。在按照用户相似性进行分组后,选取用户数最多的5个分组,在每个分组中随机的选取30个用户。建立三种预测模型:第一种模型使用150个用户自己4天的历史数据来建立,这是传统的方法中所使用的纵向数据;第二种模型为分组模型,;第三种模型是将5个组的数据全部用来建立起同一个模型,150个用户都使用该模型进行预测。实验结果如图7所示

由实验结果可以看出:由于个人历史数据只有4天,且定位点的采样率较低,难以捕捉到个人的移动规律,所以基于个人历史数据的目的地预测准确率相对是较低的。使用统一模型进行预测的准确率也较低,甚至常常略低于个人历史数据的预测,这是由于统一的模型对数据集中的数据形成了过拟合,导致统一的模型对少数轨迹较丰富的用户能进行好的预测,而对于大部分用户都丧失了预测能力。重要的,使用分组模型进行预测时,每个组的目的地准确率都相对另外两种模型有所上升,对比三种实验结果可知,本发明基于序列模式挖掘的多用户模型移动轨迹预测方法在面对横向轨迹数据时能够有较好的预测效果。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1