发明内容
本发明针对现有技术存在的从海量LBS地理位置信息中挖掘用户关注的兴趣点信息效率低、成本高的缺陷,本发明在MapReduce的PFP算法基础上,提出一个增量数据处理过程,通过单独计算增量数据的项集支持度计数序列,再与原项集序列合并,能快速得到新的全局项集序列,而不是每次重新挖掘全局数据。
本发明解决上述技术问题的技术方案是,提出一种基于MapReduce的LBS兴趣点发现方法,包括以下步骤:
从系统处获取用户群位置记录数据文本文件,由Hadoop(Apache基金会开发的开源分布式计算框架)自动进行分布式存储,再对用户群位置记录数据文本文件使用MapReduce(Hadoop框架中的分布式并行计算模型)进行数据变换,得到用户群位置坐标事务集文本文件;获取用户群位置坐标事务集文本数据文件,计算事务集文本数据文件中每个项的频度并按降序排列,得到项集频度降序序列文本文件,对项集频度降序序列文本文件中频率字段值进行分组,得到项集频度分组降序序列文本文件;对用户群位置坐标事务集文本文件按照项集频度分组降序序列进行分组,得到用户群位置坐标分组文件,对用户群位置坐标分组文件中的每个分组建立频繁模式树FP-tree(Frequent Pattern tree,在关联规则数据挖掘算法中使用,是一种压缩存储事务频繁项集的数据结构),根据FP-Tree得到用户兴趣坐标分组频繁项集文本文件,以及聚合分组数据后的兴趣坐标频繁项集文本文件;从系统处获取用户群位置记录增量数据文本文件,由Hadoop框架自动进行分布式存储,进行数据变换,获得用户群位置坐标增量事务集文本文件,计算增量事务集中每个项的频率并按降序排列,得到增量项集频率降序序列;将增量事务集的频率降序序列与增量前项集频率降序序列文本文件进行合并,得出全局项集频率降序序列;对上述全局项集频率降序序列进行分组,标记出需要重新挖掘的增量数据分组,对用户群位置坐标增量事务集文本文件进行分组,得到增量用户群坐标事务分组文本文件,对增量用户群坐标事务分组文本文件中的每个分组建立FP-Tree,进行并行挖掘,得到增量用户兴趣坐标分组频繁项集;将增量用户兴趣坐标分组频繁项集与用户兴趣坐标分组频繁项集合并,得到全局频繁项集。所述用户群位置记录数据文本文件包括定位时间Time、用户手机号码Phone、基站小区位置区码LAC三个字段。
更进一步地,采用均分方式对项集频率降序序列文本数据文件中的频率字段值进行分组,分组数与系统集群中微处理器核数相同。获得了全局项集频率降序序列文本数据文件具体包括:将增量项集频率降序序列文本数据文件与发生增量之前的项集频率降序序列文本数据文件合并,得到全局项集频率降序序列文本数据文件。扫描全局项集频率分组降序序列与项集频率分组降序序列属于同一分组的LAC项值,如果有项值存在频率不同,名称及项降序排序相同,且后续分组中各项频率、项名称及项间排序相同,则将当前分组及其前驱分组存为增量数据分组文本数据文件。
获得全局频繁项集具体包括:读取增量用户兴趣坐标频繁项集所属分组编号;读取增量前用户兴趣坐标分组频繁项集,从中排除与增量用户兴趣坐标频繁项集所属分组编号中具有相同分组编号的频繁项集,筛选出非增量用户兴趣坐标频繁项集;将非增量用户兴趣坐标频繁项集与增量用户兴趣坐标频繁项集合并,得到全局频繁项集。
对用户群位置记录数据文本文件中的字段采取键值对转换操作,获取用户群位置坐标事务集文本数据文件,具体包括:每个映射函数Map读取一行文本,将Time作为第1键key1,Phone、LAC作为第1值value1,构成<key1=Time,value1={Phone,LAC}>的键值对形式;通过公式:<key1=Time,value1=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数组进行聚合;聚合结果保存为格式化的用户群位置坐标事务集文本数据文件。
对事务编码TID、LAC的集合List(LAC)两个字段采取键值对转换操作,获取项集频率降序序列文本数据文件,包括以下步骤:每个映射函数Map读取数据,将TID作为第1键key1,List(LAC)作为第1值value1,构成<key1=TID,value1=List(LAC)>的键值对形式;通过公式:<key1=TID,value1=List(LAC)>→<key2=LAC,value2=1>对上述键值对进行转换,将LAC作为第2键key2,每个LAC的值为1的作为第2值value2;对键值对<key2=Phone,value2=LAC>通过公式<key2=LAC,value2=1>→<key2=LAC,value2=List(1)>进行转换,将LAC作为第2键key2,每个LAC的计数1的集合List(1)作为第2值value2;接收所有相同key2对应的value2数组,计算value2数组中的元素个数,排除元素个数中频率小于等于2的项;将结果保存为格式化的项集频率降序序列文本数据文件。
获取用户群位置坐标事务分组文本文件具体包括:每个Map函数从用户群位置坐标事务集文本数据文件中读取数据,对TID、LAC的集合List(LAC)两个字段采取键值对转换操作,实现每个LAC字段值的过滤;过滤后的文本翻译成键值对<key1=TID,value1=List(LAC)>形式,即将TID作为第1键key1,List(LAC)作为第1值value1;通过公式:<key1=TID,value1=List(LAC)>→<key2=group(i),value2=List(LAC)>对上述键值对进行转换,转换后将分组编号group(i)作为第2键key2,List(LAC)作为第2值value2;调用规约函数Reduce接收所有相同key2对应的value2数组;结果保存为用户群位置坐标事务分组文本文件。
获取用户兴趣坐标频繁项集具体包括:一个Map函数处理一个增量用户群位置坐标事务分组文本文件;每个Map函数分别读取用户群位置坐标事务分组的一部分数据,翻译成键值对<key1=group(i),value1=List(LAC)>形式,即将group(i)作为第1键key1,List(LAC)作为第1值value1;以List(LAC)作为一个事务的项集,进行频繁项集挖掘,得到频繁项集List(I);将频繁项集存为键值对<key2=group(i),value2=List(I)>形式,即将group(i)作为第2键key2,频繁项的集合List(I)作为第2值value2;调用Reduce函数接收所有key2对应的value2数组,保存为多个格式化的用户兴趣坐标分组频繁项集,再合并得到用户兴趣坐标频繁项集。
本发明基于MapReduce的PFP算法提出了PFP算法的增量数据优化方法,增加了对增量数据的优化处理过程,即对于不会影响最终结果的非增量数据不予运算,只需参与最后环节的结果聚合。该方法能有效提高增量数据计算效率,更加符合数据量快速增长的实际商用场景。能明显提高兴趣点信息挖掘的效率,具有较好的实际应用价值且成本较低。
具体实施方式
图1为本发明方法流程框图,包括如下步骤:
1)数据预处理阶段:
使用基于MapReduce的数据预处理算法。从系统处获取用户群位置记录数据文本文件,由Hadoop框架自动进行分布式存储。用户群位置记录数据可包括{定位时间、用户手机号码、基站小区位置码}3个字段;对用户群位置记录数据文本文件使用MapReduce进行数据变换,得到用户群位置坐标事务集文本文件,形式可为{用户手机号码、基站小区位置码集合},其中基站小区位置码集合表示同一用户手机号码基站小区位置码;
2)数据挖掘阶段:
使用基于MapReduce的PFP算法进行数据挖掘。获取用户群位置坐标事务集文本数据文件;使用MapReduce计算事务集中每个项的频度并按降序排列,得到项集频度降序序列文本文件,形式可为{项,频率};对项集频度降序序列文本文件中频率字段值进行分组,分组个数与集群微处理器核数一致以保证各分组能并行运算,分组实现了巨大规模的项集拆分为多个小规模的子项集,利于后续并行运算的目的。分组完成后得到项集频度分组降序序列文本文件,形式为{{分组1:项,频率},{分组2:项,频率},...,{分组n:项,频率}};使用MapReduce对用户群位置坐标事务集文本文件按照项集频度分组降序序列进行分组,得到用户群位置坐标分组文件,形式为{分组,项集};使用MapReduce PFP算法,对用户群位置坐标分组文件中的每个分组建立FP-Tree,进行并行挖掘,得到用户兴趣坐标分组频繁项集文本文件形式为{{分组1:频繁项},{{分组2:频繁项},...,{分组n:频繁项}},以及聚合分组数据后的兴趣坐标频繁项集文本文件,形式为{频繁项1,频繁项2,…,频繁项n};
3)进一步处理增量数据阶段:
使用基于MapReduce的增量PFP算法进行数据挖掘。从系统处获取用户群位置记录增量数据文本文件,位置记录包括用户{Time、Phone、LAC}3个字段,由Hadoop框架自动进行分布式存储;用户群位置记录增量数据文本文件使用MapReduce进行数据变换,用户群位置坐标增量事务集文本文件,形式为{Phone、List(LAC)};使用MapReduce计算增量事务集中每个项的频率并按降序排列,得到增量项集频率降序序列,形式为{项,频率};将增量事务集的频率降序序列与增量前项集频率降序序列文本文件进行合并,得出全局项集频率降序序列,形式为{项,频率};对上述全局项集频率降序序列进行分组,标记出需要重新挖掘的增量数据分组,形式为{项,频率};使用MapReduce标记出增量数据分组对用户群位置坐标增量事务集文本文件进行分组,得到增量用户群坐标事务分组文本文件,形式为{增量分组,项集};使用MapReduce PFP算法,对增量用户群坐标事务分组文本文件中的每个分组建立FP-Tree,进行并行挖掘,得到增量用户兴趣坐标分组频繁项集,形式为{{增量分组1:频繁项},{{增量分组2:频繁项},...,{增量分组n:频繁项}};将增量用户兴趣坐标频繁项集与前面获得的用户兴趣坐标分组频繁项集合并,得到最终全局频繁项集,形式为{频繁项1,频繁项2,…,频繁项n}。
以下举例对本发明的实施作进一步说明。本实施例在以本发明技术方案为前提下进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施例。
步骤1)首先,从系统处提取用户群位置记录数据文本文件,文件内容形如下表1所示,其中Time(即定位时间)、Phone(即用户手机号码)、LAC(LocationArea Code,即基站小区位置区码,以LAC[编码]形式表示)
表1用户群位置记录数据
Time |
Phone |
LAC |
2013-5-613:00 |
号码A |
LAC001 |
2013-5-613:00 |
号码B |
LAC002 |
2013-5-613:01 |
号码A |
LAC001 |
2013-5-613:02 |
号码C |
LAC002 |
2013-5-613:02 |
号码D |
LAC002 |
2013-5-613:02 |
号码E |
LAC003 |
… |
… |
… |
用户群是多个有共同特征的用户手机号码的集合,是数据挖掘的对象。
位置坐标以LAC(即基站小区位置区码)表示,基站小区位置区码指无线网络上报终端所处的基站小区号,小区号可以翻译成经纬度坐标用于LBS定位,由于这种定位方法实现简单,无需在无线接入网侧增加设备,所以运营商使用最广泛。
步骤2)使用MapReduce对用户群位置记录数据文件进行数据预处理,如图2所示。
①首先在Map阶段,采用Map函数自动划分数据集并分发并行计算机制,将输入的用户群位置记录数据集划分为多个较小的数据集分发到不同机器上并行处理,每个并行处理任务被称为Mapper,每个Mapper中的数据集采用键值对列表的方式进行记录。
以表1为例,第1个并行处理任务Mapper1上的Map函数从用户群位置记录数据文本文件读取一部分数据,翻译成<key1=Time,value1={Phone,LAC}>的键值对(key-value)形式,文件内容形式如下表2,其中以Time作为键1(第1键)(key1),Phone和LAC的集合作为值1(第1值)(value1):
表2翻译为Time-{Phone,LAC}键值对形式的用户群位置记录数据
key1=Time |
value1={Phone,LAC} |
2013-5-613:00 |
号码A,LAC001 |
2013-5-613:00 |
号码B,LAC002 |
2013-5-613:01 |
号码A,LAC001 |
2013-5-613:02 |
号码C,LAC002 |
2013-5-613:02 |
号码D,LAC002 |
2013-5-613:02 |
号码E,LAC003 |
… |
|
然后,Map函数接收表2的键值对数据,遵循Map函数的键值对转换公式:<key1,value1>→<key2,value2>,即将键1(key1)-值1(value1)中的全部或部分内容转换为键2(key2)-值2(value2)的形式,如下:
<key1=Time,value1={Phone,LAC}>→<key2=Phone,value2=LAC>
将表2的键值对数据转化为下表3的键值对数据,即在Mapper1中得到位置记录数据集1:
表3转换后的Phone-LAC键值对数据
key2=Phone |
value2=LAC |
号码A |
LAC001 |
号码B |
LAC002 |
号码A |
LAC001 |
号码C |
LAC002 |
号码D |
LAC002 |
②在每个并行处理任务Mapper中使用Shuffle函数(即合并函数),对表3的数据进行合并处理。Shuffle函数作用是接收一组如<key2,value2>形式的键值对数据,对同一个key2值的value2进行合并,转换为<key2,List(value2)>形式的键值对;遵循以下公式:
<key2,value2>→<key2,List(value2)>
即将同一键2(key2)对应值2(value2)中的全部内容进行合并,如下:
<key2=Phone,value2=LAC>→<key2=Phone,value2=List(LAC)>
将表3的键值对数据转化为下表4的键值对聚合数据,即在Mapper1中得到分组聚合数据集1,其中List(LAC)表示同一Phone对应的多个LAC的集合。依步骤①②也可以得到Mapper2中的分组聚合数据集2,如表5:
表4Mapper1聚合后得到的Phone-List(LAC)键值对分组聚合数据集1
key2=Phone |
value2=List(LAC) |
号码A |
LAC001,LAC006,LAC003,LAC004 |
号码B |
LAC001,LAC002,LAC003,LAC006, |
号码C |
LAC002,LAC006,LAC008 |
号码D |
LAC002,LAC003,LAC011 |
号码E |
LAC001,LAC006,LAC003,LAC005 |
表5Mapper2聚合后得到的Phone-List(LAC)键值对分组聚合数据集2
key2=Phone |
value2=List(LAC) |
号码A |
LAC007,LAC009,LAC013,LAC016 |
号码B |
LAC012,LAC013,LAC015 |
号码C |
LAC010,LAC015 |
号码D |
LAC019,LAC016 |
号码E |
LAC012,LAC016,LAC013,LAC014 |
③然后在Reduce阶段,使用Reduce函数接收所有Mapper任务计算后的分组聚合数据集,对同一Phone重复的LAC值进行去重,合并为全局数据集,即用户群位置坐标事务集。在本实施案例中即是将表4、表5数据聚合得到形如表6
的用户群位置坐标事务集数据,至此数据预处理工作完成。
表6用户群位置坐标事务集数据
结合关联规则数据挖掘的概念,用户坐标定位的行为称之为事务集,用集合T={T1,T2...Tm}表示;表6中每一行对应一个事务Ti。每个事务的唯一标识称为TID,由唯一的用户手机号码表示。LAC的集合用项集I={I1,I2...Im},每个LAC称之为一个项Ii,如I1表示LAC001、I2表示LAC002等。因此对于第i个事务Ti,有对应的项集Ii={I1,I2...Im}。
步骤3)数据挖掘,如图3所示,包括:事务集并行计数,事务集分组,并行PFP算法挖掘三个阶段组成。
①事务集并行计数阶段,首先使用MapReduce中的Map函数将输入的用户群位置坐标事务集划分为多个小的事务集,分发到不同机器上并行处理,每个并行处理任务被称为Mapper,每个Mapper中的数据采用键值对列表的方式进行记录。以表6为例,Mapper1上的Map函数从用户群位置坐标事务集读取一行文本,翻译成<key1=TID,value1=List(LAC)>的键值对形式,形式如下表7:
表7翻译为TID-List(LAC)键值对形式的用户群位置坐标事务集
然后,Mapper1中的Map函数负责接收表7的键值对数据,遵循Map函数的键值对转换公式进行如下转换:
<key1=TID,value1=List(LAC)>→<key2=LAC,value2=1>
将表7的键值对数据转化为下表8的键值对数据,即在Mapper1中得到坐标事务数据集1。
表8转换后的LAC-1键值对数据
Key2=LAC |
Value2=1 |
LAC001 |
1 |
LAC001 |
1 |
LAC001 |
1 |
LAC001 |
1 |
LAC002 |
1 |
LAC002 |
1 |
LAC002 |
1 |
LAC003 |
1 |
LAC003 |
1 |
LAC003 |
1 |
LAC003 |
1 |
LAC003 |
1 |
LAC004 |
1 |
LAC005 |
1 |
… |
… |
②在每个Mapper中使用shuffle函数,对表8的数据进行聚合处理。shuffle函数接收一组<key2,value2>形式的键值,对同一个key2值的value2进行聚合,转换为<key2,List(value2)>形式的键值对;
即进行如下转换:
<key2=LAC,value2=1>→<key2=LAC,value2=List(1)>
将表8的键值对数据转化为下表9的键值对聚合数据,即在Mapper1中得到坐标分组数据集1。
表9Mapper1聚合后得到的LAC-List(1)键值对分组聚合数据集1
key2=LAC |
value2=List(1) |
LAC001 |
1,1,1,1 |
LAC002 |
1,1,1 |
`AC003 |
1,1,1,1 |
LAC004 |
1 |
LAC005 |
1 |
LAC006 |
1,1,1,1 |
LAC007 |
1 |
LAC008 |
1 |
LAC009 |
1 |
LAC010 |
1 |
LAC011 |
1 |
LAC012 |
1,1 |
LAC013 |
1,1,1 |
LAC014 |
1 |
LAC015 |
1,1 |
LAC016 |
1,1,1 |
LAC019 |
1 |
③在Reduce阶段,使用Reduce函数接收所有Mapper任务计算后的坐标分组聚合数据集,对相同key2值的value进行计数,即进行如下操作:
<key2=LAC,value2=List(1)>→<key2=LAC,value2=n>
然后再聚合各机器上计数结果,降序排列,得到一个项集频率降序序列D_List,如下表10:
表10聚合得到LAC-n键值对形式的项集频率降序序列D_List
项集I(LAC) |
频率(LAC计数) |
LAC006 |
4 |
LAC003 |
4 |
LAC001 |
4 |
LAC002 |
3 |
LAC013 |
3 |
LAC016 |
3 |
LAC012 |
2 |
LAC004 |
1 |
LAC005 |
1 |
LAC007 |
1 |
LAC008 |
1 |
LAC009 |
1 |
LAC010 |
1 |
… |
|
在关联规则数据挖掘中,挖掘出那些项之间有强关联关系是最终目的,而拥有强关联关系项的支持度必须大于某一阈值,该阈值称为最小支持度;即项的支持度大于某一阈值时才可能存在强关联关系。支持度=频率/事务数,在事务数不发生变化的情况下,可以用频率代替支持度体现项间的关联关系,考虑实际业务情况,如可设定在最小频率为2,即大于2的项之间才可能存在强关联关系,因此排除D_List中频率小于等于2的项后得到项集频率降序序列F_List:
F_List={LAC006:4,LAC003:4,LAC001:3,LAC002:3,LAC013:3,LAC016:3}
步骤4)考虑到实际业务情况,LAC项可能会达到十万数量级,采用传统的FP-Tree挖掘算法,无法在单机内存中建立一颗数十万结点的频繁模式树进行挖掘,因此采用基于MapReduce的并行PFP算法解决此问题。该算法原理如图4,将一颗巨大的FP-Tree按规则划分为多个子FP-Tree,因为各FP-Tree之间数据完备,无依赖关系,所以可将子FP-Tree分发到不同机器上计算并行计算,最后将各机器上运距结果聚合即得到整体结果。具体划分规则如下:
①为保证最大并行数,需遵循一个微处理器核挖掘一颗FP-Tree原则。因此先计算集群微处理器总核数确定子FP-Tree的数量。在本例中假设微处理器总核数为2,则将FP-Tree分为FP-Tree_1和FP-Tree_2共2个子树。
如图4为FP-Tree具有的特点:
a)每个分支代表一个事务,例如分支:{LAC006,LAC0003,LAC001,LAC013,LAC016}是扫描表7第一行后,再从F_list中筛选得到频率降序排列。
b)FP-Tree必须遵循每个分支上节点降频排列的原则,因此每个分支的终端节点必然是该分支频率最小的项。
基于以上两点特性,FP-Tree最多可以横向拆分为F_list中以LAC006、LAC003、LAC001、LAC002、LAC013、LAC016等LAC项为终端节点的6棵树。根据步骤4)-①确定的子树数量,将F_list分为group1和group2两组,得到项集频率分组降序序列G_list={{group1:(LAC006:4),(LAC003:4),(LAC001:4)},{group2:(LAC002:3),(LAC013:4),(LAC016:3)}}。分组后可以理解为将以LAC006、LAC003、LAC001为终端节点的颗树放入同一分组group1,合并为FP-Tree_1,将以LAC002、LAC013、LAC016为终端节点的3课树放入另一分组group2,合并为FP-Tree_2。如下表11,
表11项集频率分组降序序列G_list
③首先使用MapReduce中的Map函数将表7的用户群位置坐标事务集划分为多个较小的事务集分发到不同机器上并行处理,每个并行处理任务被称为Mapper,每个Mapper中的数据集采用键值对列表的方式进行记录。
a)Mapper1中的Map函数扫描表7用户群位置坐标事务集的每行数据,按照表11项集频率分组降序序列G_list的配置筛选出频率降序排列作为value1,如下表12:
表12按G_list筛选后的TID-List(LAC)键值对用户群位置坐标事务集
key1=TID |
value1=List(LAC) |
号码A |
LAC006,LAC003,LAC001LAC013,LAC016 |
号码B |
LAC006,LAC003,LAC001,LAC002,LAC013 |
号码C |
LAC006,LAC002 |
号码D |
LAC003,LAC002,LAC016 |
号码E |
LAC006,LAC003,LAC001,LAC013,LAC016, |
号码F |
LAC001 |
b)然后,Map函数负责处理表12的键值对数据,遵循Map函数的键值对转换公式进行如下转换:
<key1=TID,value1=List(LAC)>→<key2=group(1,2),value2=List(LAC)>
将表12的键值对数据转化为下表13的键值对数据,实现将表7用户群位置坐标事务集分为2个组。
表13转换后的group-List(LAC)键值对数据
key2=group |
key2=List(LAC) |
group2 |
LAC006,LAC003,LAC001LAC013,LAC016 |
group2 |
LAC006,LAC003,LAC001,LAC002,LAC013 |
group1 |
LAC006,LAC002 |
group2 |
LAC003,LAC002,LAC016 |
group2 |
LAC006,LAC003,LAC001,LAC013,LAC016 |
group1 |
LAC001 |
c)然后在Reduce阶段,使用Reduce函数接收所有Mapper任务计算后的分
组数据集合并为全局数据集,如表14,获得用户群位置坐标事务集分组数据。
表14全局用户群位置坐标事务集分组数据
步骤5)使用MapReduce框架将不同分组的数据集分发到不同机器的CPU核上,为每个分组建立相应的FP-Tree,在本地挖掘FP-Tree的频繁项集,最后将各机器的本地挖掘结果聚合,得到最终用户兴趣坐标频繁项集挖掘结果。
①根据步骤4)-①的结论,在本例中将表14的数据分发到不同机器的2个核上并行处理,每个并行处理任务被称为Mapper,每个Mapper中的数据集采用键值对列表的方式进行翻译记录,如表15。
表15翻译为group-List(LAC)键值对形式的全局用户群位置坐标事务集分组数据
然后,Mapper1中的Map函数对group1中的LAC数据采用经典的单机FP-Tree算法进行挖掘,得到FP-Tree1的频繁项集{{LAC003,LAC016},{LAC003,LAC013}}。同理Mapper2中可得到FP-Tree2的频繁项集{LAC003,LAC006}。
②然后在Reduce阶段,使用Reduce函数接收所有Mapper任务计算后的频繁项集,合并为全局频繁项集,得到最终频繁项集为{{LAC003,LAC016},{LAC003,LAC013},{LAC003,LAC006}}。
步骤6)对于增量的用户群位置记录数据挖掘流程如图5,原理是比较全局项集频率分组降序序列与增量前的项集频率分组降序序列,找出发生增量变化的项集进行计算,该方法能有效降低计算量,提高效率。具体步骤如下:
①获取用户群位置记录增量数据文本文件,文件形式与用户群位置坐标事务集文本数据文件相同。采用步骤1)、步骤2)同样的预处理方式,获得用户群位置坐标增量事务集文本文件。
②对步骤6)-①中用户群位置坐标增量事务集文本文件采用与步骤3)-①、3)-②、3-③同样的挖掘方式,获得增量项集频率降序序列I_List。
③将I_List与增量前项集集频率降序序列F_Lis合并得到全局项集频率降序序列A_List,对其内部元素依据步骤4)-①的原理同样分为2组,得到全局项集频率分组降序序列AG_List。
④按LAC项频率从后向前对AG_List与G_List同一分组内所有LAC项进行扫描,可能出现以下情况:
a)在每个分组中,AG_List与G_List中LAC项频率不同,名称及项降序排序相同,且后续group中各项频率、项名称及项间排序相同。则表示group(i)后续分组无增量数据,只需对group(i)及其前驱分组中的LAC项进行数据挖掘,如下表16、17
表16同一分组group(i)中各自对应的降序频率不同的情况
上表说明当i=1时,group1后续的group2名称、频率、降序排列相同,
表示后续group2中无增量数据,因此只需重新对group1中的项进行挖掘。
表17同一分组group(i)中各自对应的降序频率相同的情况
上表说明当i=2时,group2的项频率不同,但项名称、降序排列相同,表示前驱group1中频繁项集可能发生变化,因此需要对对group1、group2中的项进行挖掘。
因此从AG_List中抽取出group(i)及其前驱分组组成增量数据分组R_List。
b)在所有group(i)中,AG_List与G_List中LAC项名称或降序排序不一致,表示全局数据发生变化,需要对全局数据重新挖掘。
⑤对于步骤6)-④-b)的情况,如图5分支流程将全局用户群位置坐标事务集和AG_List作为输入,采用步骤4)-③的方法对全局用户群位置坐标事务集行分组;然后采用步骤5)的方法进行并行FP-Tree挖掘,获得最终频繁项集结果。
⑥对于步骤6)-④-a)的情况,如图5分支流程,以表16的AG_List数据为例,得到增量数据分组R_List={{LAC006:5,LAC003:5,LAC001:1}}。
⑦将增量数据分组R_List和用户群位置坐标增量事务集作为输入,采用步骤4)-③的方法对增量用户群位置坐标事务集进行分组,获得增量用户群位置坐标事务分组;然后采用步骤5)-①的方法进行并行FP-Tree挖掘,重算FP-Tree1频繁项集,获得增量用户兴趣坐标分组频繁项集。
⑧读取步骤5)-①中获得的分组group2的增量用户兴趣坐标分组频繁项集,与前步骤FP-Tree1对应分组group1的增量用户兴趣坐标分组频繁项集合并,获得最终频繁项集结果,至此挖掘过程完成。