The invention relates to a method for mining frequent itemsets based on Spark platform, which belongs to the technical field of data mining. The invention proposes a novel BitMapFIM_Miner algorithm based on Spark large data processing framework, which parallelizes data sets and does not need to scan data sets many times. Based on the idea of divide and conquer, transactions whose transaction length is longer than a certain threshold are segmented, and then frequent itemsets are computed and generated by bit operation respectively. Finally, frequent itemsets obtained by each part are computed. Make a summary and merge. The method of bit operation accelerates the mining speed of frequent itemsets and greatly improves the execution efficiency of the algorithm. Through theoretical analysis and experimental verification, it is found that the segmentation of overly long transactions can effectively obtain frequent itemsets while ensuring the accuracy of the results, which provides a new idea for frequent itemsets mining method.
【技术实现步骤摘要】
一种基于Spark平台的频繁项集挖掘方法
本专利技术涉及一种基于Spark平台的频繁项集挖掘方法,属于数据挖掘
技术介绍
如何在海量数据集中提高频繁项集的挖掘性能是目前研究的热点。传统的Apriori算法和FP-Growth算法及其改进的算法在处理小规模数据时,都表现出一定的优越性。随着大数据时代的来临,单机版的算法已经不能满足数据处理的时间和空间要求,基于Hadoop和Spark云计算平台的分布式算法不断出现,但是都无法完全移除Apriori算法和FP-Growth算法的弊病,Apriori算法存在多次扫描数据库,生成候选项集过多的问题;当数据量过大时,FP-Growth算法递归的抽取条件模式树时也会花费大量时间。为此,许多移植到Hadoop平台上的算法不断涌现,Hadoop相比Spark存在I/O瓶颈问题,频繁地读入读出数据集会消耗大量不必要的时间。综上,无论是基于Apriori的算法还是基于FP-Growth的算法或者是移植到Hadoop平台上的算法,面对海量数据,都存在频繁项集挖掘时间过长、内存消耗过大的问题,都无法满足快速高效挖掘的性能要求。
技术实现思路
本专利技术要解决的技术问题是为了克服上述现有技术存在的缺陷而提供一种基于Spark平台的频繁项集挖掘方法。本专利技术的技术方案是:一种基于Spark平台的频繁项集挖掘方法,具体步骤为:(1)将原始数据文件从外部存储介质(本地磁盘,HDFS)读取到内存中,根据事务的总数设定最小支持度阈值;(2)对全部数据集中的每条事务包含的不同数据项进行计数,过滤掉计数小于最小支持度阈值的数据项,得到频繁 ...
【技术保护点】
1.一种基于Spark平台的频繁项集挖掘方法,其特征在于:(1)将原始数据文件从外部存储介质读取到内存中,根据事务的总数设定最小支持度阈值;(2)对全部数据集中的每条事务包含的不同数据项进行计数,过滤掉计数小于最小支持度阈值的数据项,得到频繁1项集,然后剔除掉每条事务中不属于频繁1项集的数据项,并对每一条事务进行编号;(3)经过步骤(1)、(2)处理过后的数据集,按照事务长度进行划分;(4)对长度小于某个值的所有事务分别利用位操作函数产生其所有可能的数值型项集;(5)将长度小于某个值的所有事务分别产生的数值型项集通过解析函数转化为真实的项集;(6)对长度大于等于某个值的所有事务进行拆分,将拆分后的每条事务的两部分分别使用位操作函数产生数值型项集;(7)将长度大于等于某个值的所有事务的两部分产生的数值型项集分别转化为真实的项集;(8)读取步骤(7)中的数据集,对属于同一事务的两部分产生的真实项集进行自然连接运算,交叉产生项集;(9)合并所有局部产生的频繁项集,得到最终的频繁项集。
【技术特征摘要】
1.一种基于Spark平台的频繁项集挖掘方法,其特征在于:(1)将原始数据文件从外部存储介质读取到内存中,根据事务的总数设定最小支持度阈值;(2)对全部数据集中的每条事务包含的不同数据项进行计数,过滤掉计数小于最小支持度阈值的数据项,得到频繁1项集,然后剔除掉每条事务中不属于频繁1项集的数据项,并对每一条事务进行编号;(3)经过步骤(1)、(2)处理过后的数据集,按照事务长度进行划分;(4)对长度小于某个值的所有事务分别利用位操作函数产生其所有可能的数值型项集;(5)将长度小于某个值的所有事务分别产生的数值型项集通过解析函数转化为真实的项集;(6)对长度大于等于某个值的所有事务进行拆分,将拆分后的每条事务的两部分分别使用位操作函数产生数值型项集;(7)将长度大于等于某个值的所有事务的两部分产生的数值型项集分别转化为真实的项集;(8)读取步骤(7)中的数据集,对属于同一事务的两部分产生的真实项集进行自然连接运算,交叉产生项集;(9)合并所有局部产生的频繁项集,得到最终的频繁项集。2.根据权利要求1所述的基于Spark平台的频繁项集挖掘方法,其特征在于:所述步骤(1)具体包括以下步骤:11)创建SparkConf对象,通过该对象来设置程序运行时所需的参数;12)利用SparkConf对象初始化SparkContext对象,SparkContext对象是应用程序与Spark集群之间通信的接口;13)利用SparkContext对象将数据集文件从HDFS读到内存中并指定分区数量;14)根据事务的总条数计算支持度阈值设I={i1,i2,……,im}是一个由m个数据项构成的集合,T={t1,t2,t3,……,tn}是事务型数据库,每一条事务ti都是由I中不同的项构成的集合,并且满足最小支持度阈值min_sup=ζ*|T|,其中ζ是0到1之间的任意实数,|T|表示数据库中事务的数目。3.根据权利要求1所述的基于Spark平台的频繁项集挖掘方法,其特征在于:所述步骤(2)具体包括以下步骤:21)将每条事务按照空格进行分割,把每个数据项的初始计数设为1;22)扫描所有数据项,遇到相同的数据项则该数据项的计数加1;23)过滤掉所有计数值小于最小支持度阈值的数据项,得到频繁1项集;24)每条事务与频繁1项集做交集,保留频繁1项集中的数据项;25)对每一条事务编号。4.根据权利要求1所述的基于Spark平台的频繁项集挖掘方法,其特征在于:所述步骤...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。