收稿日期:20180605;修回日期:20180727 基金项目:国家自然科学基金资助项目(61404069);国家自然科学基金青年基金资助项
目(41701479)
作者简介:王永贵(1967),男,内蒙古宁城人,教授,硕士,主要研究方向为大数据与数据仓库;谢南(1996),男(通信作者),辽宁铁岭人,硕
士,主要研究方向为数据挖掘(xienan0824@163.com);曲海成(1981),男,副教授,博士,主要研究方向为机器学习、数据挖掘.
基于存储改进的分区并行关联规则挖掘算法
王永贵,谢 南
,曲海成
(辽宁工程技术大学 软件学院,辽宁 葫芦岛 125105)
摘 要:针对现有算法存储结构简单、生成大量冗余的候选集、时间和空间复杂度高、挖掘效率不理想的情况,
为了进一步提高关联规则算法挖掘频繁集的速度,优化算法的执行性能,提出基于内存结构改进的关联规则挖
掘算法。该算法基于
Spark分布式框架,分区并行挖掘出频繁集,提出在挖掘过程中利用布隆过滤器进行项目
存储,并对事务集和候选集进行精简化操作,进而达到优化挖掘频繁集的速度、节省计算资源的目的。算法在占
用较少内存的条件下,相比于
YAFIM和 MRApriori算法,在挖掘频繁集效率上有明显的提升,不但能较好地提
升挖掘速度,降低内存的压力,而且具有很好的可扩展性,使得算法可以应用到更大规模的数据集和集群,从而
达到优化算法性能的目的。
关键词:关联规则;大数据;候选集;布隆过滤器;Spark
中图分类号:TP301.6 文献标志码:A 文章编号:10013695(2020)01035016705
doi:10.19734/j.issn.10013695.2018.06.0396
Partitionedparallelassociationrulesminingalgorithmbasedonstorageimprovement
WangYonggui,XieNan
,QuHaicheng
(SchoolofSoftware,LiaoningTechnicalUniversity,HuludaoLiaoning125105,China)
Abstract:Inordertofurtherimprovethespeedoftheassociationrulesminingfrequentsetsandoptimizetheexecutionper
formanceofthealgorithm
,thispaperproposedanassociationruleminingalgorithmbasedonimprovedmemorystructure.Based
ontheSparkdistributedframework,theproposedalgorithmminedfrequentsetsinparallel.ItusedtheBloomfiltertostorethe
projectintheminingprocess,andsimplifiedtheoperationofthetransactionsetandthecandidateset,soastooptimizethe
speedofminingfrequentsetsandsavethecomputingresources.ComparedwiththeYAFIM andtheMRApriorialgorithm,the
proposedalgorithmhasasignificantimprovementintheefficiencyofminingfrequentsetsundertheconditionofoccupyingless
memory.Thealgorithmcannotonlyimprovetheminingspeedandreducethememorypressure,butalsohasgoodscalability,so
thatthealgorithmcanbeappliedtolargerdatasetsandclusterstooptimizetheperformance.
Keywords:associationrule;bigdata;candidateset;Bloomfilter;Spark
0 引言
关联规则起初是用来发掘购物篮中商品间的有趣关系,逐
渐地成为数据挖掘的重要方法之一
[1]
。关联规则的目的是找
出隐藏在大数据中的商品关系,重点是找出大数据集中的频繁
项集,即那些频繁共同出现的商品集合。关联规则中最经典、
影响最大的算法就是
Agrawal等人
[2]
提出的 Apriori算法,通过
逐层搜索的迭代方式进行频繁项的挖掘,能够快速精准地挖掘
出关联规则。随后出现了大量
Apriori改进算法,但是都采用
串行的方式,只有当提供的数据集很小时才会有较好的效果。
随着大数据时代的到来,集合中元素增加,所需要的存储
空间越来越大,检索速度也越来越慢。各种单机的
Apriori算
法已经不能满足人们对时间和效率的需求。研究人员发 现
Apriori算法具有高并行性的可能性,因此,为了更高效地挖掘
频繁集,引入了并行算法
[3~5]
。基于集群的关联规则算法能够
提高处理事务数据集的效率,但是算法结构复杂,而且存在同
步、数据复制等问题。研究发现基于 MapReduce的关联规则
挖掘频繁集效率更好,随后并行算法被 MapReduce所取代,基
于 MapReduce的 Apriori算法实现
[6~8]
被提出,与传统的 Aprio
ri算法相比显示出高性能增益。ApacheHadoop
[9]
是 MapRe
duce
模型的最佳平台之一。文献[10,11]基于 Hadoop平台实
现
Apriori算法,这些算法以 MapReduce的方式对 Apriori算法
进行并行化处理,用
HDFS存储数据集,在海量数据中发现频
繁项集,实验表明该算法明显优于之前的
Apriori传统算法。
但是基于 Hadoop的 Apriori算法的实现仍然存在一些限制。
在 Hadoop平台上,每次迭代后都会将结果存储到 HDFS中,并
从 HDFS中获取输入以进行下一次迭代的过程导致性能降低。
文献[12]还指出 Hadoop中 MapReduce在迭代计算时任务启
动和磁盘
I/O开销过大使得执行效率降低,后来研究人员提出
的 Spark平台可以很好地解决这些难题。
Spark
[13]
平台通过使用弹性分布式数据集架构 RDD解决
了这些问题,该架构在迭代结束时将结果存储在本地缓存中,
并将它们提供给下一次迭代。对此提出基于 Spark平台来改
进 Apriori算法,Spark将数据基于内存计算,克服了上述 Ha
doop平台存在的问题,使其更加适用于在线、迭代和数据流算
法。基于 Spark平台,Zhang等人
[14]
提出了一种分布式频繁项
目集挖掘算法用于大数据分析,效果远远好于基于 Hadoop平
台实现的 Apriori算法。上述算法基于线性表、链表、树等数据
结构,数据记录在这些结构中的相对位置是随机的,查找时进
行大量关键字之间的比较,查找效率过于依赖查找过程中所进
行的比较次数,随着数据量的增长,效率都将下降。
Qiu等人
[15]
提出了 YAFIM 算法,基于 Spark框架对大数
第 37卷第 1期
2020年 1月
计 算 机 应 用 研 究
ApplicationResearchofComputers
Vol37No1
Jan.2020