1、基本概念与解决方法 经典的频繁项目集生成算法分析 Apriori算法的性能瓶颈问题 Apriori的改进算法 对项目集格空间理论的发展 基于项目序列集操作的关联规则挖掘算法 改善关联规则挖掘质量问题 约束数据挖掘问题 关联规则挖掘中的一些更深入的问题 数量关联规则挖掘方法,第4章 关联规则挖掘理论和算法 内容提要,关联规则挖掘是数据挖掘研究的基础,关联规则挖掘(Association Rule Mining)是数据挖掘中研究较早而且至今仍活跃的研究方法之一。 最早是由Agrawal等人提出的(1993)。最初提出的动机是针对购物篮分析(Basket Analysis)问题提出的,其目的是为了发
2、现交易数据库(Transaction Database)中不同商品之间的联系规则。 关联规则的挖掘工作成果颇丰。例如,关联规则的挖掘理论、算法设计、算法的性能以及应用推广、并行关联规则挖掘以及数量关联规则挖掘等。 关联规则挖掘是数据挖掘的其他研究分支的基础。,事务数据库,设I= i1,i2,im 是一个项目集合,事务数据库D= t1,t2,tn 是由一系列具有唯一标识TID的事务组成,每个事务ti(i=1,2,n)都对应I上的一个子集。 一个事务数据库可以用来刻画: 购物记录: I是全部物品集合, D是购物清单,每个元组ti是一次购买物品的集合(它当然是I的一个子集)。 其它应用问题,支持度与
3、频繁项目集,定义(项目集的支持度). 给定一个全局项目集I和事务数据库D,一个项目集I1I在D上的支持度(Support)是包含I1的事务在D中所占的百分比:support( I1 )=| t D | I1 t| / | D|。 定义(频繁项目集).给定全局项目集I和事务数据库D ,D中所有满足用户指定的最小支持度(Minsupport)的项目集,即大于或等于minsupport的I的非空子集,称为频繁项目集(频集:Frequent Itemsets)。在频繁项目集中挑选出所有不被其他元素包含的频繁项目集称为最大频繁项目集(最大频集: Maximum Frequent Itemsets)。,可
4、信度与关联规则,定义(关联规则与可信度).给定一个全局项目集I和事务数据库D,一个定义在I和D上的关联规则形如I1I2,并且它的可信度或信任度或置信度(Confidence)是指包含I1和I2的事务数与包含I1的事务数之比,即: Confidence(I1I2)= P( I1 | I2 ) Confidence(I1I2)= support(I1I2)/ support(I1),其中I1,I2I,I1I2=。 定义(强关联规则). D在I上满足最小支持度和最小信任度(Minconfidence)的关联规则称为强关联规则(Strong Association Rule)。,关联规则挖掘基本过程,
5、关联规则挖掘问题可以划分成两个子问题: 1. 发现频繁项目集:通过用户给定Minsupport ,寻找所有频繁项目集或者最大频繁项目集。 2生成关联规则:通过用户给定Minconfidence ,在频繁项目集中,寻找关联规则。 第1个子问题是近年来关联规则挖掘算法研究的重点。,基本概念与解决方法 经典的频繁项目集生成算法分析 Apriori算法的性能瓶颈问题 Apriori的改进算法 对项目集格空间理论的发展 基于项目序列集操作的关联规则挖掘算法 改善关联规则挖掘质量问题 约束数据挖掘问题 关联规则挖掘中的一些更深入的问题 数量关联规则挖掘方法,第5章 关联规则挖掘理论和算法 内容提要,项目集
6、格空间理论,定理1( Appriori 属性1). 如果项目集X 是频繁项目集,那么它的所有非空子集都是频繁项目集。 证明 设X是一个项目集,事务数据库T 中支持X 的元组数为s。对X的任一非空子集为Y,设T中支持Y的元组数为s1。 根据项目集支持数的定义,很容易知道支持X 的元组一定支持Y,所以s1 s,即support(Y) support(X)。 按假设:项目集X 是频繁项目集,即support(X) minsupport, 所以support(Y) support(X) minsupport,因此Y是频繁项目集。 定理2( Appriori 属性2).如果项目集X 是非频繁项目集,那么
7、它的所有超集都是非频繁项目集。证明 (略),经典的发现频繁项目集算法,1994年,Agrawal 等人提出了著名的Apriori 算法。 算法1 Apriori(发现频繁项目集),(1) L1 = large 1-itemsets; /所有1-项目频集 (2) FOR (k=2; Lk-1; k+) DO BEGIN (3) Ck=apriori-gen(Lk-1); / Ck是k-候选集 (4) FOR all transactions tD DO BEGIN (5) Ct=subset(Ck,t); / Ct是所有t包含的候选集元素 (6) FOR all candidates c Ct
8、DO (7) c.count+; (8) END (9) Lk=cCk |c.countminsup_count (10) END (11) L= Lk;,apriori-gen过程,算法apriori中调用了apriori-gen(Lk-1),是为了通过(k-1)-频集产生K-侯选集。has_infrequent_subset(c, Lk-1),判断c是否加入到k-侯选集中。,(1) FOR all itemset p Lk-1 DO (2) FOR all itemset qLk-1 DO (3) IF p.item1=q.item1, , p.itemk-2=q.itemk-2, p.i
9、temk-1 q.itemk-1 THEN BEGIN (4) c= pq;/把q的第k-1个元素连到p后 (5) IF has_infrequent_subset(c, Lk-1) THEN (6) delete c;/删除含有非频繁项目子集的侯选元素 (7) ELSE add c to Ck; (8) END (9) Return Ck;,Apriori算法例子 (Minsupport=50%),关联规则的生成问题,根据上面介绍的关联规则挖掘的两个步骤,在得到了所有频繁项目集后,可以按照下面的步骤生成关联规则: 对于每一个频繁项目集l,生成其所有的非空子集; 对于l 的每一个非空子集x,如
10、果Confidence( x(l-x ))minconfidence,那么“x(l-x)”成立。 算法3-4 从给定的频繁项目集中生成强关联规则算法3-4的核心是genrules递归过程,它实现一个频繁项目集中所有强关联规则的生成。,Rule-generate(L,minconf) (1) FOR each frequent itemset lk in L (2) genrules( lk , Xm );,算法-递归测试一个频集中的关联规则,genrules(lk: frequent k-itemset, xm: frequent m-itemset) (1)X=(m-1)-itemsets
11、xm-1 | xm-1 in xm ; (2)FOR each xm-1 in X BEGIN (3) conf = support(lk)/support(xm-1); (4) IF (conf minconf) THEN BEGIN (5) print the rule “xm-1( lk-xm-1),with support = support(lk), confidence=conf”; (6) IF (m-1 1) THEN /generate rules with subsets of xm-1 as antecedents (7) genrules(lk, xm-1); (8)
12、END (9)END;,Rule-generate算法例子,Minconfidence=80%,序号 lk xm-1 confidence support 规则(是否是强规则) 1 235 23 100% 50% 235(是) 2 235 2 67% 50% 235(否) 3 235 3 67% 50% 325(否) 4 235 25 67% 50% 253(否) 5 235 5 67% 50% 523(否) 6 235 35 100% 50% 352(是),基本概念与解决方法 经典的频繁项目集生成算法分析 Apriori算法的性能瓶颈问题 Apriori的改进算法 对项目集格空间理论的发展
13、基于项目序列集操作的关联规则挖掘算法 改善关联规则挖掘质量问题 约束数据挖掘问题 关联规则挖掘中的一些更深入的问题 数量关联规则挖掘方法,第5章 关联规则挖掘理论和算法 内容提要,Apriori算法的性能瓶颈,Apriori作为经典的频繁项目集生成算法,在数据挖掘中具有里程碑的作用。 Apriori算法有两个致命的性能瓶颈: 1多次扫描事务数据库,需要很大的I/O负载对每次k循环,侯选集Ck中的每个元素都必须通过扫描数据库一次来验证其是否加入Lk。假如有一个频繁大项目集包含10个项的话,那么就至少需要扫描事务数据库10遍。 2可能产生庞大的侯选集由Lk-1产生k-侯选集Ck是指数增长的,例如1
14、04个1-频繁项目集就有可能产生接近107个元素的2-侯选集。如此大的侯选集对时间和主存空间都是一种挑战。,基本概念与解决方法 经典的频繁项目集生成算法分析 Apriori算法的性能瓶颈问题 Apriori的改进算法 对项目集格空间理论的发展 基于项目序列集操作的关联规则挖掘算法 改善关联规则挖掘质量问题 约束数据挖掘问题 关联规则挖掘中的一些更深入的问题 数量关联规则挖掘方法,第5章 关联规则挖掘理论和算法 内容提要,提高Apriori算法效率的技术,一些算法虽然仍然遵循Apriori 属性,但是由于引入了相关技术,在一定程度上改善了Apriori算法适应性和效率。 主要的改进方法有: 基于
15、数据分割(Partition)的方法:基本原理是“在一个划分中的支持度小于最小支持度的k-项集不可能是全局频繁的”。 基于散列(Hash)的方法:基本原理是“在一个hash桶内支持度小于最小支持度的k-项集不可能是全局频繁的”。 基于采样的方法:基本原理是“通过采样技术,评估被采样的子集中,并依次来估计k-项集的全局频度”。 其他:如,动态删除没有用的事务:“不包含任何Lk的事务对未来的扫描结果不会产生影响,因而可以删除”。,基于数据分割的方法,定理3-5 设数据集D被分割成分块D1, D2, , Dn,全局最小支持数为minsup_count。如果一个数据分块Di 的局部最小支持数minsu
16、p_counti (i=1,2,n),按着如下方法生成:minsup_counti= minsup_count *|Di| /|D| 则所有的局部频繁项目集涵盖全局频繁项目集。 作用: 1合理利用主存空间:数据分割将大数据集分成小的块,为块内数据一次性导入主存提供机会。 2支持并行挖掘算法:每个分块的局部频繁项目集是独立生成的,因此提供了开发并行数据挖掘算法的良好机制。,基于散列的方法,1995,Park等发现寻找频繁项目集的主要计算是在生成2-频繁项目集上。因此,Park等利用了这个性质引入杂凑技术来改进产生2-频繁项目集的方法。例子:桶地址 =(10x+y)mod 7; minsuppor
17、t_count=3,TID Items 1 I1,I2,I5 2 I2,I4 3 I2,I3 4 I1,I2,I4 5 I1,I3 6 I2,I3 7 I1,I3 8 I1,I2,I3,I5 9 I1,I2,I3,桶地址 0 1 2 3 4 5 6 桶计数 2 2 4 2 2 4 4 桶内 I1,I4 I1,I5 I2,I3 I2,I4 I2,I5 I1,I2 I1,I3I3,I5 I1,I5 I2,I3 I2,I4 I2,I5 I1,I2 I1,I3I2,I3 I1,I2 I1,I3I2,I3 I1,I2 I1,I3,L2=I2,I3 , I1,I2 , I1,I3,基本概念与解决方法 经典
18、的频繁项目集生成算法分析 Apriori算法的性能瓶颈问题 Apriori的改进算法 对项目集格空间理论的发展 基于项目序列集操作的关联规则挖掘算法 改善关联规则挖掘质量问题 约束数据挖掘问题 关联规则挖掘中的一些更深入的问题 数量关联规则挖掘方法,第5章 关联规则挖掘理论和算法 内容提要,探索新的理论,随着数据库容量的增大,重复访问数据库(外存)将导致性能低下。因此,探索新的理论和算法来减少数据库的扫描次数和侯选集空间占用,已经成为近年来关联规则挖掘研究的热点之一。 两个典型的方法: Close算法 FP-tree算法,Close算法对应的原理,一个频繁闭合项目集的所有闭合子集一定是频繁的;
19、一个非频繁闭合项目集的所有闭合超集一定是非频繁的。 什么是一个闭合的项目集? 一个项目集C是闭合的,当且仅当对于在C中的任何元素,不可能在C中存在小于或等于它的支持度的子集。 例如,C1=AB3,ABC2是闭合的; C2=AB2,ABC2不是闭合的;,Close算法的例子,下面是Close算法作用到表4-1数据集的执行过程(假如minsup_count=3):扫描数据库得到L1=(A,3), (B,5), (C,4), (D,3), (E,3);相应关闭项目集为 Cl (A)=ABC,3,Cl (B)=B,5,Cl (C)=BC,4,Cl (D)=BD,3,Cl(E)=BE,3 ; L2=(A
20、B,3), (AC,3), (BC,4), (BD,3), (BE,3);相应关闭集为C2 (AB)=ABC,3; L3,L4,L5不用测,于是频繁大项集为ABC 。,样本数据库 TID Itemset 1 A,B,C,D 2 B,C,E 3 A,B,C,E 4 B,D,E 5 A,B,C,D,FP-tree算法的基本原理,进行2次数据库扫描:一次对所有1-项目的频度排序;一次将数据库信息转变成紧缩内存结构。 不使用侯选集,直接压缩数据库成一个频繁模式树,通过频繁模式树可以直接得到频集。,FP-tree算法的基本原理,基本步骤是: 两次扫描数据库,生成频繁模式树FP-Tree: 扫描数据库一次
21、,得到所有1-项目的频度排序表T; 依照T,再扫描数据库,得到FP-Tree。 使用FP-Tree,生成频集: 为FP-tree中的每个节点生成条件模式库; 用条件模式库构造对应的条件FP-tree; 递归挖掘条件FP-trees同时增长其包含的频繁集: 如果条件FP-tree只包含一个路径,则直接生成所包含的频繁集。,生成频繁模式树FP-Tree,min_support = 0.5,TID Original Items (ordered) frequent items 100 f, a, c, d, g, i, m, p f, c, a, m, p 200 a, b, c, f, l, m,
22、 o f, c, a, b, m 300 b, f, h, j, o f, b 400 b, c, k, s, p c, b, p 500 a, f, c, e, l, p, m, n f, c, a, m, p,挖掘频集步骤1:生成条件模式库,为每个节点, 寻找它的所有前缀路径并记录其频度,形成CPB,CPB item cond. pattern base c f:3 a fc:3 b fca:1, f:1, c:1 m fca:2, fcab:1 p fcam:2, cb:1,挖掘频集步骤2:构造C-FP-tree,为每一个节点,通过FP-tree构造一个C-FP-tree 例如,m节点的
23、C-FP-tree为:,m-CPB: fca:2, fcab:1,挖掘频集步骤3:递归构造C-FP-tree,所有频集: m, fm, cm, am, fcm, fam, cam, fcam,单路径可以形成频集,基本概念与解决方法 经典的频繁项目集生成算法分析 Apriori算法的性能瓶颈问题 Apriori的改进算法 对项目集格空间理论的发展 基于项目序列集操作的关联规则挖掘算法 改善关联规则挖掘质量问题 约束数据挖掘问题 关联规则挖掘中的一些更深入的问题 数量关联规则挖掘方法,第5章 关联规则挖掘理论和算法 内容提要,项目序列集概念,“项目序列(Itemsequence)”来替代大多数文献
24、中出现的“项目集(Itemset)”可以简化挖掘的过程。 所谓项目序列是指项目集中的元素按着某种标准进行有序排列。例如,我们可以按项目名称的字典顺序排列,也可以象FP-Tree算法那样,按它们在数据库中出现次数的多少降序排列。 为了重复利用对数据库的扫描信息,把来自数据库的信息组织成项目序列集(Set of itemsequences)形式,并且对项目序列集格及其操作代数化。在这样的代数系统下研究适应关联规则挖掘问题的操作算子 .,项目序列集格,定义3-5 一个项目序列集格空间可以用三元组(I,S,p)来刻画,其中含义如下: 项目定义域I:I= i1,i2,im 为所有项目集; 项目序列集变量
25、集S:S中的每个项目序列集变量形式为ISS=IS1,IS2,ISn,其中ISi(i=1,2,n)是定义在I上项目序列; 操作p :关于S中的项目序列集变量的操作集。,项目序列集格,定义3-6(项目序列集间(上)的属于()、包含()、并()、交()、差()等操作和普通的集合操作相同。 例子: 设ISS1=AB,CD和ISS2=ABCD,AD是定义在I =A,B,C,D上的项目序列集,则ABISS1;ABISS2;ABISS1;ABISS2;ISS1ISS2=AB,CD,ABCD,AD;ISS1ISS2= 。,项目序列集格上的亚操作,定义3-7 设ISS1和ISS2是定义在I上的两个项目序列集,I
26、S是定义在I上的一个项目序列,定义如下操作: 亚属于(sub): ISsub ISS1当且仅当 IS1ISS1使得ISIS1; 亚包含(sub): ISS1subISS2当且仅当 IS1ISS1 IS1subISS2; 亚交(sub):ISS1subISS2=IS | ISsubISS1且ISsubISS2; 亚并(sub):ISS1subISS2=IS | ISsubISS1或ISsubISS2。 例如,对上面的例子,虽然AB ISS2中,但是AB sub ISS2。,基于项目序列集操作的关联规则挖掘算法,算法3-14 ISS-DM Algorithm 输入:数据库D 输出:最大频繁项目序列
27、集ISS* (1)Input(minsup_count); (2)ISS ; ISS* ; (3)FOR all ISD DO BEGIN /取D的一个项目序列IS (4) join(IS,ISS); (5) make_fre(IS,ISS,ISS*); (6)END (7)AnswerISS* join(IS,ISS)完成数据库中一个项目序列(元组)加入项目序列集后,它及它的子项目序列的频度维护。 make_fre(IS,ISS,ISS*)从ISS挑选频繁的并加入到ISS*。,ISS-DM例子,操作 IS ISS 频繁ISS* 说明 初始 1 ABCD (ABCD,1) 2 BCE (ABC
28、D,1),(BCE,1) BC 3 ABCE (ABCD,1),(BCE,1),(ABCE,1) ABC,BCE 裁*BC;BCE 4 BDE (ABCD,1),(ABCE,1),(BDE,1) ABC,BCE, BD 5 ABCD (ABCD,2),(ABCE,1),(BDE,1) ABCD,BCE 裁*ABC;BD;ABCD Answ (ABCE,1),(BDE,1) ABCD,BCE ,基本概念与解决方法 经典的频繁项目集生成算法分析 Apriori算法的性能瓶颈问题 Apriori的改进算法 对项目集格空间理论的发展 基于项目序列集操作的关联规则挖掘算法 改善关联规则挖掘质量问题 约束
29、数据挖掘问题 关联规则挖掘中的一些更深入的问题 数量关联规则挖掘方法,第5章 关联规则挖掘理论和算法 内容提要,衡量关联规则挖掘结果的有效性,应该从多种综合角度来考虑: 准确性:挖掘出的规则必须反映数据的实际情况。 实用性:挖掘出的规则必须是简洁可用的。 新颖性:挖掘出的关联规则可以为用户提供新的有价值信息。 改善关联规则挖掘质量是一件很困难的工作。必须采用事先预防、过程控制以及事后评估等多种方法,其中使用合适的机制(如约束),让用户主动参与挖掘工作是解决问题的关键。粗略地说,可以在用户主观和系统客观两个层面上考虑关联规则挖掘的质量问题。,用户主观层面,一个规则的有用与否最终取决于用户的感觉。
30、 用户可以在不同的层面、不同的阶段、使用不同的方法来主观设定约束条件。 从被约束的对象来看,有下面几种常用的方法: 知识类型的约束:针对应用问题选择有效的知识表达模式。例如,如果一个商业企业希望根据客户特点进行有针对性地销售,那么使用分类或聚类形式可以帮助用户形成客户群。,用户主观层面,数据的约束:对数据的约束可以起到减少数据挖掘算法所用的数据量、提高数据质量等作用。 维/层次约束:限制聚焦的维数或粒度层次,也可以针对不同的维设置约束条件。 知识内容的约束:可以通过限定要挖掘的知识的内容,如指定单价大于10的交易项目,减少探索的代价和加快知识的形成过程。 针对具体知识类型的约束:针对具体知识类
31、型的进行约束挖掘形式和实现机制的研究。,系统客观层面,使用“支持度-可信度” 的关联规则挖掘度量框架,在客观上也可能出现与事实不相符的结果。例如, “计算机游戏和录象产品是负相关的”问题。 重新考虑关联规则的客观度量问题。例如, Brin等考虑的蕴涵规则(Implication Rule); Chen等给出的R-兴趣(R-Interesting)规则度量方法等。 这些工作都期望通过引入新的度量机制和重新认识关联规则的系统客观性来改善挖掘质量。,基本概念与解决方法 经典的频繁项目集生成算法分析 Apriori算法的性能瓶颈问题 Apriori的改进算法 对项目集格空间理论的发展 基于项目序列集操
32、作的关联规则挖掘算法 改善关联规则挖掘质量问题 约束数据挖掘问题 关联规则挖掘中的一些更深入的问题 数量关联规则挖掘方法,第5章 关联规则挖掘理论和算法 内容提要,约束在数据挖掘中的作用,聚焦挖掘任务,提高挖掘效率:利用约束,可以把具体的挖掘任务转换成对系统工作的控制,从而使挖掘工作按着我们期望的方向发展。约束的使用可以在知识发现的任何阶段进行,快速聚焦挖掘任务,进而提高挖掘效率。 保证挖掘的精确性:挖掘结果的精确性,不仅体现在它的可信程度,而且取决于它的有用性。约束的使用可以帮助我们发现问题,并及时加以调整,使知识发现的各个阶段按着正确的方向发展。,约束在数据挖掘中的作用,控制系统的使用规模
33、:数据挖掘和知识发现应用最常犯的错误就是无限制的扩大规模。约束数据挖掘的思想为系统的增量式扩充提供条件。当基本的原则和目标确定后,可以把一些有待验证和优化的问题以约束参数的形式交互式输入,通过实验找到最佳值。,约束的类型,一些常用的名词和符号: 定义3-12 设项目集I=i1,i2,im,事务数据库T=,模式S和S*都是项目集I的子集,如果S*S,则称S*是S的子模式(Subpattern);S是S*的超模式(Superpattern)。 定义3-13 一个约束C是作用于项目集I的幂集(Powerset)上的谓词。约束C对于一个模式S的结果用布尔变量来表示,即C(S)=True/False:C
34、(S)=True表示S满足约束条件;C(S)=False表示S不满足约束条件。 定义3-14 对于被讨论的项目集I,满意模式集(Satisfying Pattern Set),记为SATc(I)是指那些完全满足约束C的项目集的全体。,约束的类型,将约束条件用于频繁集的查询无非是找出那些满足C的频繁集。 约束的常见类型有: 单调性约束(Monotone Constraint); 反单调性约束(Anti-monotone Constraint); 可转变的约束(Convertibale Constraint); 简洁性约束(Succinct Constraint)。,单调性约束,定义3-15 所谓
35、一个约束Cm是单调性的约束是指满足Cm的任何项目集S的超集也能满足 Cm。 例如,“sum(price)100”的约束是一个单调性约束。因为一个项目集满足这个条件,那么它的超集也一定满足这个条件。现实世界中有许多条件满足这样的性质,如“属于”、“包含”等。,反单调性约束,定义3-16 约束Ca是反单调的是指对于任意给定的不满足Ca的项目集S,不存在S的超集能够满足Ca。 例如,“sum(price)100”是反单调的,因为一个人买了大于或等于100元以上的东西,再加上新的物品只能使总和增大,也不可能满足这个条件。 这样的约束可以用来裁减不必要的探索,提高挖掘效率。,可转变的约束,定义3-17
36、如果一个约束C满足下面的条件,那么称它是反单调可转变的: C(S)既不是单调性约束,也不是反单调性约束; 若存在顺序R,使得经R排序后的I具有如下满足:任给S*suffix_S,有C(S)=C(S*)。 例如,对于Avg(S) v,令I为一组以升序排列数值的项目集。如果 S满足约束,那么S的后缀S*也满足 avg(S*)v。,可转变的约束,定义3-18 如果一个约束C满足下面的条件,那么称它是单调可转变的: C(S)既不是单调性约束,也不是反单调性约束; 若存在顺序R,使得经R排序后的I满足:任给 S*suffix_S,有C(S*)=C(S)。 例如,对于Avg(S) v,令I为一组以降序排列
37、数值的项目集。如果S的后缀S*满足约束avg(S*) v,那么S也满足 avg(S)v。,简洁性约束,定义3-19 一个项目子集Is 是一个简洁集(Succinct Set),如果对于某些选择性谓词p,该项目子集能够表示为p(I)的形式,其中是选择符。 如果一个约束是简洁的,那么我们就可以直接使用SQL查询来得到满足条件的集合。在挖掘的不同阶段可以尽量尝试简洁性的约束,这样可以避免不必要的测试。,简洁性约束,定义3-20 SP2I 是一个强简洁集(Succinct Power Set),如果有一个数目不变的简洁集I1,I2,IkI,SP 能够用I1,I2,Ik的并、差运算表示出来。 定义3-2
38、1 约束Cs是简洁的,假如 SATCs(I)是一个强简洁集。,约束之间的关系,基本概念与解决方法 经典的频繁项目集生成算法分析 Apriori算法的性能瓶颈问题 Apriori的改进算法 对项目集格空间理论的发展 基于项目序列集操作的关联规则挖掘算法 改善关联规则挖掘质量问题 约束数据挖掘问题 关联规则挖掘中的一些更深入的问题 数量关联规则挖掘方法,第5章 关联规则挖掘理论和算法,多层次关联规则挖掘,根据规则中涉及到的层次,多层次关联规则可以分为: 同层关联规则:如果一个关联规则对应的项目是同一个粒度层次,那么它是同层关联规则。 层间关联规则:如果在不同的粒度层次上考虑问题,那么可能得到的是层
39、间关联规则。 多层次关联规则挖掘的度量方法可以沿用 “支持度-可信度”的框架。不过,多层次关联规则挖掘有两种基本的设置支持度的策略:,多层次关联规则挖掘,统一的最小支持度:算法实现容易,而且很容易支持层间的关联规则生成。但是弊端也是显然的: 不同层次可能考虑问题的精度不同、面向的用户群不同。 对于一些用户,可能觉得支持度太小,产生了过多不感兴趣的规则。而对于另外的用户来说,又认为支持度太大,有用信息丢失过多。 不同层次使用不同的最小支持度:每个层次都有自己的最小支持度。较低层次的最小支持度相对较小,而较高层次的最小支持度相对较大。这种方法增加了挖掘的灵活性。但是,也留下了许多相关问题需要解决:
40、 首先,不同层次间的支持度应该有所关联,只有正确地刻画这种联系或找到转换方法,才能使生成的关联规则相对客观。 其次,由于具有不同的支持度,层间的关联规则挖掘也是必须解决的问题。例如,有人提出层间关联规则应该根据较低层次的最小支持度来定。,多维关联规则挖掘,多维关联规则可以有: 维内的关联规则:例如,“年龄(X,2030)职业(X,学生)=购买(X,笔记本电脑)”。这里我们就涉及到三个维:年龄、职业、购买。 混合维关联规则:这类规则允许同一个维重复出现。例如,“年龄(X,2030)购买(X,笔记本电脑) = 购买(X,打印机)”。由于同一个维“购买”在规则中重复出现,因此为挖掘带来难度。但是,这
41、类规则更具有普遍性,具有更好的应用价值,因此近年来得到普遍关注。,数量关联数规则的分类,根据数值属性的处理方式,主要技术有: 数值属性的静态离散化:数值属性使用预定义的概念分层,在挖掘之前进行离散化,数值属性的值用相应的区间来替代。例如,income的概念分层可以用于用区间值“020K”,“2130K”,“3140K”来替换属性原来的数值。 数值属性的动态离散化:动态离散化过程需要考虑数据的关联和程度,使用相应的度量手段,如数据点之间的距离,来跟踪数据的语意。 基于特定的技术进行离散化:常用的方法是根据数据的分布,将数值属性离散化到“箱(Bin)”。由于这些箱可能在挖掘过程中进一步组合,因此有
42、动态的特征。离散化的动态体现在分区合并等过程中。三种常用的分箱策略是等宽分箱、等深分箱和基于同质的分箱。,数量关联数规则的分类,根据使用的规则模板,主要技术有: 复杂的挖掘模板形式:类似于“数值属性分类属性数值属性分类属性”这样的规则。例如,sex=femaleage20,30 =wages$5,$10。这类规则较为复杂,是一般性的数量关联规则。 分类规则的挖掘模板:简单的挖掘模板形式类似于“数值属性分类属性分类属性”这样的规则。例如,smoke=Yesage60,80 =heart-desease=Yes。此类规则的左端通常表示的是数据库的的几个连续或分类属性,右端则是一个预定义的类。这样的
43、模板很适合用于分类规则的挖掘。 其他挖掘模板:例如,挖掘模板形式类似于“分类属性数值属性分类属性”这样的规则。这和第二类规则形式恰好相反,但对有些问题,这类规则非常有意义。,数量关联规则挖掘的一般步骤,以Boolean关联规则算法及其理论为基础,是解决数量关联规则的挖掘问题的最有效途径之一。较典型的数量关联规则挖掘的主要步骤有: 1对每个数值属性进行离散化:选取或设计合适的离散化算法,对数据库中的所有数值属性进行离散化。 2离散区间整数化:对分类属性或数值属性的离散区间,将其值映射成连续的整数标识。这样做的目的是使数据归整以利于挖掘。 3在离散化的数据集上生成频繁项目集:此步和前面介绍的生成频
44、繁项目集的步骤类似。 4产生关联规则:和前面介绍的方法类似。 5确定感兴趣的 (Interesting)关联规则作为输出,数值属性离散化问题,数值属性离散化是关键问题,处理不当会带来如下问题: 过小置信度问题:若区间的数目过少,则支持区间的元组数目增加,包含区间的强项目集的支持度上升,但在强项目集的子集支持度不变的情况下,将导致右端包含该子集的规则置信度下降,若不能达到置信度阈值,就会造成信息丢失。 过小支持度问题:划分的区间数目过多,则区间的支持度下降,不能有效的生成期望的频繁项目集。,数值属性离散化问题,离散化可能会把本来很紧密的数据分割开来,结果就会生成大量没有意义的无用规则。 离散化会
45、带来区间的组合爆炸。假设某数值属性划分成n个基区间,由于相邻的两个连续属性又可以合并生成更大的区间,这样反反复复的合并,最终的区间数目就有O(nn)个。所以具体离散化过程中必须有一种停机条件,当区间合并到一定程度能够自动停下来。离散区间的组合爆炸带来的直接后果是算法效率低下,而且生成成千上万条规则,用户很难从中找到有趣的规则。,主要的离散化方法,现有的离散化方法主要有两种策略: 归并方法:开始将属性的每个取值都当作是一个离散的值,然后逐个反复合并相邻的属性值,直到满足某种条件结束合并。 划分方法:将属性的整个取值区间作为一个离散属性,然后对该区间反复划分成更小的区间,直到满足某种条件结束划分。
46、 较好的离散化方法通常是这两种策略的结合,是动态划分归并的过程。,主要的离散化方法,目前最典型的数值属性离散化方法主要有: 等宽度划分 等深度划分 基于距离的划分,等宽度划分的方法,等宽度划分的方法是最简单的离散化方法,一般适用分布比较均匀的数据。算法只要一次扫描数据库,因此算法效率较高。等宽度划分的方法单纯从数学角度对数值属性进行划分,不考虑数据分布的特点。由于该方法比较直观,比较适合数值属性的前期处理,因此通常和聚类等方法结合,才能取得好的离散化效果。,算法3-17 等宽度划分算法描述 输入:数值属性A,区间数n。 输出:离散后的区间。 (1)扫描数据库,得到A的最大值max(A)和最小值
47、min(A); (2)求区间的宽度w,w=(max(A)-min(A)/n; (3)形成离散后的区间l1,v1,l2,v2,ln,vn输出,其中li= min(A)+(i-1)*w,vi= li+w。,等深度划分方法,定义3-31 若A的取值区间在Xl,Ym。可以将A的取值区间分割为一系列不相交的域Bi=Xi,Yi,其中i=1, 2,m且XiYiXi+1,称Bi为A的一个桶(Bucket),并称Bi中元组个数为桶的大小,记为Ui。若两个桶的大小相等,则称它们为等深桶。等深度划分一般适用于属性之间关联度比较低的数据集。等深度划分的方法趋向于把具有共性的、支持度很高的相邻值划分到不同的区间去。当数据分布在某个点附近达到峰值时,等深度划分这种机械的方法并不能反映出数据本身的特点,因此对高偏度的数据效果不理想。,算法3-18 等深度划分描述 输入:数值属性A,区间数(桶数)n。 输出:离散后的区间。 (1)数值属性A从小到大或从大到小排序; (2)扫描数据库,统计数据库的记录数N; (3)求桶的深度:h=N/n; (4)逐个扫描排序后的A值,形成离散后的区间li,vi(i=1,2,n),每个区间包含h个值。,基于距离的划分的方法,