CN106991141A - 一种基于深度剪枝策略的关联规则挖掘方法 - Google Patents
一种基于深度剪枝策略的关联规则挖掘方法 Download PDFInfo
- Publication number
- CN106991141A CN106991141A CN201710170549.9A CN201710170549A CN106991141A CN 106991141 A CN106991141 A CN 106991141A CN 201710170549 A CN201710170549 A CN 201710170549A CN 106991141 A CN106991141 A CN 106991141A
- Authority
- CN
- China
- Prior art keywords
- frequent item
- frequent
- matrix
- item
- sets
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2465—Query processing support for facilitating data mining operations in structured databases
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Probability & Statistics with Applications (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Fuzzy Systems (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明是一种基于深度剪枝策略的关联规则挖掘方法,用于对大数据集进行关联规则挖掘。本方法借鉴了基于压缩矩阵的Apriori算法的思想,对1‑频繁项集并不按照支持度计数进行排序,而是直接按照值大小对布尔矩阵内的向量进行排序,以确定之后的频繁项集连接的相对顺序;对k‑频繁项集根据事务长度进行压缩,删掉长度小于k的事务;根据项跟位置关系对k‑频繁项集进行剪枝,对于首项为I的k‑频繁项集的前k‑1项,位置在i的项出现的次数必须大于等于k‑i。本发明相对于MTCA算法,处理时间要短很多,并且在支持度较低的情况下比Apriori标准方法节约大量的时间,从大数据集获取关联规则的效率更高。
Description
技术领域
本发明属于计算机信息挖掘及检索技术领域,具体涉及一种基于深度剪枝策略的关联规则挖掘方法。
背景技术
随着大量的数据不停的收集和存储,越来越多的人开始对从他们的数据库中挖掘关联规则的兴趣度逐渐增加。从大量的商务事务记录中发现有趣的关联关系,可以帮助许多商务决策的制定。比如经典的购物篮分析:通过发现顾客放入购物篮中不同商品之间的关系,分析顾客的购买习惯。并通过发现不同商品之间的关联,来帮助零售商制定营销策略。数据挖掘是指采用某种方式对既定的数据进行分析处理,从中发现一些潜在的有用的信息的过程。关联规则指的是挖掘和发现大量数据中项集之间的有趣的关联或相关的联系。
当前大数据时代的到来,使得数据挖掘更加成为各方面关注的重点研究领域,Apriori算法就是应用最广泛的关联规则挖掘方法之一。快速增长的巨大数据为关联规则挖掘等关键技术带来了新的挑战,其中最为重要的一个问题就是数据规模,传统算法一时之间无法很好地适应。为此,研究者们也从各种角度和思路出发进行了很多探索。
从1994年R.Agrawal和Srikant提出Apriori算法以来,国内外对于关联规则的研究一直没有停歇,目前从挖掘模式的角度分析,主要有以下几种:
(1)宽度优先算法,也称为分层算法,包括由Agrawal等人提出的Apriori[1],AprioriTid[2]和AprioriHybrid[3],Park等人提出的DHP(Direct Hashing and Pruning)[4]算法等。但是分层算法的缺点是需要多次扫描数据库,然后需要生成大量的候选项集。
(2)深度优先算法,常见的有FP-Growth(Frequent Pattern-Growth)[5]算法,OP(Opportunistic Projection)[6]算法,TreeProjection[7]算法等。FP-growth是深度优先算法里面较为高效的算法:它采用了分治策略:两次扫描数据库,将提供频繁项集的事务集压缩到一棵频繁模式树里,该频繁模式树类似于前缀树,相同前缀的路径可以共用,从而达到压缩数据的目的,且不会产生庞大的候选项集,在时间和空间效率上都有明显的提高。但是它同样存在一些问题:在处理很大而且很稀疏的数据库时,无论是挖掘处理还是递归计算,都需要特别大的空间。
(3)数据集划分算法,包括Savasere等人提出的Partition[8]算法,Brin等人提出的DIC(Dynamic Itemset Counting)[9]算法等。Partition算法的好处是可以将整个数据库划分为几个相互独立的数据块,方便将不同的数据块放入内存进行处理。它单独考虑每个逻辑块生成的频繁项集,然后根据“频繁项集至少在一个分区中是频繁的”这一性质,把所有逻辑块生成的频繁项集合并到一起,形成全局候选项集。最后再次扫描数据库计算项集的支持度,进行全局计数。整个过程也只是需要扫描两次数据库,但是却会生成巨大的候选集。DIC算法也是利用将数据库进行划分的方法,将数据库划分为多个部分并在每个部分的开始做标记,便于在扫描数据库过程中在标记点添加候选项集,在计算项集时并行计算可能为频繁项集的支持度。但是,数据集划分算法的问题是执行时,同时产生的频繁项集的精度不高。不过由于其有较高的并行性,而且只需要两次扫描数据库,大大减少了I/O操作从而提高了算法效率。
(4)采样算法,包括由Park等人提出的可调精度的挖掘算法,Toivonen提出的Sampling[10]算法等。Sampling算法是从数据库D中随机抽取一个可以调入内存的数据库子集D’,然后用数据库剩余的部分来验证规则的正确性。它能很大程度上减少扫描数据库的时间,但是缺点就是因为数据子集D’的覆盖度的问题导致结果不精确。
(5)增量式更新算法,利用已挖掘的关联规则在变化的数据库或参数上发现新的关联规则,并删除过时的关联规则来维护数据集更新的问题。目前的增量式更新算法大多在Apriori算法基础上进行的改进。包括D.W.Cheung等提出的FDM-LUP(Fast DistributedMining of association rules with Local and Upper-Bound-Pruning)[11]算法,冯玉才等人提出的IUA(Incremental Updating Algorithm)和PIUA(Parallel IncrementalUpdating Algorithm)[12]算法等。
(6)并行算法,利用同时运行的多个进程来协同合作解决既定问题。包括Agrawal等人提出的CD(count distribution),DD(data distribution),Cad(CandidateDistribution)[13]算法,Park等人提出的PDM(Parallel Data Mining)[14]算法,Cheung等人提出的DMA(Distributed Mining of Association rules)[15]算法等。虽然并行挖掘算法能够利用到空闲的处理器,但是通信量和候选频繁项集都比较大,并且可能会带来冗余计算或者大量I/O操作的问题。
综上可见,Apriori算法及其系列改进方法一直是关联规则挖掘的基础核心技术,其效果早已得到大家的认可,但其速度和效率也是众多研究者努力的重点,因为这直接影响到其在应对大数据需求时的可用性。
Aproiri[1]算法是关联规则挖掘中的经典算法,该算法使用基于使用频繁项集性质的先验知识,通过“逐层搜索”的迭代方式,利用k-频繁项集来生成(k+1)-候选项集,再扫描数据库,通过验证当前的候选项集是否是频繁项集的方式来进行剪枝,从而获得(k+1)-频繁项集。Apriori算法存在以下问题:(1)在生成k-频繁项集时,要对事务数据库进行多次扫描,频繁的I/O导致运行时间过长。(2)运行过程中会对项集进行连接,生成庞大的候选集,对运行时间和主存空间都提出了要求。
针对原始Apriori算法的不足,一些研究人员提出了基于矩阵的Apriori算法,这类算法首先将事务数据库用矩阵表示出来,通过对矩阵内的各向量间的与运算,代替去数据库查找项集的支持度计数,提高了计算的效率。但是基于矩阵的Apriori算法仍存在以下问题:1)在运算过程中多次扫描矩阵,增加了运算的时间。2)压缩矩阵过程中,只压缩了事务集或者只压缩了项集,存储了很多与生成频繁项集无关的元素。赵宏利等人在基于压缩矩阵的CM_Apriori的基础上做了一些改进,提出了MTCA[16]算法,主要从多线程,项集排序,矩阵存储,矩阵压缩和结束条件进行优化,优化方面如下:
1)把事务数据库分成了大小相同,互不相交的数据块,然后启动多个线程对分割的数据块进行扫描。再把扫描的结果合成一个矩阵。形成最后的有关整个事务集的布尔矩阵,这样能够极大的减少扫描数据库的时间。
2)将1-频繁项集按照支持度计数递增的顺序进行排列,这样排序后的频繁项集能够在后续的自连接中生成较小的k-候选项集。
3)增加权值数组w和数组m,权值数组w用来对事务集中的事务进行计数,在扫描事务集,生成有关事务的布尔矩阵的时候,如果遇到重复的事务,只需要将相应的计数器加一即可。而数组m则用来记录布尔矩阵中每一行,也就是某一事务中的1的计数。可以通过判断数组m中的值是否大于1来选择是否删除该行。
4)在项集中的项按照字典顺序排列,在k-频繁项集Lk自连接生成(k+1)-项集时,如果两个k-频繁项集的前(k-1)项不相同,则说明这两个项集是不可连接的。将每个项集和项集中的项按照1-频繁项集支持度计数递增的顺序排列,如果两个k-频繁项集lx和ly不能连接,则对于k-频繁项集lx来说,处在k-频繁项集ly之后的所有频繁项集都是不可连接的。因此,在扫描矩阵时,如果一个频繁项集与相邻的频繁项集不可连接,则删掉该项集对应的行,修改好数组m的值。
5)不包含任何k-频繁项集的事务不可能包含任何(k+1)-频繁项集。当数组m中出现小于等于1的值的时候,认为该值对应的项集是不可继续连接的,无法生成频繁项集,可以将该列值为1的行删去后(这个项集肯定无法与其他项集连接生成频繁项集),再删去该列,从而达到压缩矩阵的目的。
6)通过对项集对应行向量进行与操作,并与权值数组w中的权值相乘后求和,来计算出连接后的项集的支持度计数。通过与最小支持度计数进行比较,来判断连接后的项集是否是频繁项集。如果k-频繁项集可以生成(k+1)-频繁项集,则k-频繁项集的个数一定大于等于k+1,所以如果最后k-频繁项集数小于k+1时,就无法生成(k+1)-候选项集,即可提前终止。
7)MTCA算法是一种通过频繁项集之间的“与运算”来替代原始Apriori算法中需要每次返回事务数据库遍历查找频繁项集的方法。然而,MTCA算法在k-频繁项集连接生成(k+1)-频繁项集的过程中仍然连接生成了一些可避免的候选项集,即在这个过程中仍然存在着可以压缩的空间。
参考文献说明:[1]Agrawal R,Srikant R.Fast algorithms for miningassociation rules[C]//Proc.20th int.conf.very large data bases,VLDB.1994,1215:487-499.
[2]Agrawal R,Mannila H,Srikant R,et al.Fast discovery of associationrules[J].Advances in knowledge discovery and data mining,1996,12(1):307-328.[3]Agrawal R,Srikant R.Fast Algorithms for Mining Association Rules in LargeDatabases[C]//Proceedings of the 20th International Conference on Very LargeData Bases.Morgan Kaufmann Publishers Inc.,1994:487-499.
[4]Park J S,Chen M S,Yu P S.An effective hash-based algorithm formining association rules[M].ACM,1995.
[5]Han J,Pei J,Yin Y.Mining frequent patterns without candidategeneration[C]//ACM Sigmod Record.ACM,2000,29(2):1-12.
[6]Liu J,Pan Y,Wang K,et al.Mining frequent item sets byopportunistic projection[C]//Proceedings of the eighth ACM SIGKDDinternational conference on Knowledge discovery and data mining.ACM,2002:229-238.
[7]Agarwal R C,Aggarwal C C,Prasad V V V.A tree projection algorithmfor generation of frequent item sets[J].Journal of parallel and DistributedComputing,2001,61(3):350-371.
[8]Savasere A,Omiecinski E R,Navathe S B.An efficient algorithm formining association rules in large databases[J].1995.
[9]Brin S,Motwani R,Ullman J D,et al.Dynamic itemset counting andimplication rules for market basket data[C]//ACM SIGMOD Record.ACM,1997,26(2):255-264.
[10]Toivonen H.Sampling large databases for association rules[C]//VLDB.1996,96:134-145.
[11]Cheung D W,Han J,Ng V T,et al.A fast distributed algorithm formining association rules[C]//Parallel and Distributed Information Systems,1996.,Fourth International Conference on.IEEE,1996:31-42.
[12]冯玉才,冯剑琳.关联规则的增量式更新算法[J].软件学报,1998(4):301-306.
[13]Agrawal R,Shafer J C.Parallel Mining of Association Rules[C]//IEEE Transactions on Knowledge and Data Engineering.1996.
[14]Park J S,Chen M S,Yu P S.Efficient parallel data mining forassociation rules[C]//Proceedings of the fourth international conference onInformation and knowledge management.ACM,1995:31-36.
[15]Cheung D W,Ng V T,Fu A W,et al.Efficient mining of associationrules in distributed databases[J].IEEE transactions on Knowledge and DataEngineering,1996,8(6):911-922.
[16]赵宏利.改进的Apriori算法在大学生心理分析中的研究[D].华中师范大学,2015。
发明内容
本发明的目的是在基于压缩矩阵的Apriori方法的基础上提出一种新的方法,以使得能更好地提升关联规则挖掘效率。
本发明提供了一种基于深度剪枝策略的关联规则挖掘方法,包括:
将事务数据库扫描成布尔矩阵,并生成1-频繁项集的布尔矩阵M1,M1中的每一列和每一行,都按照值从小到大的顺序进行排列;
生成(k+1)-频繁项集及对应的布尔矩阵,k≥1;当k≥3时,每次生成(k+1)-频繁项集时,先根据项跟位置关系对k-频繁项集进行剪枝,再生成(k+1)-频繁项集;所述的根据项跟位置关系是指:(1)统计首项为I的k-频繁项集的数目,数目必须大于等于k,(2)对首项为I的k-频繁项集的前k-1项,设i代表首项为I的k-频繁项集中的位置,位置在i的项出现的次数必须大于等于k-i,i从0开始计数,且k-i>0;所述的根据项跟位置关系对k-频繁项集进行剪枝,是指将不符合所述项跟位置关系的k-频繁项集删除;
当(k+1)-频繁项集的数目小于k+1,则停止查找,否则更新k值,继续生成(k+1)-频繁项集。
更进一步地,在(k+1)-频繁项集生成时,先根据事务长度对k-频繁项集的布尔矩阵进行压缩,若布尔矩阵中某事务长度小于k,则从该布尔矩阵中删掉该事务。
具体地,本发明实现的基于深度剪枝策略的关联规则挖掘方法的具体步骤为:
步骤1,将事务数据库D扫描成布尔矩阵M;矩阵M中的每列表示一个事务,每行表示一个项或者项集;
步骤2,对布尔矩阵M进行去重压缩和排序;
步骤3,根据步骤2处理后的矩阵M寻找1-频繁项集,按照顺序连接1-频繁项集构成2-频繁项集;
将矩阵M中小于最小支持度计数的项集对应的行向量删除后得到矩阵M1,M1为1-频繁项集对应的布尔矩阵,根据事务长度对布尔矩阵进行压缩;
在将1-频繁项集连接生成2-频繁项集时,若连接的项集的支持度小于最小支持度计数时,删除该项集;在得到2-频繁项集对应的布尔矩阵M2后,根据事务长度对矩阵进行压缩。
步骤4,对k-频繁项集中的每个项集向下进行扫描,生成(k+1)-候选项集。
所选取的两个项集在前k-1项相同时才进行连接,生成(k+1)-候选项集。
步骤5,计算(k+1)-候选项集的支持度,将小于最小支持度计数的候选项集舍弃,生成(k+1)-频繁项集。
步骤6,若(k+1)-频繁项集的数目小于k+1,则结束查找,终止本方法;否则更新所生成的(k+1)-频繁项集为当前的k-频繁项集,继续步骤7。
步骤7,根据事务长度对k-频繁项集的布尔矩阵进行压缩。
步骤8,根据项跟位置关系对k-频繁项集进行剪枝,然后转步骤4执行。
本发明的优点与积极效果在于:
(1)本发明的关联规则挖掘方法,在k-频繁项集的连接开始前尽可能压缩k-频繁项集,减少不能连接生成(k+1)-频繁项集的(k+1)-候选项集,减小布尔矩阵的规模,从而提升关联规则挖掘的效率;
(2)本发明的关联规则挖掘方法,根据首项出现次数与项集长度之间的关系来判断是否进行剪枝,进一步减少不必要的候选项集的生成,提升关联规则挖掘的效率;
(3)采用本发明方法对大数据集进行关联规则挖掘,相对于MTCA算法,处理时间要短很多,并且在支持度较低的情况下比Apriori标准方法节约大量的时间,实验证明采用本发明方法获取关联规则的效率更高。
附图说明
图1是本发明实现的关联规则挖掘方法的示意图。
具体实施方式
下面将结合附图和实施例对本发明作进一步的详细说明。
本发明在基于利用压缩矩阵寻找关联规则的方法的基础上,根据Apriori算法的某些性质及其推论,主要做了以下的一些调整和优化策略,以更好地提升关联规则挖掘效率:
1)对1-频繁项集并不按照支持度计数进行排序,而是直接按照值大小对布尔矩阵内的向量进行排序,例如借助DataFrame类型的sort_index函数,对矩阵的每一列和每一行,按照值从小到大的顺序进行排列,如果值相同的话不考虑相对顺序的问题。通过排序,确定频繁项集连接的相对顺序,使得在后面的连接步骤中生成的新项集中,后一个成员出现的次数一定小于前一个成员。对于k-频繁项集Lk连接生成(k+1)-候选项集时,如果某一k-频繁项集lk与它下方相邻的k-频繁项集lk+1的前(k-1)项相同,则lk和lk+1这两项即可进行连接,且该k-频繁项集lk要继续与相邻频繁项集lk+1下的项集判断是否可以连接,如果不能连接,则停止有关k-频繁项集lk的判断,继续判断下一个k-频繁项集lk+1能否与相邻项集连接。
2)考虑(k+1)-频繁项集必须由k+1个k-频繁项集构成的性质,对k-频繁项集进行剪枝。考虑到k-频繁项集内的项是按照字典序排序,在生成(k+1)-频繁项集时,可对以某项开头的项集进行统计:1.统计首项为Im的k-频繁项集的数目,如果数目大于等于k,才可以进行下次迭代产生(k+1)-频繁项集,如果数目小于k,则该项集不可能生成(k+1)-候选项集,则可将首项为Im的k-频繁项集删除。2.而对于首项为Im的k-频繁项集,若在第二项为Ik的项集的数目小于k-1,则可将第二项为Ik的所有k-频繁项集删除。对k-频繁项集剩下的项依次类推,每次检查其数目是否大于等于k-i,来决定是否将其对应的项集剔除,其中i为首项为Im的k-频繁项集中的位置,从0开始计数。
3)对事务长度进行统计,对于k-频繁项集对应的布尔矩阵,如果其中某个事务的长度小于k,则认为该事务无法生成(k+1)-频繁项集,因此需要删掉长度小于k的事务。
所采用的剪枝策略是因为通过迭代的方式去生成高阶频繁项集时,会连接产生过多的非频繁项集,为了获得全部的高阶频繁项集,必须将这些非频繁项集去除。虽然在做全连接时通过最小支持度计数的方式进行剪枝是被普遍采用的做法。然而在进行连接之前,本发明方法通过一些规律和设定来提前发现一些在后续的连接过程中一定不会产生高阶频繁项集的项或项集,并将其从要进行后续连接操作的矩阵中剔除,从而压缩进行连接的规模,提高运行的效率。
下面结合图1说明本发明的基于深度剪枝策略的关联规则挖掘方法的一个具体实现过程。
步骤1:把原始事务数据库D扫描成布尔矩阵M。布尔矩阵M的每列表示一个事务,每行表示某一个项或者项集,将布尔矩阵M存入内存中。
步骤2:对布尔矩阵M进行去重压缩。对于两个事务,即列向量,如果其包含的字段完全相同,那么将其压缩成一个事务,并将该事务在权值数组w中相应的值加1,从而使得布尔矩阵M中不存在重复的列向量,即重复的事务集。
对去重压缩后的布尔矩阵中的向量根据值大小进行排序,本发明实施例利用DataFrame类型的sort_index函数,使得对于布尔矩阵的每一列和每一行,都是按照值从小到大的顺序进行排列,如果值相同的话不考虑相对顺序的问题。通过这次排序,用来确定之后的频繁项集连接的相对顺序。
步骤3:计算经步骤2处理后的M中的每个项集(行向量)的支持度,删除小于最小支持度计数Smin的项集对应的行向量,剩下的即是1-频繁项集L1对应的布尔矩阵M1。根据事务长度对布尔矩阵M1进行压缩。
布尔矩阵M1的行列在步骤2中已经按照值大小进行了升序排序,按顺序依次将项集进行连接,并通过支持度计数进行剪枝,将连接后满足支持度计数的向量加入新的矩阵M2中,构成2-频繁项集L2。所述的通过支持度计数进行剪枝,是指根据最小支持度计数Smin,删除小于Smin的项集。
在得到2-频繁项集对应的布尔矩阵M2后,根据事务长度对矩阵进行压缩。
根据事务长度对矩阵进行压缩是指,对k-频繁项集对应的布尔矩阵Mk,若某事务长度小于k,则从该布尔矩阵Mk中删掉该事务。
对k-频繁项集,当k≥2时,循环执行下面步骤4至步骤8。
步骤4:生成(k+1)-候选项集。依次对k-频繁项集中的每个项集向下进行扫描,在选取的两个k-频繁项集的前k-1项相同的前提下,对项集进行连接,生成相应的(k+1)-候选项集,具体是:依次取第j个k-频繁项集和第j个k-频繁项集下面的项集,判断两个k-频繁项集的前k-1项是否相同,如果相同,则进行“与运算”生成(k+1)-候选项集;如果不相同,则再取第j+1个k-频繁项集,与第j+1个k-频繁项集下方的项集进行连接。
步骤5:计算上一步生成的(k+1)-候选项集与权值数组w的内积,并将算出的该(k+1)-候选项集的支持度计数与最小支持度计数进行比较进行剪枝。如果该(k+1)-候选项集的支持度计数大于等于最小支持度计数,则认定该(k+1)-候选项集是(k+1)-频繁项集,将其加入到新的(k+1)-频繁项集对应的布尔矩阵Mk+1中。否则,舍弃该(k+1)-候选项集。
步骤6:如果(k+1)-频繁项集的数目小于k+1,则直接跳出循环,结束查找,终止本方法。否则,更新k值,继续进行下面步骤。更新k值是指将k自增1,即所生成的(k+1)-频繁项集作为当前的k-频繁项集。
当k≥3的时候,循环执行步骤7和步骤8。
步骤7:根据事务长度的性质,对k-频繁项集对应的布尔矩阵进行压缩。计算k-频繁项集每个事务(列向量)的事务长度,并记入计数数组t中,如果t中出现小于等于k的值,表示无法连接成频繁项集,所以删去该列向量。
步骤8:根据(k+1)-频繁项集必须由k+1个k-频繁项集构成的性质,来对k-频繁项集进行剪枝。对于k-频繁项集来说,如果能够连接生成(k+1)-频繁项集。则首项与该(k+1)-频繁项集相同的k-频繁项集的数目应该大于等于k。按照这个k-频繁项集首项数目的特性再次对项集进行剪枝,从而缩小迭代时进行连接的规模。k-频繁项集首项数目的特性是指:首项为I的k-频繁项集的前k-1项,位置在i的项出现的次数都必须大于等于k-i,i代表首项为I的k-频繁项集中的位置,i从0开始计数,且k-i>0。根据该性质来删去不合适的项集(行向量)。
关联规则说明:
设事务数据库D中项的全集为I,一条关联规则就是形如下面的蕴含式:
X->Y
其中,X∈I,Y∈I,且X与Y的交集为空集。
或者说,对于频繁项集L,设q为L中项的子集,形如q->{L-q}的蕴含是就是一条关联规则,{L-q}是集合L去掉子集q的部分。亦可理解为对于子集q和{L-q},在事务数据库D中共同出现的次数满足最小支持度计数要求。
支持度的计算公式:support_count(X->Y)=support_count(X∩Y)/count(D),
support_count(X∩Y)表示事务数据库D中同时包含X和Y的事务的个数,count(D)代表事务的总数。
置信度的计算公式:confidence(X->Y)=support_count(X∩Y)/support_count(X),
support_count(X)代表事务数据库D中出现X的事务的个数。
下面列出本发明方法部分实现的代码:
在实现本发明所述的关联规则挖掘方法时,优选地选取的数据结构,是使用Python,并借助numpy模块和DataFrame模块,实现较为高效的布尔矩阵的压缩处理和排序,以提高挖掘效率。在本发明方法的实现过程中,多次遇到过算法效率不高的情况,原因在于起初一直试图用Java的相关方法来对形成的布尔矩阵直接进行结构破坏式的删减。而在Java中,一旦固定大小的矩阵建立,是无法在该矩阵的基础上进行行列删除操作的。如果选择通过嵌套列表进行矩阵的构建,则会因为剪枝过程中频繁的行列删除操作使得运行时间大大延长。而选择将满足条件的向量写入新的矩阵的方式则会引发读写效率低下致使算法运行时间过长的问题。最后,本发明优选使用Python,并借助numpy模块和DataFrame模块实现较为高效的矩阵的处理和矩阵排序。
实验结果与分析:
本次实验是在I7-4790@3.6GHz的CPU,20G内存,并安装有windows7专业版操作系统的台式机下进行的。本发明方法在Python3.5下实现,集成开发环境IDE则使用JetBrainPyCharm。数据则是借助了SQL Server 2012 Data Mining Add-ins for Office 2010示例数据中的Table Analysis Tools Sample数据集。本实施例设计了两组实验:第一组实验直接使用该数据集,共计1000条记录,每条记录包括用户编号,婚姻状态,性别,收入,子女数,教育状况,职业状况,是否有房,汽车数量,活动范围,地域,年龄以及是否购买自行车等字段。第二组实验,本实施例在保持该数据集不变的情况下将数据量扩充到2000条。
采用Apriori标准方法、MTCA方法和本发明方法进行关联规则挖掘,比较不同支持度下进行规则挖掘所需要的运行时间,实现结果如表1和表2所示。
表1第一组实验结果,单位为秒
第一组实验的结果显示,当支持度开始降低时,随着满足条件的字段的增多,Apriori标准算法在运行时间上呈现出指数增长的趋势,并且在耗时上要远远超过了其他两种基于压缩矩阵的方法。这是由于随着满足条件的字段的增多,Apriori每次要遍历大规模的数据集,尤其是在数据量扩大,2-频繁项集和3-频繁项集的数量急剧增长的情况下,这时通过矩阵内向量计算的优势就能体现出来。所以MTCA和本发明方法在面对支持度降低的情况下,在时间上比Apriori算法有着明显的优势。这也说明在针对支持度较低的关联规则发现需求时,基于压缩矩阵的Apriori算法要比原始的Apriori有更优异的表现。
在MTCA和本发明方法算法的比较中,在支持度计数的值下降的过程中,能够明显发现MTCA的运行时间的增长速度要比本发明方法算法要快。并且在这个过程中,两个算法运行时间的差距越来越大:当支持度为0.02时,两者时间相差无几,而当支持度下降到0.005的时候,本发明方法可以比MTCA算法要节省11秒之多,耗时仅为MTCA算法的用时的78.3%,为Apriori算法耗时的8.1%。
经实验结果表明,本发明方法在运行时间上明显要比MTCA算法和Apriori算法短很多,并且在支持度较低的情况下能够比Apriori标准算法节约大量的时间,从而体现了改进部分的优越性。
表2第二组实验结果,单位为秒
同样,通过对第二组数据的处理,继续验证了本发明方法在运行时间上比MTCA算法有着明显的优势,并且在支持度较低的情况下比Apriori标准方法节约大量的时间,例如,在支持度为0.005时,本发明的用时依然比MTCA和Apriori算法节约很多,分别是MTCA算法的57.8%和Aproiri算法用时的16.3%。
从两组实验的对比结果来看MTCA算法和本发明方法,由于记录重复数据,致使两种方法的运行时间都有所延长。而MTCA方法随着支持度的降低,算法的运行时间的增长速度要高于采用本发明方法。采用本发明改进的方法表现出更稳定的特性,无论是在运行时间上还是在随着支持度计数下降、时间的增长幅度上,都表现出良好的特性。
Claims (4)
1.一种基于深度剪枝策略的关联规则挖掘方法,其特征在于,包括:
将事务数据库扫描成布尔矩阵,并生成1-频繁项集的布尔矩阵M1,M1中的每一列和每一行,都按照值从小到大的顺序进行排列,通过排序确定频繁项集连接的相对顺序;
生成(k+1)-频繁项集及对应的布尔矩阵,k≥1;当k≥3时,每次生成(k+1)-频繁项集时,先根据项跟位置关系对k-频繁项集进行剪枝,再生成(k+1)-频繁项集;
所述的根据项跟位置关系是指:(1)统计首项为I的k-频繁项集的数目,数目必须大于等于k,(2)对首项为I的k-频繁项集的前k-1项,设i代表首项为I的k-频繁项集中的位置,位置在i的项出现的次数必须大于等于k-i,i从0开始计数,且k-i>0;
所述的根据项跟位置关系对k-频繁项集进行剪枝,是指将不符合所述项跟位置关系的k-频繁项集删除;
当(k+1)-频繁项集的数目小于k+1,则停止查找,否则更新k值,继续生成(k+1)-频繁项集。
2.根据权利要求1所述的基于深度剪枝策略的关联规则挖掘方法,其特征在于,所述的(k+1)-频繁项集在生成时,先根据事务长度对k-频繁项集的布尔矩阵进行压缩,具体是,对k-频繁项集对应的布尔矩阵,若其中某事务长度小于k,则从该布尔矩阵中删掉该事务。
3.根据权利要求1或2所述的基于深度剪枝策略的关联规则挖掘方法,其特征在于,所述的关联规则挖掘方法实现步骤包括:
步骤1,将事务数据库D扫描成布尔矩阵M;矩阵M中的每列表示一个事务,每行表示一个项或者项集;
步骤2,对布尔矩阵M进行去重压缩和排序;
步骤3,根据步骤2处理后的矩阵M寻找1-频繁项集,按照顺序连接1-频繁项集构成2-频繁项集;
将矩阵M中小于最小支持度计数的项集对应的行向量删除后得到矩阵M1,M1为1-频繁项集对应的布尔矩阵,并根据事务长度对布尔矩阵M1进行压缩;
在将1-频繁项集连接生成2-频繁项集时,若连接的项集的支持度小于最小支持度计数时,删除该项集;在得到2-频繁项集对应的布尔矩阵M2后,根据事务长度对矩阵进行压缩;
步骤4,对k-频繁项集中的每个项集向下进行扫描,生成(k+1)-候选项集;
步骤5,计算(k+1)-候选项集的支持度,将小于最小支持度计数的候选项集舍弃,生成(k+1)-频繁项集;
步骤6,若(k+1)-频繁项集的数目小于k+1,则结束查找,终止本方法;否则更新所生成的(k+1)-频繁项集为当前的k-频繁项集,继续步骤7;
步骤7,根据事务长度对k-频繁项集的布尔矩阵进行压缩;
步骤8,根据项跟位置关系对k-频繁项集进行剪枝,然后转步骤4执行。
4.根据权利要求3所述的基于改进的压缩矩阵的关联规则挖掘方法,其特征在于,所述的关联规则挖掘方法,使用Python和numpy模块、DataFrame模块,来对布尔矩阵排序和压缩。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710170549.9A CN106991141B (zh) | 2017-03-21 | 2017-03-21 | 一种基于深度剪枝策略的关联规则挖掘方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710170549.9A CN106991141B (zh) | 2017-03-21 | 2017-03-21 | 一种基于深度剪枝策略的关联规则挖掘方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106991141A true CN106991141A (zh) | 2017-07-28 |
CN106991141B CN106991141B (zh) | 2020-12-11 |
Family
ID=59413247
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710170549.9A Active CN106991141B (zh) | 2017-03-21 | 2017-03-21 | 一种基于深度剪枝策略的关联规则挖掘方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106991141B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108280210A (zh) * | 2018-01-31 | 2018-07-13 | 湖北工业大学 | 一种基于烟花算法的交通路线确定方法及系统 |
CN109669967A (zh) * | 2018-12-13 | 2019-04-23 | 深圳市信义科技有限公司 | 一种基于大数据技术的时空数据关联分析方法 |
CN110309179A (zh) * | 2019-05-22 | 2019-10-08 | 桂林电子科技大学 | 基于并行pso的最大容错频繁项集挖掘方法 |
CN110909238A (zh) * | 2019-10-25 | 2020-03-24 | 北京比财数据科技有限公司 | 一种考虑竞争模式的关联挖掘算法 |
CN110990434A (zh) * | 2019-11-29 | 2020-04-10 | 国网四川省电力公司信息通信公司 | Spark平台分组和Fp-Growth关联规则挖掘方法 |
CN112035552A (zh) * | 2020-09-02 | 2020-12-04 | 国网河南省电力公司电力科学研究院 | 一种基于关联规则的电压暂降严重程度预测方法及装置 |
CN112215646A (zh) * | 2020-10-12 | 2021-01-12 | 四川长虹电器股份有限公司 | 基于改进Aprion算法的品牌推广方法 |
CN113064934A (zh) * | 2021-03-26 | 2021-07-02 | 安徽继远软件有限公司 | 电力传感网感知层故障关联规则挖掘方法及系统 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7370033B1 (en) * | 2002-05-17 | 2008-05-06 | Oracle International Corporation | Method for extracting association rules from transactions in a database |
CN103106321A (zh) * | 2011-11-15 | 2013-05-15 | 无锡南理工科技发展有限公司 | 一种基于Apriori方法的气象灾害智能感知方法 |
CN103995828A (zh) * | 2014-04-11 | 2014-08-20 | 西安电子科技大学宁波信息技术研究院 | 一种云存储日志数据分析方法 |
CN104156635A (zh) * | 2014-07-08 | 2014-11-19 | 华南师范大学 | 基于公共子序列的基因芯片表达数据的opsm挖掘方法 |
CN104376365A (zh) * | 2014-11-28 | 2015-02-25 | 国家电网公司 | 一种基于关联规则挖掘的信息系统运行规则库的构造方法 |
CN105320756A (zh) * | 2015-10-15 | 2016-02-10 | 江苏省邮电规划设计院有限责任公司 | 一种基于改进Apriori算法的数据库关联规则挖掘方法 |
CN105608135A (zh) * | 2015-12-18 | 2016-05-25 | Tcl集团股份有限公司 | 一种基于Apriori算法的数据挖掘方法及系统 |
CN105677759A (zh) * | 2015-12-30 | 2016-06-15 | 国家电网公司 | 一种信息通信网络中的告警关联性分析方法 |
US20160180229A1 (en) * | 2014-12-17 | 2016-06-23 | Tata Consultancy Services Limited | Interpretation of a dataset |
US20160179903A1 (en) * | 2014-12-23 | 2016-06-23 | Ran Bittmann | Enhancing frequent itemset mining |
CN106294617A (zh) * | 2016-07-29 | 2017-01-04 | 浪潮软件集团有限公司 | 一种高效挖掘关联规则中频繁项集的方法 |
-
2017
- 2017-03-21 CN CN201710170549.9A patent/CN106991141B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7370033B1 (en) * | 2002-05-17 | 2008-05-06 | Oracle International Corporation | Method for extracting association rules from transactions in a database |
CN103106321A (zh) * | 2011-11-15 | 2013-05-15 | 无锡南理工科技发展有限公司 | 一种基于Apriori方法的气象灾害智能感知方法 |
CN103995828A (zh) * | 2014-04-11 | 2014-08-20 | 西安电子科技大学宁波信息技术研究院 | 一种云存储日志数据分析方法 |
CN104156635A (zh) * | 2014-07-08 | 2014-11-19 | 华南师范大学 | 基于公共子序列的基因芯片表达数据的opsm挖掘方法 |
CN104376365A (zh) * | 2014-11-28 | 2015-02-25 | 国家电网公司 | 一种基于关联规则挖掘的信息系统运行规则库的构造方法 |
US20160180229A1 (en) * | 2014-12-17 | 2016-06-23 | Tata Consultancy Services Limited | Interpretation of a dataset |
US20160179903A1 (en) * | 2014-12-23 | 2016-06-23 | Ran Bittmann | Enhancing frequent itemset mining |
CN105320756A (zh) * | 2015-10-15 | 2016-02-10 | 江苏省邮电规划设计院有限责任公司 | 一种基于改进Apriori算法的数据库关联规则挖掘方法 |
CN105608135A (zh) * | 2015-12-18 | 2016-05-25 | Tcl集团股份有限公司 | 一种基于Apriori算法的数据挖掘方法及系统 |
CN105677759A (zh) * | 2015-12-30 | 2016-06-15 | 国家电网公司 | 一种信息通信网络中的告警关联性分析方法 |
CN106294617A (zh) * | 2016-07-29 | 2017-01-04 | 浪潮软件集团有限公司 | 一种高效挖掘关联规则中频繁项集的方法 |
Non-Patent Citations (3)
Title |
---|
LEI LI等: "Mining Association Rules Based on Deep Pruning Strategies", 《WIRELESS PERSONAL COMMUNICATIONS》 * |
吕桃霞 等: "一种基于矩阵的强关联规则生成算法", 《计算机应用研究》 * |
罗丹 等: "一种基于压缩矩阵的Apriori算法改进研究", 《计算机科学》 * |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108280210A (zh) * | 2018-01-31 | 2018-07-13 | 湖北工业大学 | 一种基于烟花算法的交通路线确定方法及系统 |
CN108280210B (zh) * | 2018-01-31 | 2020-10-09 | 湖北工业大学 | 一种基于烟花算法的交通路线确定方法及系统 |
CN109669967B (zh) * | 2018-12-13 | 2022-04-15 | 深圳市信义科技有限公司 | 一种基于大数据技术的时空数据关联分析方法 |
CN109669967A (zh) * | 2018-12-13 | 2019-04-23 | 深圳市信义科技有限公司 | 一种基于大数据技术的时空数据关联分析方法 |
CN110309179A (zh) * | 2019-05-22 | 2019-10-08 | 桂林电子科技大学 | 基于并行pso的最大容错频繁项集挖掘方法 |
CN110309179B (zh) * | 2019-05-22 | 2023-04-07 | 桂林电子科技大学 | 基于并行pso的最大容错频繁项集挖掘方法 |
CN110909238A (zh) * | 2019-10-25 | 2020-03-24 | 北京比财数据科技有限公司 | 一种考虑竞争模式的关联挖掘算法 |
CN110909238B (zh) * | 2019-10-25 | 2022-06-07 | 北京比财数据科技有限公司 | 一种考虑竞争模式的关联挖掘算法 |
CN110990434A (zh) * | 2019-11-29 | 2020-04-10 | 国网四川省电力公司信息通信公司 | Spark平台分组和Fp-Growth关联规则挖掘方法 |
CN110990434B (zh) * | 2019-11-29 | 2023-04-18 | 国网四川省电力公司信息通信公司 | Spark平台分组和Fp-Growth关联规则挖掘方法 |
CN112035552A (zh) * | 2020-09-02 | 2020-12-04 | 国网河南省电力公司电力科学研究院 | 一种基于关联规则的电压暂降严重程度预测方法及装置 |
CN112215646A (zh) * | 2020-10-12 | 2021-01-12 | 四川长虹电器股份有限公司 | 基于改进Aprion算法的品牌推广方法 |
CN113064934A (zh) * | 2021-03-26 | 2021-07-02 | 安徽继远软件有限公司 | 电力传感网感知层故障关联规则挖掘方法及系统 |
CN113064934B (zh) * | 2021-03-26 | 2023-12-08 | 安徽继远软件有限公司 | 电力传感网感知层故障关联规则挖掘方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN106991141B (zh) | 2020-12-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106991141A (zh) | 一种基于深度剪枝策略的关联规则挖掘方法 | |
Ganti et al. | Mining very large databases | |
AL-Zawaidah et al. | An improved algorithm for mining association rules in large databases | |
Koudas et al. | High dimensional similarity joins: Algorithms and performance evaluation | |
Goil et al. | High performance OLAP and data mining on parallel computers | |
US5899992A (en) | Scalable set oriented classifier | |
US6334125B1 (en) | Method and apparatus for loading data into a cube forest data structure | |
Goil et al. | A parallel scalable infrastructure for OLAP and data mining | |
Campagna et al. | Finding associations and computing similarity via biased pair sampling | |
CN106095951B (zh) | 基于负载均衡和查询日志的数据空间多维索引方法 | |
Manolopoulos et al. | R-trees have grown everywhere | |
Lin et al. | Mining weighted frequent itemsets without candidate generation in uncertain databases | |
Muliono et al. | Analysis of frequent itemsets mining algorithm againts models of different datasets | |
Malik et al. | A comprehensive approach towards data preprocessing techniques & association rules | |
Singh et al. | Knowledge based retrieval scheme from big data for aviation industry | |
Adhikari et al. | Study of select items in different data sources by grouping | |
Tamilselvi et al. | A unified framework and sequential data cleaning approach for a data warehouse | |
Goil et al. | High performance data mining using data cubes on parallel computers | |
Liang et al. | Continuously maintaining approximate quantile summaries over large uncertain datasets | |
Sidló et al. | Shaping SQL-based frequent pattern mining algorithms | |
Syahrir et al. | Improvement of Apriori Algorithm Performance Using the TID-List Vertical Approach and Data Partitioning. | |
Haruna et al. | Cost-based and effective human-machine based data deduplication model in entity reconciliation | |
Taniar et al. | Parallel data mining | |
US7584202B2 (en) | High performance in memory data cubes | |
Raksha et al. | Detection of fuzzy duplicates in high dimensional datasets |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |