一种面向海量事务数据库的关联规则分析方法
技术领域
本发明属于数据挖掘及信息处理技术领域,尤其涉及一种面向海量事务数据库的关联规则分析方法。
背景技术
在大数据技术发展如火如荼的今天,人们逐渐意识到数据即是财富,尤其是对商业数据的分析更具有巨大的实用价值。关联规则分析作为数据挖掘的主要手段之一,是数据挖掘技术中不可或缺的一个重要组成部分,主要用于发现大型事务数据库中隐含的有价值的令人感兴趣的联系及规则。因此,对关联规则算法的研究具有非常重要的意义。
早在1993年,IBM的计算机科学家R.Agrawal等人在顾客交易数据库中发现了顾客在购买商品时的购买规律,提出了事务之间的相关性模式,即最初的关联规则。关联规则通常是一种不复杂但实用性却很高的规则。通过关联规则分析,我们可以将事务项集与项集之间的关系挖掘出来。关联规则分析最典型的应用是购物篮数据分析,比如经典的{啤酒}→{尿布}规则。除了可以应用于购物篮数据之外,关联规则分析在其它领域的应用也十分广泛,如电子商务个性化推荐,金融服务,广告策划,生物信息学及科学数据分析等。比如说在电子商务个性化推荐中,关联规则可以帮助电子商务网站向具有相似消费行为的顾客进行一些他们可能感兴趣的商品推荐,这样有助于电子商务网站提升用户体验,增加盈利等。
关联规则分析算法较多,其中最经典实用性最好的是Apriori算法及其改进算法。Apriori算法[1]是由Agrawal和Swami于1994年提出的第一个关联规则算法,应用广泛,该算法通过重复循环执行连接、剪枝生成频繁项目集,从而建立关联规则。基于Apriori算法,Yang等人提出了Apriori-TFP算法[2],该算法在关联规则挖掘过程中,将原始数据进行预处理并存储在局部支持树中,最后生成关联规则。该算法通过有效的预处理,降低了关联规则挖掘的时间,但是需要扫描数据库的次数仍然较多。Zhang等人提出了GP-Apriori算法[3],GP-Apriori算法采用图形处理器(GraphicalProcessingUnit,GPU)进行并行化的支持度计数,并将垂直交易列存储为线性有序阵列。GPU通过遍历该有序阵列,并执行按位交叉实现支持度计算,并将结果复制回内存。与传统CPU上运行的Apriori算法相比,GP-Apriori算法由于采用了先进的GPU提高了运行速率,但是复杂性反而有所增长。Delighta等人也提出了Apriori的改进算法(AprioriMendAlgorithm)[4]。该算法使用哈希函数生成项目集,用户必须指定最小支持度以删除不需要的项集。该算法具有比传统Apriori算法更好的效率,但是执行时间有所增加。Ning等基于MapReduce框架实现了Apriori算法的并行化[5]。该算法在处理海量数据集时具有良好的可扩展性和效率,但是该算起需要强大的计算和存储能力支撑,通常运行在集群环境中。Sulianta等人在文献[6]中尝试将Apriori算法应用于多维数据分析,探讨了在多维数据中建立关联规则更加具体有效的方法。Sheila等人在文献[7]中对Apriori算法进行了改进,引入了事务尺寸和事务规模的概念以消除非重要项目的影响。Feng等人在文献[8]中提出了一种基于矩阵的Apriori算法,该算法通过矩阵有效的表示数据库的各种操作,并用基于矩阵的AND操作得到最大的频繁项目集。
文献引用:
[1]R.Agrawal,R.Srikantetal..Fastalgorithmsforminingassociationrules(挖掘关联规则的快速算法),Proc.20thInt.Conf.VeryLargeDataBases,VLDB,vol.1215,pp.487-499,September1994.
[2]Z.Yang,W.Tang,A.Shintemirov,andQ.Wu.Associationrulemining-baseddissolvedgasanalysisforfaultdiagnosisofpowertransformers(基于关联规则挖掘的电力变压器故障诊断溶解气体分析),Systems,Man,andCybernetics,PartC:ApplicationsandReviews,IEEETransactionson,vol.39,no.6,pp.597-610,2009.
[3]F.Zhang,Y.Zhang,andJ.D.Bakos.Gpapriori:Gpu-acceleratedfrequentitemsetmining(基于图形处理器加速的频繁项集挖掘),inCLUSTER.IEEE,2011,pp.590-594.
[4]I.S.P.J.D.MagdaleneDelightaAngeline.AssociationrulegenerationusingApriorimendalgorithmforstudent'splacement(基于改进Apriori算法的关联规则生成算法),vol.2,no.1,2012,pp.78-86.
[5]N.Li,L.Zeng,Q.He,andZ.Shi.ParallelimplementationofapriorialgorithmbasedonMapReduce(基于MapReduce的Apriori算法的并行实现),inSoftwareEngineering,ArtificialIntelligence,NetworkingandParallelDistributedComputing(SNPD),201213thACISInternationalConferenceon,2012,pp.236-241.
[6]F.Sulianta,T.H.Liong,andI.Atastina.Miningfoodindustry'smultidimensionaldatatoproduceassociationrulesusingApriorialgorithmasabasisofbusinessstrategy(基于Apriori算法的面向食品工业多维数据的企业战略关联规则挖掘算法),inInformationandCommunicationTechnology(ICoICT),2013InternationalConferenceof,2013,pp.176-181.
[7]S.A.Abaya.AssociationruleminingbasedonApriorialgorithminminimizingcandidategeneration(基于Apriori算法的最小生成候选关联规则挖掘算法),InternationalJournalofScientificandEngineeringResearch,vol.3,no.7,pp.1-4,July2012.
[8]WangFeng,LiYong-hua.AnImprovedAprioriAlgorithmBasedontheMatrix(一种基于矩阵的改进Apriori算法),fbie,pp.152-155,2008InternationalSeminaronFutureBioMedicalInformationEngineering,2008.
发明内容
本发明针对经典Apriori算法的固有缺陷,提出了面向海量事务数据库的关联规则分析方法——基于AWP(AprioriwithPrognosis)算法的分析方法。
本发明包括以下步骤:
步骤1、扫描海量事务数据库D并计数,找出支持度大于预设最小支持度的频繁1项集集合L1;
步骤2、将所得到的频繁K-1项集集合LK-1与其自身连接产生候选K项集的集合,候选K项集的集合记作CK,其中,K∈{2,3,4,…},第一次执行时K=2,每循环执行一次K取值加1;
步骤3、利用Apriori性质(任一频繁项集的所有非空子集也必须是频繁的,如果某个候选的非空子集不是频繁的,那么该候选肯定不是频繁的)对候选k项集集合CK进行剪枝;
步骤4、计算剪枝后的候选K项集集合CK中成员的预判支持度,进行预判筛选;
步骤5、通过扫描事务数据库D,确定预判筛选后的候选K项集集合CK中每个候选成员ci1的计数,判断该计数是否大于最小支持度计数,如果是,则判定该候选成员是频繁的,将该候选成员保留在频繁K项集集合LK中,否则删除;
步骤6、重复执行上述步骤2~步骤5,直到不能发现更大的频繁项目集为止;
步骤7、最终获得的频繁项目集集合为F,则可产生关联规则R={A->B},A为频繁项目集集合F中任意成员Fi2的非空子集,B为A的补集,即Fi2∈F,i2∈{1,2,…,n1}且A∪B=Fi2},其中n1为频繁项目集集合F包含的成员数目。比如说若集合{I1,I2,I3}是频繁项目集集合的成员,则可产生如下关联规则:{I1}->{I2,I3},{I2}->{I1,I3},{I3}->{I1,I2},{I1,I2}->{I3},{I1,I3}->{I2},{I2,I3}->{I1}。
步骤1包括:对海量事务数据库D中包含项目Si3的事务数Ni3进行统计,其中i3∈{1,2,…,n2},n2为数据库包含的项目数量,则项目集X={Si3,i3∈{1,2,…,n2}}的支持度为:
support(X={Si3,i3∈{1,2,…,n2}})=Ni3/|D|.
其中,|D|为数据库D包含的事务数,若support(X)大于预设的最小支持度min_support,则将项目集X加入频繁1项集集合L1;反之,不加入。
步骤2中,参考背景技术中引用文献1,连接过程如下:设m1和m2是频繁K-1项集集合LK-1的任意两个成员,成员中的项目按字典次序排序,即对于成员mi4,有mi4[1]<mi4[2]<…<mi4[K-1],其中符号mi4[j]表示成员mi4中的第j个项目,i∈{0,1},j∈{1,2,…,K-1},如果成员m1和m2中前K-2个项目均相同,成员m1的第K-2个项目小于成员m2的第K-2个项目,即(m1[1]=m2[1])&&(m1[2]=m2[2])&&…&&(m1[k-2]=m2[k-2])&&(m1[k-1]<m2[k-1]),则判定m1和m2是可连接,连接m1和m2产生的结果是{m1[1],m1[2],……,m1[k-1],m2[k-1]}。
步骤3中,剪枝步骤如下:对候选K项集集合CK的成员ci1,i1∈{1,2,3,…}的所有非空子集的支持度进行判断,若该成员存在支持度小于预设的最小支持度min_support的非空子集,根据Apriori性质可判定该成员不是频繁项目集,将其从CK中删除;反之,将该成员保留在候选K项集集合CK中。
步骤4中,预判筛选步骤如下:通过独立事件概率公式计算候选K项集集合CK中成员ci1,i1∈{1,2,3,…}的先验概率,若P(ci1)>(1+△1)min_support,则将该成员直接添加到频繁k-项集LK中;若P(ci1)<(1-△2)min_support,则将该成员从CK中删除;否则,该成员继续保留在候选k项集CK中;其中,P(ci1)=∑P(c)P(ci1-c)/n,c为成员ci1的单元素子集,即c中只包含一个项目,P(c)可由步骤1得到,P(ci1-c)可由获得频繁K-1项集集合的循环轮次中步骤5得到,n为成员ci1所包含的项目数;△1为阻尼因子,△2为补偿因子,为减少扫描数据库的次数,经实验验证,△1,△2取值如下所示:
有益效果:本发明与现有技术相比,其显著优点为:本发明在连接、剪枝的基础上,添加了预判的步骤,使用先验概率对候选频繁K项集集合CK进行缩减优化,并且引入阻尼因子△1和补偿因子△2对使用先验概率产生的误差进行修正,若候选K项集集合CK中成员ci1的先验概率P(ci1)>(1+△1)min_support,则将该成员直接添加到频繁k-项集LK中;若P(ci1)<(1-△2)min_support,则该成员从候选项集CK中删除;否则,将该成员继续保留在候选K项集集合CK中。该算法对候选频繁K项集集合的成员数量进行了压缩,简化了挖掘频繁项集以及规则的操作过程,实验证明该算法能够有效减少扫描数据库的次数,降低算法运算的时间,提高算法的运算效率。
附图说明
下面结合附图和具体实施方式对本发明做更进一步的具体说明,本发明的上述和/或其他方面的优点将会变得更加清楚。
图1为事务数据库D。
图2为候选1项集集合C1。
图3为频繁1项集集合L1。
图4为候选2项集集合C21。
图5为候选2项集集合C22。
图6为频繁2项集集合L2。
图7为候选3项集集合C31。
图8为候选3项集集合C32。
图9为候选3项集集合C33。
图10为频繁3项集集合L3。
图11为本发明流程图。
具体实施方式
本发明包括以下步骤:
步骤1、扫描海量事务数据库D并计数,找出支持度大于预设最小支持度的频繁1项集集合L1;
步骤2、将所得到的频繁K-1项集集合LK-1与其自身连接产生候选K项集的集合,候选K项集的集合记作CK,其中,K∈{2,3,4,…},第一次执行时K=2,每循环执行一次K取值加1;
步骤3、利用Apriori性质(任一频繁项集的所有非空子集也必须是频繁的,如果某个候选的非空子集不是频繁的,那么该候选肯定不是频繁的)对候选k项集集合CK进行剪枝;
步骤4、计算剪枝后的候选K项集集合CK中成员的预判支持度,进行预判筛选;
步骤5、通过扫描事务数据库D,确定预判筛选后的候选K项集集合CK中每个候选成员ci1的计数,判断该计数是否大于最小支持度计数,如果是,则判定该候选成员是频繁的,将该候选成员保留在频繁K项集集合LK中,否则删除;
步骤6、重复执行上述步骤2~步骤5,直到不能发现更大的频繁项目集为止;
步骤7、最终获得的频繁项目集集合为F,则可产生关联规则R={A->B},A为频繁项目集集合F中任意成员Fi2的非空子集,B为A的补集,即Fi2∈F,i2∈{1,2,…,n1}且A∪B=Fi2},其中n1为频繁项目集集合F包含的成员数目。比如说若集合{I1,I2,I3}是频繁项目集集合的成员,则可产生如下关联规则:{I1}->{I2,I3},{I2}->{I1,I3},{I3}->{I1,I2},{I1,I2}->{I3},{I1,I3}->{I2},{I2,I3}->{I1}。
步骤1包括:对海量事务数据库D中包含项目Si3的事务数Ni3进行统计,其中i3∈{1,2,…,n2},n2为数据库包含的项目数量,则项目集X={Si3,i3∈{1,2,…,n2}}的支持度为:
support(X={Si3,i3∈{1,2,…,n2}})=Ni3/|D|.
其中,|D|为数据库D包含的事务数,若support(X)大于预设的最小支持度min_support,则将项目集X加入频繁1项集集合L1;反之,不加入。
步骤2中,连接过程如下:设m1和m2是频繁K-1项集集合LK-1的任意两个成员,成员中的项目按字典次序排序,即对于成员mi4,有mi4[1]<mi4[2]<…<mi4[K-1],其中符号mi4[j]表示成员mi4中的第j个项目,i∈{0,1},j∈{1,2,…,K-1},如果成员m1和m2中前K-2个项目均相同,成员m1的第K-2个项目小于成员m2的第K-2个项目,即(m1[1]=m2[1])&&(m1[2]=m2[2])&&…&&(m1[k-2]=m2[k-2])&&(m1[k-1]<m2[k-1]),则判定m1和m2是可连接,连接m1和m2产生的结果是{m1[1],m1[2],……,m1[k-1],m2[k-1]}。
步骤3中,剪枝步骤如下:对候选K项集集合CK的成员ci1,i1∈{1,2,3,…}的所有非空子集的支持度进行判断,若该成员存在支持度小于预设的最小支持度min_support的非空子集,根据Apriori性质可判定该成员不是频繁项目集,将其从CK中删除;反之,将该成员保留在候选K项集集合CK中。
步骤4中,预判筛选步骤如下:通过独立事件概率公式计算候选K项集集合CK中成员ci1,i1∈{1,2,3,…}的先验概率,若P(ci1)>(1+△1)min_support,则将该成员直接添加到频繁k-项集LK中;若P(ci1)<(1-△2)min_support,则将该成员从CK中删除;否则,该成员继续保留在候选k项集CK中;其中,P(ci1)=∑P(c)P(ci1-c)/n,c为成员ci1的单元素子集,即c中只包含一个项目,P(c)可由步骤1得到,P(ci1-c)可由获得频繁K-1项集集合的循环轮次中步骤5得到,n为成员ci1所包含的项目数;△1为阻尼因子,△2为补偿因子,为减少扫描数据库的次数,经实验验证,△1,△2取值如下所示:
实施例1
通过对如图1所示的一个简单的事务数据库D对AWP算法的步骤进行描述,并对其性能进行简单的分析,预设的最小支持度min_support=50%,事务数据库的事务数|D|=10,所以△1=0.5,△2=0.25。
本实施例中,事务是指事务数据库的一条记录;项目是指事务数据库涉及的商品,比如图1所示事务数据库包含项目A、B、C、D、E、F;项目集简称项集是指项目构成的集合,包含k个项目的集合称为k项集。
1)如图11所示,根据AWP算法,首先对图1所示的事务数据库进行扫描,产生如图2所示的候选项集集合C1。接下来,将C1中各项集的支持度与预设的最小支持度min_support比较,由于项集{A}的支持度小于预设的min_support=50%,将其删除,产生如图3所示的频繁1项集集合L1。
2)得到频繁1项集集合L1后,根据AWP算法的步骤2,对如图3所示的频繁1项集集合L1进行自连接,得到如图4所示的候选项集集合C21,由于C21中各成员的非空1项子集均为频繁1项集集合的成员,因此无需执行剪枝,可直接执行AWP算法步骤4对候选2项集集合C21进行预判筛选。由于C21中项目集{B,C}的预判支持度大于(1+△1)min_support,因此将项目集{B,C}直接添加到频繁2项集集合L2中;由于项目集{D,F},{E,F}的预判支持度均小于(1-△2)min_support,于是将项目集{D,F},{E,F}从候选2项集集合C21中直接删除。候选2项集集合C21经过筛选后得到如图5所示的候选2项集集合C22。接下来,执行步骤5扫描事务数据库D,对候选2项集集合C22各成员的支持度进行统计,并与min_support比较,得到频繁2项集集合L2,如图6所示。
3)得到频繁2项集集合L2后,同样的根据AWP算法执行步骤2,3,4,5分别进行自连接,剪枝,预判筛选和扫描计数,分别得到候选项集集合C31,C32,C33及频繁3项集集合L3,如图7-图10所示。
4)得到频繁3项集集合后,进行自连接得到候选4项集集合C41,C41中仅有一个成员项集{B,C,D,F},经预判筛选,其预判支持度为36.75%,小于(1-△2)min_support,于是将该成员项集删除,C41成为空集,算法运行结束。
性能:该实例中,运行AWP算法与Apriori算法所获得的频繁项集完全相同,因此虚检率和漏检率均为0,但是Apriori算法需要扫描事务数据库21次,而AWP算法仅需要扫描数据库15次,比Apriori算法减少了28.57%,运算效率得到了大幅提高。
对于实施例1,经AWP算法分析,可知项目集{B,C}为频繁项目集,意味着项目B、C同时出现在一个事务即一条交易记录的机率是比较高的,那么当本发明发现一个客户订购了项目B而未订购项目C时,可以向其推荐项目C,从而提升计算机数据分析的准确性。
本发明提供了一种面向海量事务数据库的关联规则分析方法,具体实现该技术方案的方法和途径都不多,以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。本实施例中未明确的各组成部分均可用现有技术加以实现。