论文部分内容阅读
随着信息时代的数据量高速增长,人们越来越热衷于从海量数据中发现有价值的信息。数据挖掘技术越来越成熟,数据挖掘理论与算法也日臻完善。随着数据量爆炸式的增长,算法的运行对计算机内存的要求越来越高,FP-Growth算法本身也存在着算法逻辑复杂和需要多次迭代等缺点,难以完成对海量数据的挖掘任务,这就需要开发全新的算法或者对传统的算法进行改进。本文基于Spark并行计算框架,从存储和分组两个方面提出了FP-Growth算法的改进策略,有效地提高了算法的性能。主要工作如下:第一,对存储策略的改进。Spark是基于内存的并行计算框架,将产生的中间结果存储于RDD中。面对海量数据,RDD不能满足存储所有的中间结果时,会释放暂时不需要的RDD,需要时再进行重新计算。本文结合Spark自身的特点,提出一种对中间计算结果缓存的方法。针对产生条件模式基时需要对分区后的事务集重复计算的问题,将分区后的事务集进行缓存;针对产生关联规则时需要对频繁项集重复计算的问题,将每一棵FP-Tree进行挖掘时产生的频繁项集进行缓存。通过对上述中间结果的缓存,有效地避免了重复计算带来的额外开销。第二,对分组方式的改进。在并行计算中,每个节点的负载量决定了节点的计算时间,整体的运行时间取决于最大负载量的节点。基于各个计算节点均衡负载的思想,提出一种分组的改进策略。该策略将降序排列后的频繁1-项集中项的位置作为负载量的权重指标,进行均衡分组,在一定程度上使得每个节点的负载量达到平衡,解决了因为各节点负载量不同而延缓整体运行时间的问题,减少了整体的运行时间,提高了算法效率。最后,本文基于Spark实现了改进后的算法,实验结果表明,提出的改进策略有效提高了FP-Growth算法的运行速度。