专利名称:一种基于MapReduce模型的并行关联方法
技术领域:
本发明属于数据挖掘技术,特别是一种基于MapReduce模型的并行关联方法。
背景技术:
随着信息化技术的不断发展,人们的现实生活都被数字化了,各种数据被搜集起来,引起了数据爆炸式的增长,为了充分挖掘这些数据之间的关联性,许多公司投入了大量了人力财力来进行数据分析。数据分析得到的结果是企业决策的重要依据,所以,数据分析的方法决定了这些数据的价值。在数据挖掘方面,关联规则是非常重要的一种技术。它能够将数据库中的一些具有相关联性的数据分析出来。关联规则的挖掘一般分为两步的步骤。第一阶段,从原始资料集合中找出所有频繁项集(Large Itemsets)。频繁的意思是指某一项目组出现的频率相对于所有记录而言,必须达到某一水平。该水平值被称为支持度,若支持度大于等于所设定的最小支持度(Minimum Support)阀值时,则该项目组称为频繁项集。一个满足最小支持度的k项集,则称为频繁k项集(Frequent k-1temset)。算法从频繁k项集中再产生频繁k+Ι项集,直到无法再找到更长的频繁项集为止。第二阶段是产生关联规则(AssociationRules)。从频繁项集产生关联规则,是利用前一步骤的频繁k项集来产生规则,在最小置信度(Minimum Confidence)的阀值下,若一规则所求得的置信度满足最小置信度,称此规则为关联规则。在并行式的关联规则挖掘算法方面,Rakesh Agrawal等(Rakesh Agrawal, JohnC.Shafer.Parallel Mining of Association Rules[J].1EEE Transactions onKnowledge and Data Engineering.1996, 8(6): 962-969P.)提出了三种并行式的关联规则挖掘算法:⑶,DD, CaD。这几种关联规则挖掘算法都是基于Apriori算法,主要是通过计数来获得频繁项集并通过集合递推的方式来获得最终结果。在分布式的编程模型方面,谷歌公司提出了 Map/Reduce的分布式编程模型,如
图1所示,其利用map和reduce框架能够在分布式的集群上实现大规模的分布式计算(DeanJ.and Ghemawat S.Mapreduce: simplified data processing on large clusters[J],Commun.ACM, 51,I, pp.107-113,2008.),并且具有很高的稳定性能。
发明内容
本发明的目的在于提供一种基于MapReduce模型的并行关联方法,从而实现了在巨量的数据中并行式的数据关联性分析,并且克服并行计算的弊端。实现本发明目的的技术解决方案为:一种基于MapReduce模型的并行关联方法,步骤如下:
第一步,对数据进行预处理,将所有的数据值规约在有限的离散集合中,并设置最小支持度fF和最小置信度fS。第二步,在MapReduce编程框架下,特殊处理I项集,即:把整个数据集作为输入文件,实现一个map类来统计数据中候选项的计数,实现一个reduce类来合并由map进程返回的计数,然后处理第一个任务,输出作为一个文件,包含I项集的计数m和总记录个数η。第三步,主进程读取第一个任务的输出文件,利用公式
权利要求
1.一种基于Hadoop的并行关联方法,其特征在于具体步骤如下: 第一步,对数据集进行预处理,将所有的数据值规约在有限的离散集合中,并设置最小支持度fF和最小置信度fS ; 第二步,在MapReduce编程框架下,特殊处理I项集,把整个数据集作为输入文件,实现一个map类来统计数据中候选项的计数,实现一个reduce类来合并由map进程返回的计数,然后处理第一个任务,输出作为一个文件,包含I项集的计数m和总记录个数η ; 第三步,利用MapReduce分布式编程模型来在集群中执行分布式计算,采用递推式的方式来求得k项集,直到第k项集为空为止;第四步,利用公式amfA B; = sup(A U B)/ sup(A)来计算置信度,如果置信度大于最小置信度fS,该规则就是强规则。
2.根据权利要求1所述的基于Hadoop的并行关联方法,其特征在于:第三步中所述的利用MapReduce分布式编程模型来在集群中执行分布式的计算,具体实现过程如下: 第一步,安装Hadoop集群,并且将数据分为M份,M大于整个Hadoop集群的处理单元数; 第二步,特殊处理I项集,把整个数据集作为输入文件,编写一个map类来实现从数据集中寻找相同的数据项并计数,编写一个reduce类来实现计数,在实验中采用hadoop自带的类LongSumReducer,在hadoop框架中设定map类和reduce类,然后处理第一个任务;输出作为一个文件,包含I项集的计数m和总记录个数η ; 第三步,主进程读取第一个任务的输出文件,利用公式^计算出支持度,如果该支持度不小于最小支持度fF的话,那么该项就包含于频繁I项集; 第四步,为第k (k>=2)个任务设置map类和reduce类,将分割的数据集DSi作为参数传递给该任务,利用map/reduce框架来执行任务,输出为一个列表,该列表中包含(key, value)项,其中key为项目的名称,value为计数; 第五步,待第k个任务完成后,主进程读取第k个任务的输出列表,计算并对比其支持度,获得了频繁k项集,然后在整个数据集DS中寻找包含k项的项目,如果其长度等于k+1的话,该项目就属于k+1项侯选集,如果k+1项候选集为空,那么结束该步骤;如果候选集为非空,那么执行第四步,设置k值等于k+Ι,开始下一轮的循环; 第六步,计算最后所获得的最大k项集的置信度,根据置信度确定关联规则。
全文摘要
本发明属于数据挖掘技术,特别是一种基于MapReduce模型的并行关联方法。该方法首先对数据进行预处理,设置最小支持度和最小置信度;然后经特殊处理1项集,求得第1项集和第2项集;然后配置第k项集,执行后再统计出k项集的计数,通过主进程读取第k个任务的输出,计算支持度,获得频繁k项集和k+1项候选集,并设置k=k+1,开始循环,直至k+1项候选集为空。本发明与现有技术相比,其显著优点(1)利用Map/Reduce编程模型,能够执行分布式的计算,充分地利用集群的效率;(2)使用Map/Reduce能够有效地进行负载均衡;(3)使用Map/Reduce能够有效的避免分布式的节点失效。
文档编号G06F9/44GK103150163SQ20131006411
公开日2013年6月12日 申请日期2013年3月1日 优先权日2013年3月1日
发明者李千目, 陈强富, 施丛丛, 魏士祥, 印杰, 侯君 申请人:南京理工大学常熟研究院有限公司