一种关联分析算法的并行化方法

文档序号:6542308阅读:182来源:国知局
一种关联分析算法的并行化方法
【专利摘要】一种关联分析算法的并行化方法是针对一种经典的关联规则分析算法Apriori不能很好适应并行化的缺陷,设计了一种新的并行化方案。通过主控节点将计算任务进行分块,分配并分发给各个子计算节点。由各计算节点并行计算筛选频繁集,最后合并节点并返回结果统计,生成频繁集。再次分发频繁集,由各节点生成规则。由于每个计算节点仅处理一部分计算任务,解决了海量数据无法由单机读入内存进行处理和处理速度过慢的问题;且多个节点并行参与处理,有效提高了处理效率;并且对计算过程中的节点间的同步依赖、网络通讯负担过重、I/O操作过于频繁做了相应的改进,提高了数据库扫描和计算的速度。
【专利说明】一种关联分析算法的并行化方法
【技术领域】
[0001]本发明是针对一种经典的关联规则分析算法Apriori不能很好适应并行化的缺陷,设计了一种新的并行化方法,减少了节点间的同步依赖和网络通讯负担,提高了数据库扫描和计算的速度。属于分布式计算和云计算领域。
【背景技术】
[0002]云计算(Cloud Computing)是一种新兴的商业计算模型,它将计算任务分布在大量计算机构成的资源池上,使各种应用系统能够根据需要获取计算力、存储空间和各种软件服务,它是数据管理技术不断演进的结果。在上世纪末,分布式处理、并行处理和网格计算就已相当成熟,它们是云计算发展的技术基础,企业推动则是云计算快速发展的主要动力。目前,IT巨头正在相继开发云计算平台、云计算终端和服务器。
[0003]关联规则算法用来描述事物之间的联系和挖掘事物之间的相关性,其核心是通过统计数据项获得频繁项集,被广泛应用于分类设计“捆绑式销售”仓储货存配置等领域,关联规则的挖掘已经成为数据挖掘中一个非常重要的研究方向。
[0004]Apriori算法首先由Agrawal教授于1993年提出,是一种最有影响的挖掘布尔关联规则频繁项集的算法,其核心是基于两阶段频集思想的递推算法。该关联规则在分类上属于单维、单层、布尔关联规则,所有支持度大于最小支持度的项集称为频繁项集,简称频集。
[0005]该算法的基本思想是:首先找出所有的频集,这些项集出现的频繁性至少和预定义的最小支持度一样。然后由频集产生强关联规则,这些规则必须满足最小支持度和最小置信度。接着使用这些找到的频集产生期望的规则,产生只包含集合的项的所有规则,其中每一条规则的右部只有一项,这里采用的是中规则的定义。一旦这些规则被生成,那么只有那些大于用户给定的最小可信度的规则才被留下来。为了生成所有频集,使用了递推的方法,依次从k项集推出k+Ι项集。
[0006]可能产生大量的候选集,以及可能需要重复扫描数据库,是Apriori算法的两大缺点,然而随着挖掘数据的增大,其运算能力很快出现了瓶颈。因此,利用云计算将数据处理并行化来降低运算时间,提高处理能力成为了一个新的方向。本发明提出了一种新的并行化方案,使传统的Apriori算法适用于云计算环境中。

【发明内容】

[0007]技术问题:本发明的目的是针对一种经典的关联规则分析算法Apriori不能很好适应并行化的缺陷,设计了一种关联分析算法的并行化方法,减少了节点间的同步依赖和网络通讯负担,提高了数据库扫描和计算的速度,利用云计算解决了海量数据分析的困难和瓶颈。
[0008]技术方案:针对这些问题,本发明提出了一种关联分析算法的并行化方法,将频繁项的筛选和规则的生成分摊到了集群中并行完成。利用下一层的候选频繁集生成并不需要完全依赖于上一层的频繁集,取消了每层频繁集生成中的同步过程,采用先到先计算的规贝U,减少了节点间的同步依赖和网络通讯负担。通过事务编号集来定位扫描的位置,减小了i/o的压力,提高了数据库扫描和计算的速度。
[0009]现有的并行化大致分为两个思路:
[0010]一、将对事务数据库扫描的过程并行,把数据库分片,保存在各个节点上。每次循环开始时将候选频繁k-项集发送到各个节点上分别统计每项在局部数据库上的支持度,然后在循环结束时同步所有节点的计算结果,统计出每项的全局支持度并删除不满足阀值的项。
[0011]该方案减少了对数据库扫描所需的时间,在一定程度上提升了处理能力,但是每次循环结束时同步会存在不同节点之间的相互等待的问题。并且剪枝是在合并后完成,单个节点仅有扫描和统计的功能而没有判断功能,随着节点数的增多,通信量将迅速增大,给带宽带来了巨大压力。
[0012]二、将整个挖掘过程并行,把数据库分成η块,发送到每个节点上,针对每一块数据独立地进行传统Apriori算法的挖掘过程,阀值缩小为I/η。最后将每个节点输出的1-到k_项局部频繁集合并及扫描整个数据库,删除掉不满足阀值的项,得到整个频繁集。
[0013]该方案为节点增加了判断的能力,使得各节点可以独立完成剪枝,提高了并行程度,减轻了带宽压力。但是根据概率统计学,各节点每次生成的候选频繁k_项集应该是近似的。这种近似的挖掘过程将在各个节点上重复η遍,浪费了相当大的计算资源。
[0014]可以看出,将数据库分片虽然是一种简单的并行方案,但是各节点之间的通信量和计算量的平衡问题并无法妥善解决。
[0015]因此本发明尝试了一种新思路,算法的运行流程步骤如下:
[0016]该方法采用主从结构,由一台服务器作为主节点处理所有的调度和协调,其余服务器作为子节点完成计算任务,该并行化方法的步骤如下:
[0017]步骤1.启动所有服务器,将待分析的原始数据的数据库分别下载到所有服务器节点上;
[0018]步骤2.第一阶段分析开始,主节点扫描自身数据库,统计出整个1-项集以及事务总数,设定阀值,并将阀值发送到各个子节点上;
[0019]步骤3.将整个1-项集作为候选频繁1-项集,由主节点将每一项的统计任务分派给一个空闲的子节点;
[0020]步骤4.收到任务的各个子节点扫描自身数据库,统计该项的支持度,如果该项的支持度满足阀值则向主节点返回该项以及该项的支持度和事务编号集,如果不满足则删除掉该项;
[0021]步骤5.主节点将收到的返回结果加入频繁1-项集中,并连接这些项集生成按字典顺序排列的候选频繁2-项集,每生成一项,就连同其候选事务编号集一并分派给一个空闲的子节点;
[0022]步骤6.收到任务的各个子节点扫描所给的候选事务编号集,统计该项的支持度,如果该项的支持度满足阀值则向主节点返回该项以及该项的支持度和事务编号集,如果不满足则删除掉该项及其相关数据;
[0023]步骤7.主节点将收到的返回结果加入频繁2-项集中,并连接这些项集生成按字典顺序排列的候选频繁3-项集,每生成一项,就连同其候选事务编号集一并分派给空闲节
占.[0024]步骤8.重复步骤6,步骤7的过程,将每次返回的结果保存入频繁集,并连接生成更长的候选频繁集,直到没有新的项满足阀值为止,保存所有的频繁1-项、2-项、3-项……k_项集以及各自的支持度,将所有的频繁集按照频繁1-项集分组,第一阶段分析结束;
[0025]步骤9.第二阶段分析开始,按照分组将各组频繁集及其支持度发送给各个子节
占.[0026]步骤10.各子节点分别根据每组频繁集生成规则并计算其置信度,如果满足阀值则向主节点返回该规则,如果不满足则忽略;
[0027]步骤11.主节点将所有收到的返回结果保存,排序后即为规则集,第二阶段分析结束;
[0028]步骤12.输出显示规则集,结束。
[0029]有益效果:本发明提出了一种新的Apriori算法并行化方案,该方案的主要优势在于:
[0030]一、将每一项的统计过程独立并行,并且没有产生重复的计算,提升了整个候选频繁项集的生成速度; [0031]二、每个节点都具有判断的功能,不会向网络发送无用的数据,减轻了网络压力;
[0032]三、跨层统计的功能避免了各个节点之间相互等待的问题;
[0033]四、扫描上一层的事务编号集而不是整个数据库大量减少了每次扫描所需的时间,这对于需要多次扫描统计的Apriori算法来说节省的时间是相当可观的。
【专利附图】

【附图说明】
[0034]图1关联分析算法运行流程图。
[0035]图2分析集群架构图。
【具体实施方式】
[0036]细节说明:
[0037]k-项集:关联规则算法是为了从{A, B, C, D}, {A, B}......等集合中找出例如A — B
的规则。因此,例如{A},{C}就称之为1-项集,{Α,Β}就称之为2-项集,{A,B,C……}就称之为k-项集,其中k代表集合中有多少项。
[0038]频繁k_项集:出现的频率满足阀值的1-项集称之为频繁1-项集,出现的频率满足阀值的2-项集称之为频繁2-项集,同理,出现的频率满足阀值的k-项集称之为频繁k_项集。
[0039]候选频繁k_项集:通过集合连接得到的可能成为频繁2-项集的2-项集称之为候选频繁2-项集。通过集合连接得到的可能成为频繁k-项集的k-项集称之为候选频繁k_项集。
[0040]置信度:表示某条规则的可信程度。计算方法为下层频繁集的支持度与上层频繁集的支持度之商。例如,〈ABCE,3>,<AB, 10>,则规则AB — CE的置信度为30%。
[0041]跨层统计:由η项自然连接所产生的集分别为Cj1,G.......Cir15C;;个,呈菱形分布。通过Apriori算法产生的候选频繁k_项集的验证过程可以拆解成每一项的简单计数,是相互独立的,因此将该过程并行化是可行的。并且即使在候选频繁k-项集没有完全验证完毕的时候,将已经验证过的部分频繁k-项集进行连接,同样可以产生一部分候选频繁(k+l)_项集。也就是说不必等待同一层的所有频繁集完全确定之后才能开始下一次频繁集的生成和验证。因此将每一项单独验证还可以一定程度上解决各节点间的相互等待的问题。
[0042]事务编号集:每个节点都存储了整个事务数据库,事务数据形如下表,Tid表示事务的编号。
[0043]
【权利要求】
1.一种关联分析算法的并行化方法,其特征在于该方法采用主从结构,由一台服务器作为主节点处理所有的调度和协调,其余服务器作为子节点完成计算任务,该并行化方法的步骤如下: 步骤1.启动所有服务器,将待分析的原始数据的数据库分别下载到所有服务器节点上; 步骤2.第一阶段分析开始,主节点扫描自身数据库,统计出整个1-项集以及事务总数,设定阀值,并将阀值发送到各个子节点上; 步骤3.将整个1-项集作为候选频繁1-项集,由主节点将每一项的统计任务分派给一个空闲的子节点; 步骤4.收到任务的各个子节点扫描自身数据库,统计该项的支持度,如果该项的支持度满足阀值则向主节点返回该项以及该项的支持度和事务编号集,如果不满足则删除掉该项; 步骤5.主节点将收到的返回结果加入频繁1-项集中,并连接这些项集生成按字典顺序排列的候选频繁2-项集,每生成一项,就连同其候选事务编号集一并分派给一个空闲的子节点; 步骤6.收到任务的各个子节点扫描所给的候选事务编号集,统计该项的支持度,如果该项的支持度满足阀值则向主节点返回该项以及该项的支持度和事务编号集,如果不满足则删除掉该项及其相关数据;步骤7.主节点将收到的返回结果加入频繁2-项集中,并连接这些项集生成按字典顺序排列的候选频繁3-项集,每生成一项,就连同其候选事务编号集一并分派给空闲节点;步骤8.重复步骤6,步骤7的过程,将每次返回的结果保存入频繁集,并连接生成更长的候选频繁集,直到没有新的项满足阀值为止,保存所有的频繁1-项、2-项、3-项……k-项集以及各自的支持度,将所有的频繁集按照频繁1-项集分组,第一阶段分析结束; 步骤9.第二阶段分析开始,按照分组将各组频繁集及其支持度发送给各个子节点;步骤10.各子节点分别根据每组频繁集生成规则并计算其置信度,如果满足阀值则向主节点返回该规则,如果不满足则忽略; 步骤11.主节点将所有收到的返回结果保存,排序后即为规则集,第二阶段分析结束; 步骤12.输出显示规则集,结束。
【文档编号】G06F17/30GK103914528SQ201410124334
【公开日】2014年7月9日 申请日期:2014年3月28日 优先权日:2014年3月28日
【发明者】张琳, 邵天昊, 王汝传, 韩志杰, 付雄, 季一木 申请人:南京邮电大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1