一种并行化的数据流频繁项集挖掘方法技术

技术编号:16755896 阅读:20 留言:0更新日期:2017-12-09 02:16
本发明专利技术公开了一种并行化的数据流频繁项集挖掘方法,旨在解决现有技术数据挖掘吞吐量小的问题;本申请包括初始化,预挖掘,FP‑Stream结构维护,频繁项集生成四部分,算法收集一小段时间内到达的事务,构成一个事务集,第一个事务集被特殊处理,它被用于初始化,以建立f_list和FP‑Stream结构,每个事务集触发一轮微批处理。每轮微批处理先进行预挖掘,再进行FP‑Stream结构维护,当计算请求到达时,算法利用FP‑Growth算法在指定的时间窗口内挖掘FP‑Stream结构得到频繁项集;本申请采用的算法增加了系统的整体吞吐量,极大程度提高了数据挖掘的处理速度;本申请适用于数据挖掘相关方面。

A parallel mining method for frequent itemsets of data streams

The invention discloses a parallel data stream frequent itemsets mining method to solve the problem of the existing technology of small mining throughput data; this application includes initialization, pre mining, maintenance FP Stream structure, frequent itemset generation algorithm in four parts, collected a short period of time to form a set of business affairs first, a transaction set by special processing, it is used to initialize, to establish f_list and FP Stream structure, each transaction in a batch of micro trigger. Each round of the micro batch pre mining, and maintenance of FP Stream structure, when calculating the request arrives, FP algorithm by using Growth algorithm within the specified time window FP Stream structure mining frequent itemsets; this application uses the algorithm to increase the overall throughput of the system, greatly improve the degree of processing the speed of data mining; this application applies to data mining related aspects.

【技术实现步骤摘要】
一种并行化的数据流频繁项集挖掘方法
本专利技术涉及数据挖掘领域,尤其涉及一种并行化的数据流频繁项集挖掘方法。
技术介绍
频繁项集挖掘也叫关联规则挖掘,目标是从大量事务中找出有价值项目间隐含的关系。所谓频繁项是指在事务集合中,出现频率较高的项目;频繁项集是指在事务集合中,多次同时出现的项目所组成的集合。极大频繁项集被定义为元素个数最多的频繁项集,它的所有超集都是非频繁项集。频繁项集挖掘的经典应用案例是利用频繁项集挖掘技术发现了啤酒销售和尿布销售之间的隐含关系。传统数据流上的频繁项集挖掘算法是基于单机环境,其吞吐量受单机环境的限制。然而,不断增长的海量数据已经远远超过了单机的处理能力,单机频繁项集挖掘技术仅适用于少量数据的环境。大数据时代,分布式计算是解决海量数据难题的重要手段。并行化的算法能够有效提升系统的整体吞吐量,所以在分布式环境下并行化地挖掘数据流中的频繁项集是极其重要的。鉴于对并行化的数据流频繁项集挖掘算法的需求,本专利技术提出一种基于微批处理思想的并行化数据流频繁项集挖掘方法。
技术实现思路
本专利技术的目的在于:针对现有技术数据挖掘吞吐量小的问题,本专利技术提供一种并行化吞吐量大的数据流频繁项集挖掘方法。本专利技术采用的技术方案如下:本申请提供了一种并行化的数据流频繁项集挖掘方法,包括以下步骤:步骤1:初始化,首个事务集到达时,进行算法初始化工作。步骤1.1:收集单位时间的所有事务,形成事务集,依次记为{B1…Bi},并分散存储至各个节点上,第一个事务集为B1,统计所有项目在B1中的频率,然后根据频率降序排列得到f_list;步骤1.2:用FP-growth算法,支持度阈值设为∈,挖掘事务集B1,并用挖掘事务集B1得到的项目集建立FP-Stream结构并储存至所述Zookeeper集群;步骤2:单轮微批处理当除了B1事务集的其他一个事务集到达时,进行一轮微批处理,每轮微批处理包含预挖掘部分与FP-Stream结构维护两部分,两部分依次分布式执行;步骤2.1:并行执行预挖掘,当一个事务集(首个事务集除外)到达时,进行一轮微批处理。每轮微批处理包含预挖掘与FP-Stream结构维护维护两部分,这两部分依次分布式执行;步骤2.1.1:统计分散在各个节点的Bi(i>1)中事务出现的对应频率,得到集合T,集合T中记录的形式为<事务,频率>;步骤2.1.2:以f_list为依据,对T中事务的项目进行排序,得到新的集合W;步骤2.1.3:再次统计集合T中事务对应的频率,得到新的集合R,求R中每条事务的元素个数大于1的项目集以及项目集对应的频率,组成集合S,集合S的记录形式为<项目集,频率>;步骤2.1.4:汇总步骤2.1.3中每一个项目集出现的频率;具体地,开始时,事务集Bi分散在各个节点上;执行第一步时,各节点读取本地的事务,将各事务发送到各节点,相同的事务会发送到同一节点,各节点每收到一条事务,就将其对应的计数增加1,这一步是一次典型的MapReduce过程;执行第二步时,各节点按条读取本地的<事务,频率>记录,对于每一条记录,以f_list作为标准,对事务中各项目进行排序;第三步与第一步相似,也是统计事务出现的频率,整个过程也是一次典型的MapReduce过程,与第一步有所不同的是,各节点收到一条记录后,对应的计数增量是频率字段的值。执行第四步时,各节点按条读取本地的记录,然后求事务元素个数大于1的子集,然后构成<项目集,频率>的键值对。最后一步是汇总各项目集的频率统计值,它与上一步构成了一次MapReduce过程,同一项目集的键值对发送到同一节点,各节点按照累加的规则,统计每个项目集的频率;步骤2.2:FP-Stream结构维护,预挖掘执行完毕后,下一步在各个节点上分布式进行FP-Stream结构的维护。步骤2.2.1:向各节点分发数据步骤2中预挖掘的输出集合中每一条记录转化为<key1,<key2,value>>的形式向集群各个节点发送,key1相同的记录被发送到相同的节点,key1是项目集key2的首项,value是项目集的频率;步骤2.2.2:建立集合E各节点建立一个空的集合E,用于记录被删除的项目集;步骤2.2.3:获取部分FP-Stream结构依次处理各节点收到的每条记录,若其key1字段是第一次出现,则从Zookeeper将FP-Stream结构中根节点的子树中以key1为根节点的子树下载到本地;步骤2.2.4:优化插入过程若E中存在任意一项前缀,则丢弃这条记录;若E中不存在符合的记录,将其插入FP-Stream结构:若FP-Stream中存在key2,则将value插入对应的倾斜时间窗口表,然后进行tailpruning;若key2的倾斜时间窗口表为空,则删除key2节点,并将key2加入E;若FP-Stream结构中不存在key2,且支持度小于∈,则将key2加入E;若FP-Stream结构中不存在key2,且key2的支持度不小于∈,将key2插入,并新建表项;步骤2.2.5:遍历本地FP-Stream结构并上传当节点收到的全部记录都处理完毕,从根节点出发,深度优先遍历本地存储的FP-Stream结构。对于碰到的每个节点,若在本轮处理过程中没有更新过,则加入一个0项,同时进行shiftback,然后进行tailpruning;遍历过程中,如果碰到叶子节点且表为空,则删除该节点,然后遍历其兄弟节点;若节点的孩子都被删除,节点变为叶节点,重复上述过程;遍历完成后,将整个FP-Stream结构上传至Zookeeper集群中;步骤2.2.6:遍历FP-Stream结构中未被访问的节点当所有节点的任务执行完毕后,任意选择一个节点,下载整个FP-Stream结构,并对其进行遍历:对于根节点的每棵子树,在本轮处理过程中,若其被访问过,放弃对其遍历;若没有被访问过,对其进行深度优先遍历,过程如步骤3.5所示,遍历完成后,将整个FP-Stream结构更新到Zookeeper中;进一步地,所述步骤FP-Stream结构采用的是倾斜时间窗口模型,窗口大小呈2的倍数增长,设当前时刻为N,则窗口的大小模式为:(N,N);(N-1,N-1),[(N-2,N-2)];(N-3,N-4);……,依次编号为level0~levelm级的窗口,每级窗口包含一个中间窗口和一个主窗口,两个大小相同,如(N-1,N-1)与(N-2,N-2),在FP-Stream结构中节点的倾斜时间窗口表上插入记录均要进行后移操作(shiftback);后移操作时,前一级的两个窗口合并向后加入后一级的主窗口,若后一级的两个窗口均为空,则直接加入后一级的主窗口;若后一级的中间窗口为空,则前一级的窗口直接作为后一级的主窗口,原来的主窗口加入本级的中间窗口;若后一级的两个窗口均不为空,则前一级的窗口加入后一级的主窗口,后一级的两个窗口合并后继续后移。进一步地,所述步骤2.2.5中的tailpruning具体步骤为:设有n个时间窗口,t0表示当前时间窗口,tn表示最老的时间窗口,tailpruning就是找出一个m,0≤m≤n,对[m,n]内的时间窗口,直接丢弃。m满足的条件如公本文档来自技高网...
一种并行化的数据流频繁项集挖掘方法

【技术保护点】
一种并行化的数据流频繁项集挖掘方法,其特征在于,包括以下步骤:步骤1:初始化首个事务集到达时,进行初始化步骤;步骤1.1:收集单位时间的所有事务,形成事务集,依次记为{B1…Bi},并分散存储至各个节点上,第一个事务集为B1,统计所有项目在B1中的频率,然后根据频率降序排列得到f_list;步骤1.2:用FP‑growth算法,支持度阈值设为∈,挖掘事务集B1,并用挖掘事务集B1得到的项目集建立FP‑Stream结构并储存至Zookeeper集群;步骤2:单轮微批处理当除了B1事务集的其他一个事务集到达时,进行一轮微批处理,每轮微批处理包含预挖掘部分与FP‑Stream结构维护两部分,两部分依次分布式执行;步骤2.1:并行执行预挖掘并行执行预挖掘是产生维护FP‑Stream结构所需的项目集;步骤2.1.1:统计分散在各个节点的Bi(i>1)中事务出现的对应频率,得到集合T;步骤2.1.2:以f_list为依据,对T中事务的项目进行排序,得到新的集合W;步骤2.1.3:再次统计事务对应的频率,得到新的集合R,求R中每条事务的元素个数大于1的项目集以及项目集对应的频率,组成集合S;步骤2.1.4:汇总步骤2.1.3中每一个项目集出现的频率;步骤2.2:FP‑Stream结构维护预挖掘执行完毕后,将在各个节点上分布式进行FP‑Stream结构维护;步骤2.2.1:向各节点分发数据步骤2.1中预挖掘的输出集合中每一条记录转化为<key1,<key2,value>>的形式向集群各个节点发送,key1相同的记录被发送到相同的节点,key1是项目集key2的首项,value是项目集的频率;步骤2.2.2:建立集合E各节点建立一个空的集合E,用于记录被删除的项目集;步骤2.2.3:获取部分FP‑Stream结构依次处理各节点收到的每条记录,若其key1字段是第一次出现,则从Zookeeper将FP‑Stream结构中根节点的子树中以key1为根节点的子树下载到本地;步骤2.2.4:优化插入过程提取出key2,用key2的所有前缀,查找E;步骤2.2.5:遍历本地FP‑Stream结构并上传至Zookeeper中当节点收到的全部记录都处理完毕,从根节点出发,深度优先遍历本地存储的FP‑Stream结构,遍历完成后,将整个FP‑Stream结构上传至Zookeeper集群中;步骤2.2.6:遍历FP‑Stream结构中未被访问的节点并更新至Zookeeper中;步骤3:频繁项集生成在指定的时间窗口内,用FP‑Growth算法挖掘得到频繁项集。...

【技术特征摘要】
1.一种并行化的数据流频繁项集挖掘方法,其特征在于,包括以下步骤:步骤1:初始化首个事务集到达时,进行初始化步骤;步骤1.1:收集单位时间的所有事务,形成事务集,依次记为{B1…Bi},并分散存储至各个节点上,第一个事务集为B1,统计所有项目在B1中的频率,然后根据频率降序排列得到f_list;步骤1.2:用FP-growth算法,支持度阈值设为∈,挖掘事务集B1,并用挖掘事务集B1得到的项目集建立FP-Stream结构并储存至Zookeeper集群;步骤2:单轮微批处理当除了B1事务集的其他一个事务集到达时,进行一轮微批处理,每轮微批处理包含预挖掘部分与FP-Stream结构维护两部分,两部分依次分布式执行;步骤2.1:并行执行预挖掘并行执行预挖掘是产生维护FP-Stream结构所需的项目集;步骤2.1.1:统计分散在各个节点的Bi(i>1)中事务出现的对应频率,得到集合T;步骤2.1.2:以f_list为依据,对T中事务的项目进行排序,得到新的集合W;步骤2.1.3:再次统计事务对应的频率,得到新的集合R,求R中每条事务的元素个数大于1的项目集以及项目集对应的频率,组成集合S;步骤2.1.4:汇总步骤2.1.3中每一个项目集出现的频率;步骤2.2:FP-Stream结构维护预挖掘执行完毕后,将在各个节点上分布式进行FP-Stream结构维护;步骤2.2.1:向各节点分发数据步骤2.1中预挖掘的输出集合中每一条记录转化为<key1,<key2,value>>的形式向集群各个节点发送,key1相同的记录被发送到相同的节点,key1是项目集key2的首项,value是项目集的频率;步骤2.2.2:建立集合E各节点建立一个空的集合E,用于记录被删除的项目集;步骤2.2.3:获取部分FP-Stream结构依次处理各节点收到的每条记录,若其key1字段是第一次出现,则从Zookeeper将FP-Stream结构中根节点的子树中以key1为根节点的子树下载到本地;步骤2.2.4:优化插入过程提取出key2,用key2的所有前缀,查找E;步骤2.2.5:遍历本地FP-Stream结构并上传至Zookeeper中当节点收到的全部记录都处理完毕,从根节点出发,深度优先遍历本地存储的FP-Stream结构,遍历完成...

【专利技术属性】
技术研发人员:段贵多罗光春田玲韩宏
申请(专利权)人:电子科技大学
类型:发明
国别省市:四川,51

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1