基于MapReduce的LBS兴趣点发现方法

文档序号:6536947阅读:153来源:国知局
基于MapReduce的LBS兴趣点发现方法
【专利摘要】本发明提供一种基于MapReduce的LBS兴趣点发现方法,涉及计算机信息处理技术。使用MapReduce进行数据变换,得到项集频率降序序列,对事务集按照项集分组降序序列进行分发,在各机器上建立FP-Tree进行挖掘,对增量数据进行变换,对事务集按照增量数据分组进行划分,并行挖掘增量数据。本发明在MapReduce的PFP算法基础上,对增量数据筛选处理,处理部分增量数据,得到所有频繁项集,而不是每次重新挖掘全局数据,建立兴趣点关联规则数据挖掘模型,利用分布式并行化技术提高了关联规则挖掘算法的运行速度,能有效挖掘强关联性的兴趣点数据。
【专利说明】基于MapReduce的LBS兴趣点发现方法
【技术领域】
[0001]本发明涉及计算机云运算领域,地理信息挖掘领域,提供了一种基于MapReduce的LBS (Location Based Service,即基于位置的服务)兴趣点发现方法。
【背景技术】
[0002]随着经济、社会及文化迅速发展,人们生活娱乐的活动范围越来越大、品质要求越来越高,对于旅游、娱乐、紧急救援、地址指南等多种LBS服务有了更大的需求。
[0003]兴趣点(PointOf Interest,简称 Ρ0Ι):是地理信息系统(GeographicInformation System,简称GIS)中的一个术语,泛指一切可以抽象为点的地理对象,尤其是一些与人们生活密切相指用户感兴趣的地理对象实体。基于兴趣点的LBS服务是近年来的应用热点,例如基于兴趣点的签到应用Foursquare已拥有超过2500万名注册用户、基于兴趣点的嘀咕网社交系列游戏已拥有150万用户,基于兴趣点的微信公众号部分商家已有数十万粉丝,其发展前景十分看好。
[0004]用户关注的兴趣点信息往往隐藏在具有大规模、高增速、高密度等明显大数据特性的LBS地理位置信息中,因此如何从中准确、高效的的挖掘兴趣点数据,是近年的研究热点和难点。
[0005]关联规则挖掘是数据挖掘方法中一种被广泛采用的且具有影响力的方法,他能用来发现地理信息数据库中用户感兴趣的地理位置及各兴趣点之间的关联程度。目前能够使用的各种版本的关联规则挖掘大都是单机形式,面对大数据量情况显得无能为力,很多场景下也只是采样部分业务数据进行关联规则的查找。
[0006]1993年,Agrawal等人首先提出了挖掘顾客交易数据库中项集间的关联规则问题,其核心是基于两阶段频繁项集思想的递推算法。第一步通过迭代,检索出事务数据库中的所有频繁项集,频繁项集即支持度不低于用户设定的阈值的项集;第二步利用频繁项集构造出满足用户最小信任度的规则。其中,挖掘或识别出所有频繁项集是该算法的核心,占整个计算量的大部分。
[0007]频繁项集:项的集合称为项集。项集在事务中的出现次数称为项集的频率,支持率计数或者支持度计数。频率与事务数的商称为支持度(即支持度=频率/事务数),如果项集的支持度大于等于预定义的最小支持度阈值,则是频繁项集。
[0008]为了挖掘频繁项集,Agrawal等人率先提出Aprior算法,该算法在产生关联规则时需要多次扫描事务数据库生成大量的候选项集。为了避免生成候选项集,2000年Han等人提出了 FP-growth算法,该算法只进行2次数据库扫描。直接压缩数据库生成一个频繁模式树的数据结构(Frequent Pattern Tree,简称FP-Tree),然后通过对FP-Tree的挖掘获得频繁项集,它不使用候选集,研究表明比Apriori算法快一个数量级。
[0009]MapReduce是云计算的关键技术,是由Google提出的一个软件架构和编程模型,用于大规模数据的并行运算。MapReduce将系统对数据的所有操作都拆解为映射函数Map和规约函数Reduce两个步骤来执行,Map函数将大规模数据进行拆分为多个小的数据集分发到多台机器上并行运行,Reduce函数则将各台机器上Map函数运算的结果进行聚合,Map和Reduce的配合达到了分布式并行运算的效果。近年来,MapReduce的研究非常活跃,许多单机算法都在MapReduce上予以重新实现,为处理海量数据提供了高可用性和可扩展性。
[0010]经过对现有技术的文献检索发现,文章PFP:Parallel FP-Growth for QueryRecommendation//Proc of the ACM Conferenceon Recommender Systems.Lausanne, Switzerland, 2008:107-111 (基于查询推荐系统的并行FP-Tree算法),米用MapReduce的并行频繁模式树算法(Parallel FP-Growth,简称PFP)对频繁项集进行挖掘,每次挖掘均需要对全局事务数据进行扫描并按频率计数,才能建立支持度计数序列,因此更适用于静态数据集的关联规则挖掘。若使用该算法挖掘大规模、高增量、动态变化的LBS数据集,每次数据集发生变化后,仍会对频率未发生变化的分组项集数据重复挖掘,产生较多的冗余运算,进而导致该算法整体效率偏低,运算成本较高。

【发明内容】

[0011]本发明针对现有技术存在的从海量LBS地理位置信息中挖掘用户关注的兴趣点信息效率低、成本高的缺陷,本发明在MapReduce的PFP算法基础上,提出一个增量数据处理过程,通过单独计算增量数据的项集支持度计数序列,再与原项集序列合并,能快速得到新的全局项集序列,而不是每次重新挖掘全局数据。
[0012]本发明解决上述技术问题的技术方案是,提出一种基于MapReduce的LBS兴趣点发现方法,包括以下步骤:
[0013]从系统处获取用户群位置记录数据文本文件,由Hadoop (Apache基金会开发的开源分布式计算框架)自动进行分布式存储,再对用户群位置记录数据文本文件使用MapReduce (Hadoop框架中的分布式并行计算模型)进行数据变换,得到用户群位置坐标事务集文本文件;获取用户群位置坐标事务集文本数据文件,计算事务集文本数据文件中每个项的频度并按降序排列,得到项集频度降序序列文本文件,对项集频度降序序列文本文件中频率字段值进行分组,得到项集频度分组降序序列文本文件;对用户群位置坐标事务集文本文件按照项集频度分组降序序列进行分组,得到用户群位置坐标分组文件,对用户群位置坐标分组文件中的每个分组建立频繁模式树FP-tree (Frequent Pattern tree,在关联规则数据挖掘算法中使用,是一种压缩存储事务频繁项集的数据结构),根据FP-Tree得到用户兴趣坐标分组频繁项集文本文件,以及聚合分组数据后的兴趣坐标频繁项集文本文件;从系统处获取用户群位置记录增量数据文本文件,由Hadoop框架自动进行分布式存储,进行数据变换,获得用户群位置坐标增量事务集文本文件,计算增量事务集中每个项的频率并按降序排列,得到增量项集频率降序序列;将增量事务集的频率降序序列与增量前项集频率降序序列文本文件进行合并,得出全局项集频率降序序列;对上述全局项集频率降序序列进行分组,标记出需要重新挖掘的增量数据分组,对用户群位置坐标增量事务集文本文件进行分组,得到增量用户群坐标事务分组文本文件,对增量用户群坐标事务分组文本文件中的每个分组建立FP-Tree,进行并行挖掘,得到增量用户兴趣坐标分组频繁项集;将增量用户兴趣坐标分组频繁项集与用户兴趣坐标分组频繁项集合并,得到全局频繁项集。所述用户群位置记录数据文本文件包括定位时间Time、用户手机号码Phone、基站小区位置区码LAC三个字段。[0014]更进一步地,采用均分方式对项集频率降序序列文本数据文件中的频率字段值进行分组,分组数与系统集群中微处理器核数相同。获得了全局项集频率降序序列文本数据文件具体包括:将增量项集频率降序序列文本数据文件与发生增量之前的项集频率降序序列文本数据文件合并,得到全局项集频率降序序列文本数据文件。扫描全局项集频率分组降序序列与项集频率分组降序序列属于同一分组的LAC项值,如果有项值存在频率不同,名称及项降序排序相同,且后续分组中各项频率、项名称及项间排序相同,则将当前分组及其前驱分组存为增量数据分组文本数据文件。
[0015]获得全局频繁项集具体包括:读取增量用户兴趣坐标频繁项集所属分组编号;读取增量前用户兴趣坐标分组频繁项集,从中排除与增量用户兴趣坐标频繁项集所属分组编号中具有相同分组编号的频繁项集,筛选出非增量用户兴趣坐标频繁项集;将非增量用户兴趣坐标频繁项集与增量用户兴趣坐标频繁项集合并,得到全局频繁项集。
[0016]对用户群位置记录数据文本文件中的字段采取键值对转换操作,获取用户群位置坐标事务集文本数据文件,具体包括:每个映射函数Map读取一行文本,将Time作为第1键keyl, Phone、LAC 作为第 1 值 valuel,构成 <keyl=Time, valuel= {Phone, LAC} > 的键值对形式;通过公式:〈keyl=Time, valuel=Phone LAC> — <key2=Phone, value2=LAC> 对上述键值对进行转换,将Phone作为第2键key2, LAC作为第2值value2 ;通过公式:〈key2=Phone,value2=LAC> — <key2=Phone, value2=List (LAC) > 对键值对 <key2=Phone, value2=LAC> 进行转换,将Phone作为第2键key2,LAC的集合作为第2值value2 ;接收所有相同key2下的value2数组进行聚合;聚合结果保存为格式化的用户群位置坐标事务集文本数据文件。
[0017]对事务编码TID、LAC的集合List (LAC)两个字段采取键值对转换操作,获取项集频率降序序列文本数据文件,包括以下步骤:每个映射函数Map读取数据,将TID作为第 1 键 keyl, List (LAC)作为第 1 值 valuel,构成 <keyl=TID, valuel=List (LAC) >的键值对形式;通过公式:<keyl=TID, valuel=List (LAC) > — <key2=LAC, value2=l> 对上述键值对进行转换,将LAC作为第2键key2,每个LAC的值为1的作为第2值value2 ;对键值对 <key2=Phone, value2=LAC> 通过公式 <key2=LAC, value2=l> — <key2=LAC,value2=List⑴ > 进行转换,将LAC作为第2键key2,每个LAC的计数1的集合List⑴作为第2值value2 ;接收所有相同key2对应的value2数组,计算value2数组中的元素个数,排除元素个数中频率小于等于2的项;将结果保存为格式化的项集频率降序序列文本数据文件。
[0018]获取用户群位置坐标事务分组文本文件具体包括:每个Map函数从用户群位置坐标事务集文本数据文件中读取数据,对TID、LAC的集合List (LAC)两个字段采取键值对转换操作,实现每个LAC字段值的过滤;过滤后的文本翻译成键值对<keyl=TID,valuel=List (LAC) > 形式,即将 TID 作为第 1 键 keyl, List (LAC)作为第 1 值 valuel ;通过公式:〈keyl=TID, valuel=List (LAC) > — <key2=group (i), value2=List (LAC) > 对上述键值对进行转换,转换后将分组编号group (i)作为第2键key2,List (LAC)作为第2值value2 ;调用规约函数Reduce接收所有相同key2对应的value2数组;结果保存为用户群位置坐标事务分组文本文件。
[0019]获取用户兴趣坐标频繁项集具体包括:一个Map函数处理一个增量用户群位置坐标事务分组文本文件;每个Map函数分别读取用户群位置坐标事务分组的一部分数据,翻译成键值对<keyl=group (i), valuel=List (LAC) >形式,即将group (i)作为第1键keyl, List (LAC)作为第1值valuel ;以List (LAC)作为一个事务的项集,进行频繁项集挖掘,得到频繁项集List (I);将频繁项集存为键值对<key2=group (i),value2=List (I) >形式,即将group (i)作为第2键key2,频繁项的集合List (I)作为第2值value2 ;调用Reduce函数接收所有key2对应的value2数组,保存为多个格式化的用户兴趣坐标分组频繁项集,再合并得到用户兴趣坐标频繁项集。
[0020]本发明基于MapReduce的PFP算法提出了 PFP算法的增量数据优化方法,增加了对增量数据的优化处理过程,即对于不会影响最终结果的非增量数据不予运算,只需参与最后环节的结果聚合。该方法能有效提高增量数据计算效率,更加符合数据量快速增长的实际商用场景。能明显提高兴趣点信息挖掘的效率,具有较好的实际应用价值且成本较低。
【专利附图】

【附图说明】
[0021]图1采用MapReduce进行LBS兴趣点发现算法流程框图;
[0022]图2基于MapReduce进行数据预处理部分的流程框图;
[0023]图3采用MapReduce的PFP算法进行数据挖掘部分的流程框图;
[0024]图4采用MapReduce的PFP算法进行数据挖掘部分中FP-Tree拆分原理图;
[0025]图5基于MapReduce的PFP算法基础上进行增量数据处理的流程框图。
【具体实施方式】
[0026]图1为本发明方法流程框图,包括如下步骤:
[0027]1)数据预处理阶段:
[0028]使用基于MapReduce的数据预处理算法。从系统处获取用户群位置记录数据文本文件,由Hadoop框架自动进行分布式存储。用户群位置记录数据可包括{定位时间、用户手机号码、基站小区位置码} 3个字段;对用户群位置记录数据文本文件使用MapReduce进行数据变换,得到用户群位置坐标事务集文本文件,形式可为{用户手机号码、基站小区位置码集合},其中基站小区位置码集合表示同一用户手机号码基站小区位置码;
[0029]2)数据挖掘阶段:
[0030]使用基于MapReduce的PFP算法进行数据挖掘。获取用户群位置坐标事务集文本数据文件;使用MapReduce计算事务集中每个项的频度并按降序排列,得到项集频度降序序列文本文件,形式可为{项,频率};对项集频度降序序列文本文件中频率字段值进行分组,分组个数与集群微处理器核数一致以保证各分组能并行运算,分组实现了巨大规模的项集拆分为多个小规模的子项集,利于后续并行运算的目的。分组完成后得到项集频度分组降序序列文本文件,形式为{{分组1:项,频率},{分组2:项,频率},...,{分组η:项,频率}};使用MapRe duce对用户群位置坐标事务集文本文件按照项集频度分组降序序列进行分组,得到用户群位置坐标分组文件,形式为{分组,项集};使用MapReduce PFP算法,对用户群位置坐标分组文件中的每个分组建立FP-Tree,进行并行挖掘,得到用户兴趣坐标分组频繁项集文本文件形式为{{分组1:频繁项},{{分组2:频繁项},...,{分组η:频繁项}},以及聚合分组数据后的兴趣坐标频繁项集文本文件,形式为{频繁项1,频繁项2,…,频繁项η};[0031]3)进一步处理增量数据阶段:
[0032]使用基于MapReduce的增量PFP算法进行数据挖掘。从系统处获取用户群位置记录增量数据文本文件,位置记录包括用户{Time、Phone、LAC} 3个字段,由Hadoop框架自动进行分布式存储;用户群位置记录增量数据文本文件使用MapReduce进行数据变换,用户群位置坐标增量事务集文本文件,形式为{Phone、List (LAC)};使用MapReduce计算增量事务集中每个项的频率并按降序排列,得到增量项集频率降序序列,形式为{项,频率};将增量事务集的频率降序序列与增量前项集频率降序序列文本文件进行合并,得出全局项集频率降序序列,形式为{项,频率};对上述全局项集频率降序序列进行分组,标记出需要重新挖掘的增量数据分组,形式为{项,频率};使用MapReduce标记出增量数据分组对用户群位置坐标增量事务集文本文件进行分组,得到增量用户群坐标事务分组文本文件,形式为{增量分组,项集};使用MapReduce PFP算法,对增量用户群坐标事务分组文本文件中的每个分组建立FP-Tree,进行并行挖掘,得到增量用户兴趣坐标分组频繁项集,形式为{{增量分组1:频繁项},{{增量分组2:频繁项},...,{增量分组η:频繁项}};将增量用户兴趣坐标频繁项集与前面获得的用户兴趣坐标分组频繁项集合并,得到最终全局频繁项集,形式为{频繁项1,频繁项2,…,频繁项η}。
[0033]以下举例对本发明的实施作进一步说明。本实施例在以本发明技术方案为前提下进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施例。
[0034]步骤1)首先,从系统处提取用户群位置记录数据文本文件,文件内容形如下表1所不,其中Time (即定位时间)、Phone (即用户手机号码)、LAC (Location Area Code,即基站小区位置区码,以LAC[编码]形式表示)
[0035]表1用户群位置记录数据
[0036]
【权利要求】
1.使用基于MapReduce的LBS兴趣点发现方法,其特征在于,包括步骤:从系统处获取用户群位置记录数据文本文件,由Hadoop自动进行分布式存储,再对用户群位置记录数据文本文件使用MapReduce进行数据变换,得到用户群位置坐标事务集文本文件;获取用户群位置坐标事务集文本数据文件,计算事务集文本数据文件中每个项的频度并按降序排列,得到项集频度降序序列文本文件,对项集频度降序序列文本文件中频率字段值进行分组,得到项集频度分组降序序列文本文件;对用户群位置坐标事务集文本文件按照项集频度分组降序序列进行分组,得到用户群位置坐标分组文件,对用户群位置坐标分组文件中的每个分组建立频繁模式树FP-tree,根据FP_Tree得到用户兴趣坐标分组频繁项集文本文件,以及聚合分组数据后的兴趣坐标频繁项集文本文件;从系统处获取用户群位置记录增量数据文本文件,由Hadoop框架自动进行分布式存储,进行数据变换,获得用户群位置坐标增量事务集文本文件,计算增量事务集中每个项的频率并按降序排列,得到增量项集频率降序序列;将增量事务集的频率降序序列与增量前项集频率降序序列文本文件进行合并,得出全局项集频率降序序列;对上述全局项集频率降序序列进行分组,标记出需要重新挖掘的增量数据分组,对用户群位置坐标增量事务集文本文件进行分组,得到增量用户群坐标事务分组文本文件,对增量用户群坐标事务分组文本文件中的每个分组建立FP-Tree,进行并行挖掘,得到增量用户兴趣坐标分组频繁项集;将增量用户兴趣坐标分组频繁项集与用户兴趣坐标分组频繁项集合并,得到全局频繁项集。
2.根据权利要求1所述的方法,其特征在于,所述用户群位置记录数据文本文件包括定位时间Time、用户手机号码Phone、基站小区位置区码LAC三个字段。
3.根据权利要求1所述的方法,其特征在于,采用均分方式对项集频率降序序列文本数据文件中的频率字段值进行分组,分组数与系统集群中微处理器核数相同。
4.根据权利要求1所述的方法,其特征在于,获得了全局项集频率降序序列文本数据文件具体包括:将增量项集频率降序序列文本数据文件与发生增量之前的项集频率降序序列文本数据文件合并,得到全局项集频率降序序列文本数据文件。
5.根据 权利要求1所述的方法,其特征在于,扫描全局项集频率分组降序序列与项集频率分组降序序列属于同一分组的LAC项值,如果有项值存在频率不同,名称及项降序排序相同,且后续分组中各项频率、项名称及项间排序相同,则将当前分组及其前驱分组存为增量数据分组文本数据文件。
6.根据权利要求1所述的方法,其特征在于,获得全局频繁项集具体包括:读取增量用户兴趣坐标频繁项集所属分组编号;读取增量前用户兴趣坐标分组频繁项集,从中排除与增量用户兴趣坐标频繁项集所属分组编号中具有相同分组编号的频繁项集,筛选出非增量用户兴趣坐标频繁项集;将非增量用户兴趣坐标频繁项集与增量用户兴趣坐标频繁项集合并,得到全局频繁项集。
7.根据权利要求2所述的方法,其特征在于,对用户群位置记录数据文本文件中的字段采取键值对转换操作,获取用户群位置坐标事务集文本数据文件,具体包括:每个映射函数Map读取一行文本,将Time作为第1键keyl,Phone、LAC作为第1值valuel,构成 <keyl=Time, valuel={Phone, LAC} > 的键值对形式;通过公式:〈keyl=Time, valuel=Phone LAC> — <key2=Phone, value2=LAC> 对上述键值对进行转换,将Phone作为第2键key2,LAC作为第2值value2 ;通过公式:〈key2=Phone, value2=LAC> — <key2=Phone, value2=List (LAC) > 对键值对<key2=Phone, value2=LAC>进行转换,将Phone作为第2键key2,LAC的集合作为第2值value2 ;接收所有相同key2下的value2数组进行聚合;聚合结果保存为格式化的用户群位置坐标事务集文本数据文件。
8.根据权利要求2所述的方法,其特征在于,对事务编码TID、LAC的集合List(LAC)两个字段采取键值对转换操作,获取项集频率降序序列文本数据文件,包括以下步骤:每个映射函数Map读取数据,将TID作为第1键keyl,List (LAC)作为第1值valuel,构成 <keyl=TID, valuel=List (LAC) > 的键值对形式;通过公式:〈keyl=TID, valuel=List (LAC) > — <key2=LAC, value2=l> 对上述键值对进行转换,将LAC作为第2键key2,每个LAC的值为1的作为第2值value2 ;对键值对〈key2=Phone, value2=LAC> 通过公式 <key2=LAC, value2=l> — <key2=LAC,value2=List⑴ > 进行转换,将LAC作为第2键key2,每个LAC的计数1的集合List⑴作为第2值value2 ;接收所有相同key2对应的value2数组,计算value2数组中的元素个数,排除元素个数中频率小于等于2的项;将结果保存为格式化的项集频率降序序列文本数据文件。
9.根据权利要求2所述的方法,其特征在于,获取用户群位置坐标事务分组文本文件具体包括:每个Map函数从用户群位置坐标事务集文本数据文件中读取数据,对TID、LAC的集合List (LAC)两个字段采取键值对转换操作,实现每个LAC字段值的过滤;过滤后的文本翻译成键值对<keyl=TID,Valuel=List (LAC) >形式,即将TID作为第1键 keyl, List (LAC)作为第 1 值 valuel ;通过公式:〈keyl=TID, valuel=List (LAC) > — <key2=group (i), value2=List (LAC) > 对上述键值对进行转换,转换后将分组编号group (i)作为第2键key2,List (LAC)作为第2值 value2 ;调用规约函数Reduce接收所有相同key2对应的value2数组;结果保存为用户群位置坐标事务分组文本文件。
10.根据权利要求2所述的方法,其特征在于,获取用户兴趣坐标频繁项集具体包括:一个Map函数处理一个增量用户群位置坐标事务分组文本文件;每个Map函数分别读取用户群位置坐标事务分组的一部分数据,翻译成键值对<keyl=group (i), valuel=List (LAC) > 形式,即将 group (i)作为第 1 键 keyl, List (LAC)作为第1值valuel ;以List (LAC)作为一个事务的项集,进行频繁项集挖掘,得到频繁项集List (I);将频繁项集存为键值对<key2=group (i),value2=List (I) >形式,即将group (i)作为第2键key2,频繁项的集合List (I)作为第2值value2 ;调用Reduce函数接收所有key2对应的value2数组,保存为多个格式化的用户兴趣坐标分组频繁项集,再合 并得到用户兴趣坐标频繁项集。
【文档编号】G06F17/30GK103729478SQ201410037999
【公开日】2014年4月16日 申请日期:2014年1月26日 优先权日:2014年1月26日
【发明者】胡峰, 向倞, 于洪, 娄华宾 申请人:重庆邮电大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1