CN109471877B - 面向流数据的增量式时态频繁模式并行挖掘方法 - Google Patents

面向流数据的增量式时态频繁模式并行挖掘方法 Download PDF

Info

Publication number
CN109471877B
CN109471877B CN201811292708.3A CN201811292708A CN109471877B CN 109471877 B CN109471877 B CN 109471877B CN 201811292708 A CN201811292708 A CN 201811292708A CN 109471877 B CN109471877 B CN 109471877B
Authority
CN
China
Prior art keywords
temporal
list
time
frequent pattern
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201811292708.3A
Other languages
English (en)
Other versions
CN109471877A (zh
Inventor
黄芳
赵义健
杜春修
章成源
张祖平
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Dragon Totem Technology Hefei Co ltd
Original Assignee
Central South University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Central South University filed Critical Central South University
Priority to CN201811292708.3A priority Critical patent/CN109471877B/zh
Publication of CN109471877A publication Critical patent/CN109471877A/zh
Application granted granted Critical
Publication of CN109471877B publication Critical patent/CN109471877B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明提供了一种面向流数据的增量式时态频繁模式并行挖掘方法,包括两部分,第一部分为时态频繁模式和时态次频繁模式的增量式挖掘,第二部分是时态频繁模式树的重建。本发明在获取了当前数据集的K‑项集计数后通过历史的频繁模式树和历史次频繁模式的信息对每个频繁模式的时态频繁度进行更新计算,将更新完时态频繁度的频繁模式根据阈值分别加入到时态频繁模式集合和时态次频繁模式集合中。本发明能以最小的空间代价来保存时态频繁模式的历史信息,提高频繁模式挖掘的准确性。

Description

面向流数据的增量式时态频繁模式并行挖掘方法
技术领域
本发明涉及一种面向流数据的增量式时态频繁模式并行挖掘方法。
背景技术
流数据作为一种随着互联网与计算机信息技术发展产生的新型数据形式,具有实时性、连续性,是大数据的重要特征之一[1]。由于流式数据的产生具有随时间源源不断的特点,传统数据挖掘方法无法直接应用到流数据环境中,因此,对流数据进行数据挖掘是大数据知识发现领域要解决的重要课题。在对流数据进行频繁模式挖掘时,时间的累积性是影响数据项之间关联关系的重要因素,如何有效地保留流式数据的历史信息,设计一个具有时间累积性的时态频繁度度量方法,是有效挖掘流式数据频繁模式中的关键问题。在数据挖掘领域中,针对时态频繁模式挖掘的研究应用已有多年,它是将数据的时间属性作为影响数据项之间关联关系的要素,这有助于更加有效揭示事物发展的潜在规律[2]。然而,在流式数据中,数据集随时间不断累积,使得数据挖掘系统不能完整的保留历史数据,在进行频繁模式挖掘时,无法回溯之前历史记录,这降低了基于时间相关的频繁模式计算的准确性,使得时态频繁模式挖掘结果表现不佳。此外,那种频繁地扫描数据集的传统方式显然也无法满足流式数据挖掘的需要。经典的FP-Growth算法在进行频繁模式集挖掘时,通过建立FP-tree来进行频繁项挖掘,不需要频繁地扫描原始数据集,是实现并行化关联挖掘的常用算法。在传统快速更新频繁模式树((FUFP-tree))算法中,可以通过FP-tree来保留历史信息,当新的数据到来时,在保留原有树结构不变的情况下更新节点信息或添加新的节点,这种设计思路的前提是事务数据后续的增量数据较小,FP-tree可以保存所有的候选项集。然而,在流数据挖掘中,随着后续大量数据不断流入,FP-tree无法保存完整的历史记录,这是将FP-Growth算法应用于流数据挖掘的主要障碍。另外,在对流数据进行处理时,为了使得最后的结果具有连贯性和延续性,其中间结果的累积和保存也至关重要。
因此,有必要针对流式数据的时间累积性,设计一种能有效保留历史信息的时态频繁模式挖掘方法。
发明内容
本发明所解决的技术问题是,针对现有技术的不足,提供一种面向流数据的增量式时态频繁模式并行挖掘方法,能以最小的空间代价来保存时态频繁模式的历史信息,提高频繁模式挖掘的准确性。
本发明所提供的技术方案为:
一种面向流数据的增量式时态频繁模式并行挖掘方法,包括两部分,第一部分为时态频繁模式和时态次频繁模式的增量式挖掘,第二部分是时态频繁模式树TFP-tree的重建;
算法在获取了当前数据集的K-项集计数后通过历史的频繁模式树和历史次频繁模式的信息对每个频繁模式的权重进行更新计算,将更新完权重的频繁模式根据阈值分别加入到时态频繁模式集合和时态次频繁模式集合中,具体算法描述如下:
第一部分具体步骤为:
将初始时刻的时态次频繁模式(SFP-list)0设置为空集,初始时刻的时态频繁模式树(TFP-tree)0设置为一个带root节点的空树;通过以下步骤对历史时态频繁模式集和时态次频繁模式进行更新,得到t时刻(当前时刻)的时态次频繁模式集(SFP-list)t和时态频繁模式集(FP-list)t,(SFP-list)t和(FP-list)t中的元素形式为以模式名称为key值,以相应模式在t时刻的权重为value值的键值对:
S11、输入t时刻的数据集DBt、t-1时刻的时态次频繁模式集(SFP-list)t-1、t-1时刻的时态频繁模式树(TFP-tree)t-1;设置时态频繁模式权重阈值θ1,时态次频繁模式权重阈值θ2,θ1>θ2>0(经验值);
S12、从t时刻的数据集DBt中获取集合(K-list)t,集合(K-list)t中的元素形式为以K-项集,即模式为key值,以相应K-项集的计数为value值的键值对;
S13、遍历(K-list)t中的每一个模式Ii,对其分别进行以下操作:
判断Ii是否在(TFP-tree)t-1中;若是,则从时态频繁模式树(TFP-tree)t-1中获取Ii在t-1时刻的权重
Figure BDA0001850326740000021
(历史权重);
否则判断Ii是否在(SFP-list)t-1中;若是,则从时态次频繁模式集(SFP-list)t-1中获取Ii在t-1时刻的权重
Figure BDA0001850326740000022
否则说明Ii在历史中没有出现,令其在t-1时刻的权重
Figure BDA0001850326740000023
计算Ii在t时刻的权重
Figure BDA0001850326740000024
判断是否有
Figure BDA0001850326740000025
若是,则形成以Ii为key值,以
Figure BDA0001850326740000026
为value值的键值对,并将其添加到时态频繁模式集(FP-list)t中;
否则判断是否有
Figure BDA0001850326740000031
若是,则形成以Ii为key值,以
Figure BDA0001850326740000032
为value值的键值对,并将其添加到时态次频繁模式集(SFP-list)t中;若
Figure BDA0001850326740000033
则Ii不属于时态频繁模式也不属于时态次频繁模式。
S14、返回t时刻的时态次频繁模式集(SFP-list)t和t时刻的时态频繁模式集(FP-list)t
第二部分具体步骤为:
获得t时刻时态频繁模式集(FP-list)t后,根据(FP-list)t对时态频繁模式树进行重建式更新,获得(TFP-tree)t,(TFP-tree)t中的节点为以在内存中保存当前时刻的时态频繁模式的权重信息,具体步骤如下:
S21、输入(FP-list)t
S22、初始化一个带root节点的空的时态频繁模式树(TFP-tree)t
S23、对于(FP-list)t中的每一个数据项,统计包含其的所有模式的权重之和,作为该数据项的计数;将(FP-list)t中的所有数据项按降序排列,记为(F-list)t
S24、对于(FP-list)t中的每一个模式,将其中的数据项按在(F-list)t中的次序排列(从而有效利用前缀树的特点来减小TFP-tree的规模;若某一模式中,两个数据项的计数相等,则这两个数据项在该模式中的排序保持不变),将排序后的(FP-list)t记为
Figure BDA0001850326740000034
S25、遍历
Figure BDA0001850326740000035
中的每一个模式Ii,对其分别进行以下操作:
判断(TFP-tree)t是否包含Ii,若是则更新(TFP-tree)t中Ii的权重值,否则
将Ii插入(TFP-tree)t中,并添加其权重值;
S26、返回(TFP-tree)t
进一步地,由于Redis的快速读写性能,采用Redis存储技术来保存t-1时刻的次频繁模式集(SFP-list)t-1、t-1时刻的时态频繁模式树(TFP-tree)t-1,即历史的时态次频繁模式和时态频繁模式信息,为下一批数据提供历史信息的回溯。
当有多个计算节点时,如果相同计算节点之间的计算量差别较大,任务分布不均,就会导致系统整体计算运行时间代价较大。因此,本发明在进行并行的FP-Growth挖掘之前,先综合计算节点资源和数据计算量对数据进行负载均衡分组,以为了提高系统的计算速度。
进一步地,所述步骤12中,获取集合(K-list)t的具体步骤为:
1)、候选一项集并行计算
当事务记录持续到达时,使用MapReduce程序对事务记录中的数据项进行并行计数,以获取候选一项集,步骤如下:
11)、由事务记录得到数据项;以事务记录的行号作为键值对的key值,该行的事务记录作为键值对的value值,作为Mapper的输入数据,输出为以数据项为key值,1为value值的键值对;
12)、获取所有一项的计数;MapReduce程序将具有相同key值的键值对组合起来,经过统计后输出以数据项为key值,计数为value值的键值对,即得到各个数据项的计数;
13)、合并排序;将计数小于最小支持度σ的数据项去除,剩下的所有数据项构成候选一项集;
2)、负载均衡分组
负载均衡分组的传统做法的直接均分,即根据计算节点的个数n将F-list划分成n组。然而,在频繁模式树中,候选一项集中的数据项作为树中的节点,从根节点出发到叶子节点经过一条路径上的节点为候选项,路径上节点的权重为一项集中节点出现的次数,是自上向下逐渐减小的,越靠近底层的叶子节点的出现次数越小,而对应的条件模式树越高,在对频繁项进行挖掘时所迭代的次数就越多,计算的负载就越大。因此,本发明将将频繁模式树的叶子节点和非叶子节点进行合理搭配分组,使得每个分组对应的计算节点的计算量大致相同,从而实现系统计算的负载均衡。具体为:
21)、将候选一项集中的数据项按计数大小降序排列,将排序好的候选一项集记为F-list;
22)、对事务记录集T-list中的每条事务记录,将其中的数据项按在F-list中的次序进行排列,并插入到频繁模式树中,全部的事务记录插入完成后得到频繁模式树;
23)、设系统中计算节点个数为n,根据候选一项集中各个数据项在频繁树中的层次,将其均衡分为n组,使得n个分组对应的计算节点的计算量大致相同(以不同分组间数据项的计算量差值最小为目标进行分组),第gid个候选一项集分组记为(G-list)gid,gid=1,2,…,n;
在图2中展现了由原始事务记录进行分组整个过程示例,设最小支持度0.4,系统有两个计算节点。首先通过去除小于最小支持度的项m,再合并排序后得到候选一项集F-list,然后根据将事务记录中的数据项按在F-list中的次序进行排列,并插入到频繁模式树中,全部的事务记录插入完成后得到频繁模式树,根据数据项在频繁树中的层次和系统所拥有的计算资源进行均衡搭配分成两组,得到(G-list)1和(G-list)2,两组中的候选一项集能够在一定程度上保证均衡的计算量。
3)、计算K-项集计数
首先根据候选一项集分组,对原始事务记录进行分组,然后在各计算节点进行局部K-项集并行计数;最后将所有局部K-项集计数合并成全局的K-项集计数。其具体过程如下:
31)、对于事务记录集T-list中的排序好的每条事务记录Ti(步骤21)中进行了排序)分别从右向左进行遍历;步骤如下:
i、取j值为Ti中最后一个数据项的序号;
ii、查看其数据项aj所属的候选一项集分组的组号gid;若组号gid在该事务记录之前的遍历过程中出现过,则直接转步骤iii,否则,产生键值对<key=gid,value=a1,a2,..aj>,该键值对中value值为该事务记录中第1至第j个数据项;
iii、令j=j-1,返回步骤ii,直至j=0,该事务记录的遍历完成;
对所有事务记录遍历完成后,将key值均为gid(key值相同)的键值对组合在一起,记为事务记录分组(T-list)gid
例如图2中,第一条事务记录a,f,c,第一个元素为c,c的为分组为1,因此记为<key=1,value=a,f,c>,第二个元素为f,f的组号为2,因此记为<key=2,value=a,f>,接下来的元素a,因为a所对应的分组1之前已经分配使用了,所以对a不进行处理。这样第一条事务记录就分组完毕,剩下其他的事务记录按照同样的方法进行分组。
32)、将事务记录分组(T-list)gid和对应候选一项集(G-list)gid作为第gid个计算节点中Reduce程序的输入数据,然后在Reduce程序中调用FP-Growth算法进行K-项集的并行计数,获取局部K-项集的计数;
33)、将所有局部K-项集计数合并成全局K-项集计数;由所有的K-项集及其相应的全局K-项集计数构成集合(K-list)t
在上述步骤31)、32)中,使用MapReduce程序进行并行局部计算。
进一步地,所述S13中,将Ii在集合(K-list)t中的计数作为其在t时刻的权重
Figure BDA0001850326740000051
或者,定义Ii在t时刻时态频繁度fi t作为其在t时刻的权重
Figure BDA0001850326740000052
fi t的计算方法为:
设Lt={Ii|i=1,2,....}为t时刻所有模式的集合,Ct={(Ii,fi t)|i=1,2,...}为在模式集Lt中每一模式Ii和其在t时刻的时态频繁度的集合;随着数据流的流入,在t时刻统计出模式Ii在本批数据流中的出现次数,结合时间累积性对Ii在t时刻的时态频繁度fi t进行更新,模式Ii在本批数据流中未出现则时态频繁度衰减,其计算公式如(1)所示:
Figure BDA0001850326740000061
式(1)中,
Figure BDA0001850326740000062
为模式Ii在t时刻出现的次数(集合(K-list)t中一个K-项集即为一个模式,集合(K-list)t中K-项集的计数,即为该K-项集在t时刻出现的次数),
Figure BDA0001850326740000063
为设置的时间衰减因子,
Figure BDA0001850326740000064
last_time为模式Ii上次出现的时间;公式(1)表明如果在数据流中模式Ii经常出现且出现的次数较多,其时态频繁度的值就会越高(随着时间不断累积);如果模式Ii出现不频繁且最后一次出现时刻距离当前时刻越远,其时态频繁度值就会越小(随着时间不断衰减),当Ii长时间不出现时,其度值衰减到低于一个阈值,此时模式Ii就会从频繁模式集中被移除成为非频繁模式;
Tt表示数据流从初始时刻到t时刻(当前时刻)的这段时区内按时间粒度来划分的计数时刻数目,
Figure BDA0001850326740000065
Figure BDA0001850326740000066
为从初始时刻到t时刻内在每个计数时刻实际出现了模式Ii的时刻总数(例如,以年为时间粒度,数据流开始时刻为2010年,当前时刻为2018年,T2018=8,在此时间内数据项分别在2011,2015的两年出现,那么当前时刻
Figure BDA0001850326740000067
);Tt
Figure BDA0001850326740000068
的累积统计公式分别如公式(2)和(3)所示:
Tt=Tt-1+1 (2)
Figure BDA0001850326740000069
在流数据中,数据项的出现次数随时间的推移不断累积,同时,也正是因为时间的推移数据项之间关系的强度也会下降,所以,频繁度计算不仅考虑数据项随时间累积的次数,还需要考虑随时间的衰减程度。本发明中时态频繁度的计算考虑了时间累积性和时间衰减性。
有益效果:
本发明提出了一种适合于Spark Streaming计算环境的基于FP-Growth的流数据时态频繁模式并行挖掘方案。在并行化处理框架中,Apache Spark是专为大规模数据处理而设计的快速通用的计算引擎,具有较好的数据并行性和可伸缩性[3],Spark Streaming是当前流式数据处理的主流计算框架[4]。本发明运用Spark Streaming(Mapper、MapReduce程序等)对流式数据进行并行数据挖掘,同时结合FP-Growth算法的分治策略和均衡分组,大大提升了FP-Growth算法的应用价值。本发明以时间顺序序列数据流作为输入,针对流式数据的信息累积特点,提出了增量式时态频繁模式挖掘算法(Incremental temporalfrequent pattern mining algorithm,简称ITFP),将当前时态频繁模式信息作为时序增量进行累积更新,使得挖掘出的频繁模式具有有效性。
(1)使用一个专门的时态频繁模式树TFP-tree(Time Frequent Pattern tree)来保存历史频繁模式信息,记录随时间变化的权重;由于后续到达数据量较大,会造成历史时态频繁模式中项的次序发生变化,无法直接在原有的时态频繁模式树上进行更新,因此本本发明采用对时态频繁模式树进行重建式更新,达到以最小的空间代价来保存时态频繁模式的历史信息的目的;
(2)在计算当前时态频繁模式时同时获取时态次频繁模式,并存储在Radis中,用时态次频繁模式来保留有效的非频繁模式历史信息,时态次频繁模式在当前时刻是非频繁模式,但在后续数据的累积有很大可能性成为频繁模式,将它们作为历史次频繁模式保存起来,为下一时刻挖掘频繁模式提供回溯窗口,从而提高频繁模式挖掘的准确性。
(3)将当前时刻的K-项集计数与前面两部分历史信息进行累积,实现增量式时态频繁模式挖掘,降低了时态频繁模式的误差。
(4)针对流数据中事务的时间属性,设计了具有随时间衰减或增长的时态频繁度计算方法,充分利用流数据的时序特征来度量数据集中不同对象的关系紧密程度随时间的变化程度。
附图说明
图1为本发明流程图;
图2为本发明中计数和负载均衡分组示例;
图3为本发明增量式时态频繁模式挖掘原理示例;
图4为本发明与非时态频繁度ITFP的预测对比;
图5为不同计算节点和支持度下算法运行时间对比。
具体实施方式
以下结合附图和具体实施方式对本发明进行进一步具体说明。
如图1所示,本发明主要包括三部分:时间片流数据的分布式存储,并行挖掘K-项集计数,时态频繁模式的存储与更新。
系统实时地接收按时间序列排列的数据流,将流数据分批后,提交SparkStreaming处理引擎进行分布式并行挖掘,然后将每个计算节点结果进行聚合,生成全局挖掘结果,同时,当数据流不断到达,对历史的时态频繁模式进行更新与存储。
(1)时间片流数据分布式存储
当流数据以时间片为单位不断到达时,使用分布式文件系统(HDFS)以递增方式将时间片上的所有数据分批存储在文件系统中。利用Spark Streaming中的文件监听方法对分布式文件系统进行监听,当文件系统中有数据达到时,立即将所有的数据取出,交由基于Spark Streaming的并行FP-Growth算法进行处理。
(2)并行挖掘K-项集计数
在并行挖掘局部K-项集获取K-项集计数时,首先,对数据中的一项集进行并行计数,并将并行统计结果进行合并。然后,筛选出候选频繁一项集,并按计数降序排序,根据候选频繁一项集计数的大小和并行挖掘计算节点个数,对候选频繁一项集进行均衡分组,并将组内候选频繁一项集对应的事务记录分发到该组的计算节点上,用并行FP-Growth算法对局部K-项集进行分组计数,最后将局部K-项集计数进行汇总。
(3)时态频繁模式的存储与更新
当t时刻的数据流到达时,首先用一个MapReduce并行处理得到一项集的计数,并从中获取候选频繁一项集,然后将候选一项集合并排序以及负载均衡分组,用一个MapReduce为每组分配一个并行计算节点,并进行局部K-项集的计数,最后,将局部的K-项集汇总成全局K-项集计数;基于形成的全局k-项集计数,同时结合历史时态频繁模式树和历史时态次频繁模式挖掘出当前时刻的时态频繁模式和时态次频繁模式,实现当前时态频繁模式进行增量更新,以保存流式数据按时序累积的时态信息;并根据时态频繁模式集重建时态频繁模式树TFP-tree(Time Frequent Pattern tree),以保存当前时刻的时态频繁模式信息;同时,将时态次频繁模式作为可能成为时态频繁模式集的历史记录存储在Radis中。
在对时态频繁模式进行增量更新的过程中,可以直接将各模式在集合(K-list)t中的计数作为其在当前时刻的权重。优选地,定义各模式在当前时刻时态频繁度作为其在当前时刻的权重,基于时间累积的时态频繁度计算公式,利用当前时刻的全局k-项集计数、以t-1时刻的时态频繁模式和时态次频繁模式一起进行当前时态频繁度计算,以此得到当前时刻的时态频繁模式和时态次频繁模式,并用当前时刻的时态频繁模式对TFP-tree进行重建式更新,其具体过程用图3示例说明。
在图3中主要过程包含时态频繁模式和时态次频繁模式的增量式挖掘,和时态频繁模式树TFP-tree的重建式更新。
在图3中,设t-1时刻为初始时刻,t时刻为当前时刻,针对(K-list)t中的每一个模式Ii,若其出现在t-1时刻的时态频繁模式树(TFP-tree)t-1中,对其进行时态频繁度累积计算后,添加到当前时态频繁模式(FP-list)t中,例如AB在(TFP-tree)t-1的频繁度为3,并且在(K-list)t中AB出现2次,根据公式(1)中第二个公式可得到当前时刻AB的时态频繁度累积值为5,然后添加到(FP-list)t中;而在t时刻由于ADE未出现在(K-list)t,根据公式(1)中第三个公式将其频繁度值衰减为4(
Figure BDA0001850326740000091
设置为0.2),并添加到(FP-list)t中。针对(K-list)t中新出现的项,如{BF:1,BE:5,AE:1,AC:1},其中BF又在t-1时刻的时态次频繁模式(SFP-list)t-1中出现了一次,对其时态频繁度进行累积,其频繁度大于θ1,则将其从(SFP-list)t-1移除加入到(FP-list)t中;而AE在t-1时刻的时态次频繁模式(SFP-list)t-1中没有出现,且时态频繁度计算后小于θ1且大于θ2,则将其加入到当前时刻的时态次频繁模式(SFP-list)t中,这样就完成了对当前时态频繁模式(FP-list)t和时态频繁模式(SFP-list)t的更新。
图3中,在获得更新完成的当前时态频繁模式集(FP-list)t后,首先统计(FP-list)t中的一项集的计数,通过排序得到D-list,然后将(FP-list)t中的频繁模式按D-list中项的顺序进行排序,得到排序后的时态频繁模式(FP-list)t +。此时可以发现部分频繁项的次序发生了变化,如AED与t-1时刻的ADE项顺序发生已经变化,因此不能够对t-1的频繁项模式树直接进行修改,同时为了能够有效利用前缀树的特点来减小TFP-tree的规模,必须对TFP-tree树进行如下重建式更新。首先初始化一个空的(TFP-tree)t,然后遍历(FP-list)t +中的所有时态频繁模式,将每个时态频繁模式其按顺序插入到新的(TFP-tree)t路径中,节点的权值表示从根节点到当前节点路径的时态频繁度,直到(FP-list)t +中所有频繁模式遍历完,新的(TFP-tree)t重建完成。
实验分析
使用AMiner-Paper公共数据集[6](www.aminer.cn/billboard/aminernetwork),数据集中的每条数据记录包含作者,论文名,论文发表时间,杂志名称等信息。我们抽取了从2005年到2014年共10年将约120万条包含作者,论文发表时间的数据记录,然后将数据按年划分,每年的数据量分布如表1所示,并利用该数据集从三个方面来验证基于SparkStreaming的增量式时态频繁模式挖掘方法的有效性。(1)用经典FP-Growth算法做基准验证本发明的准确性;(2)使用时态频繁度ITFP(在对时态频繁模式进行增量更新的过程中,将各模式在当前时刻时态频繁度作为其在当前时刻的权重)和非时态频繁度ITFP(在对时态频繁模式进行增量更新的过程中,直接将各模式在集合(K-list)t中的计数作为其在当前时刻的权重)分别进行频繁模式挖掘,以验证时态频繁度的有效性;(3)验证本发明在分布式环境下的可扩展性。
表1数据量分布表
Figure BDA0001850326740000092
Figure BDA0001850326740000101
1、准确性验证
为了验证本发明(ITFP,此处为时态频繁度ITFP)的准确性,以经典FP-Growth算法(非增量式挖掘)的挖掘的结果作为基准,用它与本发明挖掘结果进行对比。选取上述10年数据集中2010年的数据为初始数据,然后分别选取2011年数据中的1万条数据、3万条数据、6万条数据、10万条数据作为增量数据,将初始数据加上增量数据组成数据集四个数据集。实验用的环境为CPU i7-6700、4G RAM,Ubuntu14.04、Scala2.11、Spark2.2。设置ITFP算法频繁模式阈值1和FP-Growth算法最小支持度δ相对应的阈值都为4,分别使用这两个算法对四个不同数据集进行挖掘,其结果对比如表2所示。
表2 FP-Growth与ITFP频繁模式对比
Figure BDA0001850326740000102
从表2中的四组数据可以看出,ITFP算法挖掘的频繁模式与FP-Growth算法挖掘的结果相同率平均达到94.0%。由此可见,ITFP算法对流数据实现增量式挖掘能基本保持了挖掘质量,这是因为ITFP算法使用次频繁模式集来保留了重要的历史信息以此来保证了准确率,通过合理设置ITFP算法中的次频繁模式阈值θ2(实验设置为2),ITFP算法可以保证在流数据频繁模式挖掘结果的质量。
2、时态频繁度的有效性验证
为了验证本发明的有效性,用时态频繁度ITFP和非时态频繁度ITFP算法挖掘结果来进行预测对比,实验在一台环境配置为CPU i7-6700,RAM 16GB的主机上搭建的Spark集群,其中包含1个管理节点Master和2个计算节点Slave,其中Master节点的配置为CPU i7-6700、4G RAM,Ubuntu14.04、Scala2.11、Spark2.2,Slave节点的内存为2G RAM,其他配置与Master节点相同。两种方法设置相同的频繁模式阈值θ1和次频繁模式阈值θ21=3,θ2=2),取2005-2013年的数据用两种方法进行频繁模式挖掘,分别得到第9年(2013)的两个频繁模式集作为预测集,取置信度为前top-10,top-30,top-50,top-80,top-100的频繁模式分别组成五组频繁模式集,然后观察两个预测集中每组的频繁模式项在第10年(2014)的实际数据集中是否出现,以此来进行两个算法的预测结果的准确性对比,其结果如图4所示。
由图4可以看出,本发明预测的频繁模式在2014年数据集中实际出现的条数更多,五组数据时态频繁度ITFP预测的平均准确率为74.2%,而非时态频繁度ITFP预测的平均准确率为63.8%,因此,本发明对未来的预测效果更佳,这是因为将时间累积性引入到频繁度计算中,使得挖掘出的频繁模式集更具有实际有效性。
3、可扩展性验证
基于Spark Streaming的ITFP算法的可扩展性实验是在一台环境配置为Ubuntu16.04,CPU i7-6800k(6核12线程),RAM 64GB的主机上搭建的Spark集群,共设置11台虚拟主机,其中一台为管理节点Master,环境为4G RAM,Ubuntu16.04、Scala2.12、Spark2.3,其余10台为计算节点Slaver,节点内存为2G RAM其他配置与Master节点相同。计算节点从2逐步扩展到10个,设置ITFP(此处为时态频繁度ITFP)算法时态次频繁模式权重阈值θ2为2,在时态频繁模式权重阈值θ1分别为3,4,5时进行观察,针对不同阈值和不同计算节点数目情况下的运行时间,以验证系统的可扩展性,取2005年到2014年10年的数据,其实验结果如下图5所示。
由图5可以看出,在时态频繁度阈值相同的情况下,随着计算节点的增加算法运行所消耗的时间越来越小;随着计算节点的增加,曲线后期开始运行耗时下降变缓,这是因为计算节点之间的通信量增加造成时间开销增大。同时,在计算节点相同而时态频繁度阈值不同的情况下,随着频繁度阈值增大运行耗时不断减小,这是因为频繁度阈值越频繁项的数目越少,在并行计算中所分发的数据量就变少,使得总体的时间开销降低。
上述验证的实验结果表明,本发明具有较好的准确性、有效性和在分布式环境下的可扩展性。
参考文献(References)
[1]Krawczyk B,Minku L L,Gama J,et al.Ensemble learning for datastream analysis:A survey[J].Information Fusion,2017,37(C):132-156.
[2]Huang F,Zou Z,Liu X,et al.Association Rules Mining for AcademicCooperation Based on Time Extension and Duration Accumulation[C]//International Conference on Computer Science&Service System.IEEE,2012:2007-2012.
[3]Cuzzocrea A,Jiang F,Leung C K,et al.Mining Popular Patterns:ANovel Mining Problem and Its Application to Static Transactional Databasesand Dynamic Data Streams[J].2015,9260:115-139.
[4]崔星灿,禹晓辉,刘洋,等.分布式流处理技术综述[J].计算机研究与发展,2015,52(2):318-332.
[5]Cheung D W,Wong C Y,Han J,et al.Maintenance of discoveredassociation rules in large databases:an incremental updating technique[J].1996,40(10):106-114.
[6]Tang J,Zhang J,Yao L,et al.ArnetMiner:extraction and mining ofacademic social networks[C]//ACM SIGKDD International Conference on KnowledgeDiscovery and Data Mining.DBLP,2008:990-998.

Claims (4)

1.一种面向流数据的增量式时态频繁模式并行挖掘方法,其特征在于:包括两部分,第一部分为时态频繁模式和时态次频繁模式的增量式挖掘,第二部分是时态频繁模式树的重建;
第一部分具体步骤为:
初始化时态次频繁模式(SFP-list)0为空集,时态频繁模式树(TFP-tree)0为一个带root节点的空树;通过以下步骤对t-1时刻的时态频繁模式集和时态次频繁模式进行更新,得到t时刻的时态次频繁模式集(SFP-list)t和时态频繁模式集(FP-list)t,(SFP-list)t和(FP-list)t中的元素形式为以模式名称为key值,以相应模式在t时刻的权重为value值的键值对:
S11、输入t时刻的数据集DBt、t-1时刻的时态次频繁模式集(SFP-list)t-1、t-1时刻的时态频繁模式树(TFP-tree)t-1;设置时态频繁模式权重阈值θ1,时态次频繁模式权重阈值θ2,θ1>θ2>0;
S12、从t时刻的数据集DBt中获取集合(K-list)t,集合(K-list)t中的元素形式为以K-项集,即模式为key值,以相应K-项集的计数为value值的键值对;
S13、遍历(K-list)t中的每一个模式Ii,对其分别进行以下操作:
判断Ii是否在(TFP-tree)t-1中;若是,则从时态频繁模式树(TFP-tree)t-1中获取Ii在t-1时刻的权重
Figure FDA0003535288410000011
否则判断Ii是否在(SFP-list)t-1中;若是,则从时态次频繁模式集(SFP-list)t-1中获取Ii在t-1时刻的权重
Figure FDA0003535288410000012
否则说明Ii在历史中没有出现,令其在t-1时刻的权重
Figure FDA0003535288410000013
计算Ii在t时刻的权重
Figure FDA0003535288410000014
判断是否有
Figure FDA0003535288410000015
若是,则形成以Ii为key值,以
Figure FDA0003535288410000016
为value值的键值对,并将其添加到时态频繁模式集(FP-list)t中;
否则判断是否有
Figure FDA0003535288410000017
若是,则形成以Ii为key值,以
Figure FDA0003535288410000018
为value值的键值对,并将其添加到时态次频繁模式集(SFP-list)t中;若
Figure FDA0003535288410000019
则Ii不属于时态频繁模式也不属于时态次频繁模式;
S14、返回t时刻的时态次频繁模式集(SFP-list)t和t时刻的时态频繁模式集(FP-list)t
第二部分具体步骤为:
S21、输入(FP-list)t
S22、初始化一个带root节点的空的时态频繁模式树(TFP-tree)t
S23、对于(FP-list)t中的每一个数据项,统计包含其的所有模式的权重之和,作为该数据项的计数;将(FP-list)t中的所有数据项按降序排列,记为(F-list)t
S24、对于(FP-list)t中的每一个模式,将其中的数据项按在(F-list)t中的次序排列,将排序后的(FP-list)t记为
Figure FDA0003535288410000021
S25、遍历
Figure FDA0003535288410000022
中的每一个模式Ii,对其分别进行以下操作:
判断(TFP-tree)t是否包含Ii,若是则更新(TFP-tree)t中Ii的权重,否则
将Ii插入(TFP-tree)t中,并添加其权重;
S26、返回(TFP-tree)t
所述步骤12中,获取集合(K-list)t的具体步骤为:
1)、候选一项集并行计算;
11)、由事务记录得到数据项;以事务记录的行号作为键值对的key值,该行的事务记录作为键值对的value值,作为Mapper的输入数据,输出为以数据项为key值,1为value值的键值对;
12)、获取所有一项的计数;MapReduce程序将具有相同key值的键值对组合起来,经过统计后输出以数据项为key值,计数为value值的键值对,即得到各个数据项的计数;
13)、合并排序;将计数小于最小支持度σ的数据项去除,剩下的所有数据项构成候选一项集;
2)、负载均衡分组;
21)、将候选一项集中的数据项按计数大小降序排列,将排序好的候选一项集记为F
-list;
22)、对事务记录集T-list中的每条事务记录,将其中的数据项按在F-list中的次序进行排列,并插入到频繁模式树中,全部的事务记录插入完成后得到频繁模式树;
23)、设系统中计算节点个数为n,根据候选一项集中各个数据项在频繁树中的层次,将其均衡分为n组,使得n个分组对应的计算节点的计算量大致相同,第gid个候选一项集分组记为(G-list)gid,gid=1,2,…,n;
3)、计算K-项集计数
31)、对于事务记录集T-list中的排序好的每条事务记录Ti分别从右向左进行遍历;步骤如下:
i、取j值为Ti中最后一个数据项的序号;
ii、查看其数据项aj所属的候选一项集分组的组号gid;若组号gid在该事务记录之前的遍历过程中出现过,则直接转步骤iii,否则,产生键值对<key=gid,value=a1,a2,..aj>,该键值对中value值为Ti中第1至第j个数据项;
iii、令j=j-1,返回步骤ii,直至j=0,Ti的遍历完成;
对所有事务记录遍历完成后,将key值均为gid的键值对组合在一起,记为事务记录分组(T-list)gid
32)、将事务记录分组(T-list)gid和对应候选一项集(G-list)gid作为第gid个计算节点中Reduce程序的输入数据,然后在Reduce程序中调用FP-Growth算法进行K-项集的并行计数,获取局部K-项集的计数;
33)、将所有局部K-项集计数合并成全局K-项集计数;由所有的K-项集及其相应的全局K-项集计数构成集合(K-list)t
在上述步骤31)、32)中,使用MapReduce程序进行并行局部计算。
2.根据权利要求1所述的面向流数据的增量式时态频繁模式并行挖掘方法,其特征在于:采用Redis存储技术来保存t-1时刻的次频繁模式集(SFP-list)t-1和t-1时刻的时态频繁模式树(TFP-tree)t-1
3.根据权利要求1所述的面向流数据的增量式时态频繁模式并行挖掘方法,其特征在于:所述S13中,将Ii在集合(K-list)t中的计数作为其在t时刻的权重
Figure FDA0003535288410000031
4.根据权利要求1所述的面向流数据的增量式时态频繁模式并行挖掘方法,其特征在于:所述S13中,定义Ii在t时刻时态频繁度fi t作为其在t时刻的权重
Figure FDA0003535288410000032
fi t的计算方法为:
Figure FDA0003535288410000041
式中,
Figure FDA0003535288410000042
为模式Ii在t时刻出现的次数,其取值根据集合(K-list)t中的数据确定,
Figure FDA0003535288410000043
为设置的时间衰减因子,
Figure FDA0003535288410000044
last_time为模式Ii上次出现的时间;Tt表示数据流从初始时刻到t时刻的这段时区内按时间粒度来划分的计数时刻数目,
Figure FDA0003535288410000045
为从初始时刻到t时刻内在每个计数时刻实际出现了模式Ii的时刻总数,Tt
Figure FDA0003535288410000046
的累积统计公式分别如下:
Tt=Tt-1+1
Figure FDA0003535288410000047
CN201811292708.3A 2018-11-01 2018-11-01 面向流数据的增量式时态频繁模式并行挖掘方法 Active CN109471877B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811292708.3A CN109471877B (zh) 2018-11-01 2018-11-01 面向流数据的增量式时态频繁模式并行挖掘方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811292708.3A CN109471877B (zh) 2018-11-01 2018-11-01 面向流数据的增量式时态频繁模式并行挖掘方法

Publications (2)

Publication Number Publication Date
CN109471877A CN109471877A (zh) 2019-03-15
CN109471877B true CN109471877B (zh) 2022-04-22

Family

ID=65672152

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811292708.3A Active CN109471877B (zh) 2018-11-01 2018-11-01 面向流数据的增量式时态频繁模式并行挖掘方法

Country Status (1)

Country Link
CN (1) CN109471877B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110309200A (zh) * 2019-06-26 2019-10-08 复旦大学 改进的产品质量异常数据FP-Growth关联分析方法
CN111475837B (zh) * 2020-04-01 2023-04-07 广东工业大学 一种网络大数据隐私保护方法
CN114691749B (zh) * 2022-05-11 2024-03-19 江苏大学 一种基于滑动窗口的频繁项集并行增量挖掘的方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4039488B2 (ja) * 2003-08-18 2008-01-30 インターナショナル・ビジネス・マシーンズ・コーポレーション 多頻度パターン抽出装置、多頻度パターン抽出方法、及びそのプログラムと記録媒体
US7644079B2 (en) * 2005-02-28 2010-01-05 Gm Global Technology Operations, Inc. System and method for temporal data mining
CN101655857B (zh) * 2009-09-18 2013-05-08 西安建筑科技大学 基于关联规则挖掘技术挖掘建设法规领域数据的方法
CN104115144A (zh) * 2011-12-12 2014-10-22 安大略理工大学 用于多维时域和相关数据挖掘框架、分析和子分组的系统、方法和计算机程序
CN107229751A (zh) * 2017-06-28 2017-10-03 济南大学 一种面向流式数据的并行增量式关联规则挖掘方法
CN108509531B (zh) * 2018-03-15 2021-08-20 昆明理工大学 一种基于Spark平台的不确定数据集频繁项挖掘方法

Also Published As

Publication number Publication date
CN109471877A (zh) 2019-03-15

Similar Documents

Publication Publication Date Title
Abbas et al. Streaming graph partitioning: an experimental study
Kourtellis et al. Scalable online betweenness centrality in evolving graphs
CN109471877B (zh) 面向流数据的增量式时态频繁模式并行挖掘方法
CN105095413B (zh) 一种解决数据倾斜的方法及装置
Yang et al. Diamond sketch: Accurate per-flow measurement for big streaming data
Gent et al. Generalised arc consistency for the alldifferent constraint: An empirical survey
Jensen et al. Modelardb: Modular model-based time series management with spark and cassandra
Liu et al. Powerwalk: Scalable personalized pagerank via random walks with vertex-centric decomposition
Xie et al. Kraken: memory-efficient continual learning for large-scale real-time recommendations
Reguieg et al. Event correlation analytics: scaling process mining using mapreduce-aware event correlation discovery techniques
Wang et al. Heterogeneity-aware gradient coding for straggler tolerance
Cheng et al. Efficient event correlation over distributed systems
KR101296683B1 (ko) 데이터 스트림에서의 다중 조인 질의 처리를 위한 2 페이즈 수행 방법
Tang et al. An intermediate data partition algorithm for skew mitigation in spark computing environment
Leno et al. Discovering process maps from event streams
CN110689368A (zh) 一种移动应用内广告点击率预测系统设计方法
Zhao et al. Frequent subgraph mining based on Pregel
CN107506388A (zh) 一种面向Spark并行计算框架的迭代式数据均衡优化方法
Abdelli et al. A novel and efficient index based web service discovery approach
Feng et al. Scalable informative rule mining
Zhao et al. Cluster-reduce: Compressing sketches for distributed data streams
Firth et al. TAPER: query-aware, partition-enhancement for large, heterogenous graphs
Magnusson Social network analysis utilizing big data technology
do Carmo Oliveira et al. Set similarity joins with complex expressions on distributed platforms
Alemi et al. KTMiner: distributed k-truss detection in big graphs

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20240313

Address after: 230000 floor 1, building 2, phase I, e-commerce Park, Jinggang Road, Shushan Economic Development Zone, Hefei City, Anhui Province

Patentee after: Dragon totem Technology (Hefei) Co.,Ltd.

Country or region after: China

Address before: Yuelu District City, Hunan province 410083 Changsha Lushan Road No. 932

Patentee before: CENTRAL SOUTH University

Country or region before: China