1、第3课 频繁模式及关联规则挖掘技术 xx副教授 浙江大学人工智能研究所浙江大学本科生数据挖掘导论课件1谢谢观赏2019-8-26内容提纲n关联规则挖掘简介n关联规则基本模型n关联规则价值衡量与发展n参考文献2谢谢观赏2019-8-26I.关联规则简介n关联规则反映一个事物与其他事物之间的相互依存性和关联性。如果两个或者多个事物之间存在一定的关联关系,那么,其中一个事物就能够通过其他事物预测到。 n典型的关联规则发现问题是对超市中的货篮数据(Market Basket)进行分析。通过发现顾客放入货篮中的不同商品之间的关系来分析顾客的购买习惯。 3谢谢观赏2019-8-26什么是关联规则挖掘n关联
2、规则挖掘 首先被Agrawal, Imielinski and Swami在1993年的SIGMOD会议上提出在事务、关系数据库中的项集和对象中发现频繁模式、关联规则、相关性或者因果结构频繁模式: 数据库中频繁出现的项集 n目的: 发现数据中的规律超市数据中的什么产品会一起购买? 啤酒和尿布在买了一台PC之后下一步会购买?哪种DNA对这种药物敏感?我们如何自动对Web文档进行分类?4谢谢观赏2019-8-26频繁模式挖掘的重要性n许多重要数据挖掘任务的基础关联、相关性、因果性序列模式、空间模式、时间模式、多维关联分类、聚类分析n更加广泛的用处购物篮分析、交叉销售、直销点击流分析、DNA序列分析
3、等等5谢谢观赏2019-8-26II.关联规则基本模型n关联规则基本模型nApriori算法nFp-Tree算法6谢谢观赏2019-8-26I.关联规则基本模型 nIBM公司Almaden研究中心的R.Agrawal首先提出关联规则模型,并给出求解算法AIS。随后又出现了SETM和Apriori等算法。其中,Apriori是关联规则模型中的经典算法。 给定一组事务产生所有的关联规则满足最小支持度和最小可信度7谢谢观赏2019-8-26关联规则基本模型(续)n设I=i1, i2, im为所有项目的集合,D为事务数据库,事务T是一个项目子集(TI)。每一个事务具有唯一的事务标识TID。设A是一个由
4、项目构成的集合,称为项集。事务T包含项集A,当且仅当AT。如果项集A中包含k个项目,则称其为k项集。项集A在事务数据库D中出现的次数占D中总事务的百分比叫做项集的支持度。如果项集的支持度超过用户给定的最小支持度阈值,就称该项集是频繁项集(或大项集)。 8谢谢观赏2019-8-26关联规则基本模型(续)n关联规则是形如XY的逻辑蕴含式,其中XI,YI,且XY=。如果事务数据库D中有s%的事务包含XY,则称关联规则XY的支持度为s%,实际上,支持度是一个概率值。若项集X的支持度记为support (X),规则的信任度为support (XY)support (X)。这是一个条件概率P (Y | X
5、)。 也就是: support (XY)=P (X Y) confidence (XY)=P (Y | X) 9谢谢观赏2019-8-26规则度量:支持度与可信度n查找所有的规则 X & Y Z 具有最小支持度和可信度支持度, s, 一次交易中包含X 、 Y 、 Z的可能性可信度, c, 包含X 、 Y的交易中也包含Z的条件概率交易ID购买的商品2000A,B,C1000A,C4000A,D5000B,E,F设最小支持度为50%, 最小可信度为 50%, 则可得到A C (50%, 66.6%)C A (50%, 100%)买尿布的客买尿布的客户户二者都买二者都买的客户的客户买啤酒的客户买啤酒
6、的客户10谢谢观赏2019-8-26关联规则基本模型(续)n关联规则就是支持度和信任度分别满足用户给定阈值的规则。 n发现关联规则需要经历如下两个步骤: 找出所有频繁项集。 由频繁项集生成满足最小信任度阈值的规则。 11谢谢观赏2019-8-26Let min_support = 50%, min_conf = 50%:A C (50%, 66.7%)C A (50%, 100%)Customerbuys diaperCustomerbuys bothCustomerbuys beerTransaction-idItems bought10A, B, C20A, C30A, D40B, E,
7、F12谢谢观赏2019-8-26For rule A C:support = support(AC) = 50%confidence = support(AC)/support(A) = 66.6%Min. support 50%Min. confidence 50%Transaction-idItems bought10A, B, C20A, C30A, D40B, E, FFrequent patternSupportA75%B50%C50%A, C50%13谢谢观赏2019-8-26II.Apriori算法的步骤nApriori算法命名源于算法使用了频繁项集性质的先验(Prior)知识。
8、 nApriori算法将发现关联规则的过程分为两个步骤:通过迭代,检索出事务数据库中的所有频繁项集,即支持度不低于用户设定的阈值的项集;利用频繁项集构造出满足用户最小信任度的规则。n挖掘或识别出所有频繁项集是该算法的核心,占整个计算量的大部分。 14谢谢观赏2019-8-26频繁项集n为了避免计算所有项集的支持度(实际上频繁项集只占很少一部分),Apriori算法引入潜在频繁项集的概念。若潜在频繁k项集的集合记为Ck ,频繁k项集的集合记为Lk ,m个项目构成的k项集的集合为 ,则三者之间满足关系Lk Ck 。构成潜在频繁项集所遵循的原则是“频繁项集的子集必为频繁项集”。 kmCkmC15谢谢
9、观赏2019-8-26关联规则的性质: n性质1:频繁项集的子集必为频繁项集。 n性质2:非频繁项集的超集一定是非频繁的。 nApriori算法运用性质1,通过已知的频繁项集构成长度更大的项集,并将其称为潜在频繁项集。潜在频繁k项集的集合Ck 是指由有可能成为频繁k项集的项集组成的集合。以后只需计算潜在频繁项集的支持度,而不必计算所有不同项集的支持度,因此在一定程度上减少了计算量。 16谢谢观赏2019-8-26Apriori算法n(1) L1=频繁1项集; n(2) for(k=2;Lk-1;k+) do begin n(3) Ck=apriori_gen(Lk-1); /新的潜在频繁项集
10、n(4) for all transactions tD do begin n(5) Ct=subset(Ck,t); /t中包含的潜在频繁项集 n(6) for all candidates cCt do n(7) c.count+; n(8) end; n(9) Lk=cCk|c.countminsup n(10) end; n(11) Answer= kkL17谢谢观赏2019-8-26实例Database TDB1st scanC1L1L2C2C22nd scanC3L33rd scanTidItems10A, C, D20B, C, E30A, B, C, E40B, EItemse
11、tsupA2B3C3D1E3ItemsetsupA2B3C3E3ItemsetA, BA, CA, EB, CB, EC, EItemsetsupA, B1A, C2A, E1B, C2B, E3C, E2ItemsetsupA, C2B, C2B, E3C, E2ItemsetB, C, EItemsetsupB, C, E218谢谢观赏2019-8-26Visualization of Association Rules: Pane Graph19谢谢观赏2019-8-26Visualization of Association Rules: Rule Graph20谢谢观赏2019-8-
12、26提高Apriori算法的方法nHash-based itemset counting(散列项集计数)nTransaction reduction(事务压缩)nPartitioning(划分)nSampling(采样)21谢谢观赏2019-8-26关联规则挖掘算法nAgrawal等人提出的AIS,Apriori和AprioriTidnCumulate和Stratify,Houstsma等人提出的SETMnPark等人提出的DHPnSavasere等人的PARTITIONnHan等人提出的不生成候选集直接生成频繁模式FPGrowthn其中最有效和有影响的算法为Apriori,DHP和PARTI
13、TION,FPGrowth。22谢谢观赏2019-8-26n用Frequent-Pattern tree (FP-tree) 结构压缩数据库, 高度浓缩,同时对频繁集的挖掘又完备的避免代价较高的数据库扫描n开发一种高效的基于FP-tree的频繁集挖掘算法采用分而治之的方法学:分解数据挖掘任务为小任务避免生成关联规则: 只使用部分数据库!挖掘频繁集挖掘频繁集 不用生成候选集不用生成候选集23谢谢观赏2019-8-26f:4c:1b:1p:1b:1c:3a:3b:1m:2p:2m:1头表头表Item frequency head f4c4a3b3m3p3最小支持度最小支持度 = 0.5TIDIte
14、ms bought (ordered) frequent items100f, a, c, d, g, i, m, pf, c, a, m, p200a, b, c, f, l, m, of, c, a, b, m300 b, f, h, j, of, b400 b, c, k, s, pc, b, p500 a, f, c, e, l, p, m, nf, c, a, m, p步骤:1.扫描数据库一次,得到频繁1-项集2.把项按支持度递减排序3.再一次扫描数据库,建立FP-tree建立建立 FP-tree树树24谢谢观赏2019-8-26n完备: 不会打破交易中的任何模式包含了频繁模式挖掘所
15、需的全部信息n紧密去除不相关信息不包含非频繁项支持度降序排列: 支持度高的项在FP-tree中共享的机会也高决不会比原数据库大(如果不计算树节点的额外开销)FP-tree 结构的好处结构的好处25谢谢观赏2019-8-26n基本思想 (分而治之)用FP-tree递归增长频繁集n方法 对每个项,生成它的 条件模式库, 然后是它的 条件 FP-tree对每个新生成的条件FP-tree,重复这个步骤直到结果FP-tree为空, 或只含唯一的一个路径 (此路径的每个子路径对应的项集都是频繁集)用用FP-tree挖掘频繁集挖掘频繁集26谢谢观赏2019-8-261)为FP-tree中的每个节点生成条件模
16、式库2)用条件模式库构造对应的条件FP-tree3)递归构造条件 FP-trees 同时增长其包含的频繁集如果条件FP-tree只包含一个路径,则直接生成所包含的频繁集。如果条件FP-tree包含多个路径,则采用混合的方法挖掘挖掘 FP-tree的主要步骤的主要步骤27谢谢观赏2019-8-26n从FP-tree的头表开始n按照每个频繁项的连接遍历 FP-treen列出能够到达此项的所有前缀路径,得到条件模式库条件模式库条件模式库itemcond. pattern basecf:3afc:3bfca:1, f:1, c:1mfca:2, fcab:1pfcam:2, cb:1f:4c:1b:1
17、p:1b:1c:3a:3b:1m:2p:2m:1头表头表Item frequency head f4c4a3b3m3p3步骤步骤1: 从从 FP-tree 到条件模式库到条件模式库28谢谢观赏2019-8-26nNode-link propertyFor any frequent item ai, all the possible patterns containing only frequent items and ai can be obtained by following ais node-links, starting from ais head in the fp-tree hea
18、der.nPrefix path propertyTo calculate the frequent patterns with suffix ai, only the prefix subpathes of nodes labeled ai in the FP-tree need to be accumulated, and the frequency count of every node in the prefix path should carry the same count as that in the corresponding node ai in the path.FP-tr
19、ee支持条件模式库构造的属性支持条件模式库构造的属性29谢谢观赏2019-8-26n对每个模式库计算库中每个项的支持度用模式库中的频繁项建立FP-treem-条件模式库条件模式库:fca:2, fcab:1f:3c:3a:3m-conditional FP-treeAll frequent patterns concerning mm, fm, cm, am, fcm, fam, cam, fcamf:4c:1b:1p:1b:1c:3a:3b:1m:2p:2m:1头表头表Item frequency head f4c4a3b3m3p3步骤步骤2: 建立条件建立条件 FP-tree30谢谢观赏2
20、019-8-26EmptyEmptyf(f:3)|c(f:3)c(f:3, c:3)|a(fc:3)aEmpty(fca:1), (f:1), (c:1)b(f:3, c:3, a:3)|m(fca:2), (fcab:1)m(c:3)|p(fcam:2), (cb:1)p条件FP-tree条件模式库项通过建立条件模式库得到频繁集通过建立条件模式库得到频繁集31谢谢观赏2019-8-26f:3c:3a:3m-条件 FP-tree“am”的条件模式库: (fc:3)f:3c:3am-条件 FP-tree“cm”的条件模式: (f:3)f:3cm-条件 FP-tree“cam”条件模式库: (f:
21、3)f:3cam-条件 FP-tree递归挖掘条件递归挖掘条件FP-tree32谢谢观赏2019-8-26III. 关联规则价值衡量与发展n关联规则价值衡量n关联规则最新进展33谢谢观赏2019-8-26I.规则价值衡量 n对关联规则的评价与价值衡量涉及两个层面:系统客观的层面用户主观的层面34谢谢观赏2019-8-26系统客观层面 n使用“支持度和信任度”框架可能会产生一些不正确的规则。只凭支持度和信任度阈值未必总能找出符合实际的规则。 35谢谢观赏2019-8-26用户主观层面 n只有用户才能决定规则的有效性、可行性。所以,应该将用户的需求和系统更加紧密地结合起来。 n可以采用基于约束(C
22、onsraint-based)的数据挖掘方法。具体约束的内容有:数据约束、 限定数据挖掘的维和层次、规则约束。n如果把某些约束条件与算法紧密结合,既能提高数据挖掘效率,又能明确数据挖掘的目标。 36谢谢观赏2019-8-26II. 关联规则新进展 n在基于一维布尔型关联规则的算法研究中先后出现了AIS、SETM等数据挖掘算法。 nR.Agrawal等人提出的Apriori 是经典算法。随后的关联规则发现算法大多数建立在Apriori算法基础上,或进行改造,或衍生变种。比如AprioriTid和AprioriHybrid算法。 nLin等人提出解决规则挖掘算法中的数据倾斜问题,从而使算法具有较好
23、的均衡性。Park等人提出把哈希表结构用于关联规则挖掘。37谢谢观赏2019-8-26关联规则新进展(续)n数据挖掘工作是在海量数据库上进行的,数据库的规模对规则的挖掘时间有很大影响。nAgrawal首先提出事务缩减技术,Han和Park等人也分别在减小数据规模上做了一些工作。 n抽样的方法是由Toivonen提出的。 nBrin等人采用动态项集计数方法求解频繁项集。 nAggarwal提出用图论和格的理论求解频繁项集的方法。Prutax算法就是用格遍历的办法求解频繁项集。 38谢谢观赏2019-8-26关联规则新进展(续)n关联规则模型有很多扩展,如顺序模型挖掘,在顺序时间段上进行挖掘等。n
24、还有挖掘空间关联规则,挖掘周期性关联规则,挖掘负关联规则,挖掘交易内部关联规则等。 nGuralnik提出顺序时间段问题的形式描述语言,以便描述用户感兴趣的时间段,并且构建了有效的数据结构SP树(顺序模式树)和自底向上的数据挖掘算法。 n最大模式挖掘是Bayardo等人提出来的。 39谢谢观赏2019-8-26关联规则新进展(续)n随后人们开始探讨频率接近项集。Pei给出了一种有效的数据挖掘算法。 nB.zden等人的周期性关联规则是针对具有时间属性的事务数据库,发现在规律性的时间间隔中满足最小支持度和信任度的规则。 n贝尔实验室的S.Ramaswamy等人进一步发展了周期性关联规则,提出挖掘
25、符合日历的关联规则(Calendric Association Rules)算法,用以进行市场货篮分析。 nFang等人给出冰山查询数据挖掘算法。 40谢谢观赏2019-8-26关联规则新进展(续)nT.Hannu等人把负边界引入规则发现算法中,每次挖掘不仅保存频繁项集,而且同时保存负边界,达到下次挖掘时减少扫描次数的目的。 nSrikant等人通过研究关联规则的上下文,提出规则兴趣度尺度用以剔除冗余规则。 nZakia还用项集聚类技术求解最大的近似潜在频繁项集,然后用格迁移思想生成每个聚类中的频繁项集。 nCAR,也叫分类关联规则,是Lin等人提出的一种新的分类方法,是分类技术与关联规则思想
26、相结合的产物,并给出解决方案和算法。 41谢谢观赏2019-8-26关联规则新进展(续)nCheung等人提出关联规则的增量算法。nThomas等人把负边界的概念引入其中,进一步发展了增量算法。如,基于Apriori框架的并行和分布式数据挖掘算法。nOates等人将MSDD算法改造为分布式算法。还有其他的并行算法,如利用垂直数据库探求项集聚类等。 42谢谢观赏2019-8-26IV. 参考文献nAgrawal R, Imielinski T, and Swami A. Mining association rules between sets of items in large databas
27、es. SIGMOD, 207-216, 1993.nAgrawal R, and Srikant R. Fast algorithms for mining association rules in large databases. VLDB, 478-499, 1994. nHan J W, Pei J, Yin Y W. Mining frequent patterns without candidate generation. SIGMOD, 1-12, 2000.nHan J W, Pei J, Yin Y W, and Mao R Y. Mining frequent patterns without candidate generation: a frequent-pattern tree approach. Data Mining and Knowledge Discovery. 8, 53-87, 200443谢谢观赏2019-8-2644谢谢观赏2019-8-26