1 / 140

知识发现(数据挖掘 ) 第六章

知识发现(数据挖掘 ) 第六章. 史忠植 中国科学院计算技术研究所. 关联规则 Association Rules. 内容提要. 引言 Apriori 算法 Frequent-pattern tree 和 FP-growth 算法 多维关联规则挖掘 相关规则 关联规则改进 总结. 关联规则. 关联规则反映一个事物与其他事物之间的相互依存性和关联性。如果两个或者多个事物之间存在一定的关联关系,那么,其中一个事物就能够通过其他事物预测到。 关联规则表示了项之间的关系。 示例 : cereal, milk  fruit

judd
Download Presentation

知识发现(数据挖掘 ) 第六章

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 知识发现(数据挖掘)第六章 史忠植 中国科学院计算技术研究所 关联规则 Association Rules AA12 关联规则 史忠植

  2. 内容提要 • 引言 • Apriori 算法 • Frequent-pattern tree 和FP-growth 算法 • 多维关联规则挖掘 • 相关规则 • 关联规则改进 • 总结 AA12 关联规则 史忠植

  3. 关联规则 • 关联规则反映一个事物与其他事物之间的相互依存性和关联性。如果两个或者多个事物之间存在一定的关联关系,那么,其中一个事物就能够通过其他事物预测到。关联规则表示了项之间的关系。 • 示例: cereal, milk  fruit “买谷类食品和牛奶的人也会买水果.” 商店可以把牛奶和谷类食品作特价品以使人们买更多的水果. AA12 关联规则 史忠植

  4. 市场购物篮分析 • 分析事务数据库表 • 我们是否可假定? • Chips => Salsa Lettuce => Spinach AA12 关联规则 史忠植

  5. 基本概念 • 通常, 数据包含: 项的子集 事务 ID AA12 关联规则 史忠植

  6. 关联规则挖掘 • 在事务数据库,关系数据库和其它信息库中的项或对象的集合之间,发现频繁模式,关联,相关,或因果关系的结构. • 频繁模式: 数据库中出现频繁的模式(项集,序列,等等) AA12 关联规则 史忠植

  7. 基本概念 • 项集 • 事务 • 关联规则 • - 事务数据集 (例如右图) • 事务标识 TID 每一个事务关联着一个标识,称作TID. AA12 关联规则 史忠植

  8. 关联规则的度量 • 支持度s • D中包含A和 B 的事务数与总的事务数的比值 规则 AB 在数据集D中的支持度为s, 其中s表示D中包含AB(即同时包含A和B)的事务的百分率. AA12 关联规则 史忠植

  9. 关联规则的度量 • 可信度 c • D中同时包含A和B的事务数与只包含A的事务数的比值 规则 AB 在数据集D中的可信度为c,其中c表示D中包含A的事务中也包含B的百分率.即可用条件概率P(B|A)表示. confidence(A B )=P(B|A) 条件概率 P(B|A) 表示A发生的条件下B也发生的概率. AA12 关联规则 史忠植

  10. 关联规则的度量 • 关联规则根据以下两个标准(包含或排除): • 最小支持度–表示规则中的所有项在事务中出现的频度 • 最小可信度- 表示规则中左边的项(集)的出现暗示着右边的项(集)出现的频度 AA12 关联规则 史忠植

  11. 市场购物篮分析 I是什么? 事务ID B的T是什么? s(Chips=>Salsa) 是什么? c(Chips=>Salsa)是什么? AA12 关联规则 史忠植

  12. 频繁项集 • 项集 –任意项的集合 • k-项集–包含k个项的项集 • 频繁 (或大)项集–满足最小支持度的项集 • 若I包含m个项,那么可以产生多少个项集? AA12 关联规则 史忠植

  13. 强关联规则 • 给定一个项集,容易生成关联规则. • 项集: {Chips, Salsa, Beer} • Beer, Chips => Salsa • Beer, Salsa => Chips • Chips, Salsa => Beer • 强规则是有趣的 • 强规则通常定义为那些满足最小支持度和最小可信度的规则. AA12 关联规则 史忠植

  14. 关联规则挖掘 • 两个基本步骤 • 找出所有的频繁项集 • 满足最小支持度 • 找出所有的强关联规则 • 由频繁项集生成关联规则 • 保留满足最小可信度的规则 AA12 关联规则 史忠植

  15. 内容提要 • 引言 • Apriori 算法 • Frequent-pattern tree 和FP-growth 算法 • 多维关联规则挖掘 • 相关规则 • 关联规则改进 • 总结 AA12 关联规则 史忠植

  16. Apriori算法 • IBM公司Almaden研究中心的R.Agrawal 等人在1993年提出的AIS和SETM。 • 在1994年提出Apriori和AprioriTid。Apriori和AprioriTid算法利用前次过程中的数据项目集来生成新的候选数据项目集,减少了中间不必要的数据项目集的生成,提高了效率 AA12 关联规则 史忠植

  17. 生成频繁项集 • Naïve algorithm n <- |D| for each subset s of I do l <- 0 for each transaction T in D do if s is a subset of T then l <- l + 1 if minimum support <= l/n then add s to frequent subsets AA12 关联规则 史忠植

  18. 生成频繁项集 • naïve algorithm的分析 • I 的子集: O(2m) • 为每一个子集扫描n个事务 • 测试s为T的子集: O(2mn) • 随着项的个数呈指数级增长! • 我们能否做的更好? AA12 关联规则 史忠植

  19. Apriori 性质 • 定理(Apriori 性质):若A是一个频繁项集,则A的每一个子集都是一个频繁项集. • 证明:设n为事务数.假设A是l个事务的子集,若 A’ A,则A’为l’ (l’  l )个事务的子集.因此, l/n ≥s(最小支持度), l’/n ≥s也成立. AA12 关联规则 史忠植

  20. Apriori 算法 • Apriori算法是一种经典的生成布尔型关联规则的频繁项集挖掘算法.算法名字是缘于算法使用了频繁项集的性质这一先验知识. • 思想: Apriori 使用了一种称作level-wise搜索的迭代方法,其中k-项集被用作寻找(k+1)-项集. 首先,找出频繁1-项集,以L1表示.L1用来寻找L2,即频繁2-项集的集合.L2用来寻找L3,以此类推,直至没有新的频繁k-项集被发现.每个Lk都要求对数据库作一次完全扫描.. AA12 关联规则 史忠植

  21. 生成频繁项集 • 中心思想: 由频繁(k-1)-项集构建候选k-项集 • 方法 • 找到所有的频繁1-项集 • 扩展频繁(k-1)-项集得到候选k-项集 • 剪除不满足最小支持度的候选项集 AA12 关联规则 史忠植

  22. Apriori: 一种候选项集生成-测试方法 • Apriori 剪枝原理: 若任一项集是不频繁的,则其超集不应该被生成/测试! • 方法: • 由频繁k-项集生成候选(k+1)-项集,并且 • 在DB中测试候选项集 • 性能研究显示了Apriori算法是有效的和可伸缩(scalablility)的. AA12 关联规则 史忠植

  23. The Apriori 算法—一个示例 Database TDB L1 C1 1st scan C2 C2 L2 2nd scan L3 C3 3rd scan AA12 关联规则 史忠植

  24. Apriori 算法 Algorithm: Apriori 输入: Database, D, of transactions; minimum support threshold,min_sup. 输出: L, freuqent itemsets in D. 过程: Ck: Candidate itemset of size k Lk : frequent itemset of size k L1 = find_frequent_1_itemsets(D); for (k = 2; Lk+1 !=; k++) do begin{ Ck = apriori_gen(Lk-1 ,min_sup); for each transaction t in database D do{//scan D for counts Ct =subset(Ck ,t);// get the subsets of t that are candidates For each candidate c Ct c.count++; } Lk = candidates in Ck with min_support }end return L=kLk; AA12 关联规则 史忠植

  25. Apriori 算法 Procedure apriori_gen(Lk-1: frequent (k-1)-itemsets; min_sup:minimum support threshold ) for each itemset l1 Lk-1 for each itemset l2Lk-1 if(l1[1]=l2[1]) (l1[2]=l2[2])  …(l1[k-1]=l2[k-1]) Then{ c=join(l1,l2)//join step: generate candidates if has_infrequent_subset(c, Lk-1 ) then delete c;//prune step: remove unfruitful candidate else add c to Ck } returnCk AA12 关联规则 史忠植

  26. Apriori 算法 Join is generate candidates set of itemsets Ck from 2 itemsets in Lk-1 Procedure join(p,q) insert into Ck select p.item1, p.item2,..., p.itemk-1, q.itemk-1 from Lk-1 p, Lk-1 q where p.item1=q.item1, ..., p.itemk-2=q.itemk-2, p.itemk-1 = q.itemk-1 AA12 关联规则 史忠植

  27. Apriori 算法 Procedure has_infrequent_subset(c:candidate k-itemset;Lk-1: frequent (k-1)-itemsets;)//use prior knowledge for each (k-1)-subset s of c if sLk-1 then return TRUE; return FALSE. AA12 关联规则 史忠植

  28. Apriori 算法 • 如何生成候选项集? • 步骤 1: 自连接 Lk • 步骤 2: 剪枝 • 如何计算候选项集的支持度? • 候选项庥生成的示例 • L3={ abc, abd, acd, ace, bcd } • 自连接: L3*L3 • 由abc和abd连接得到abcd • 由acd和ace连接得到acde • 剪枝: • 因为ade 不在L3中acde 被剪除 • C4={abcd} AA12 关联规则 史忠植

  29. 如何生成候选项集? • 假定Lk-1中的项以一定顺序排列 • 步骤 1: 自连接 Lk-1 insert intoCk select p.item1, p.item2, …, p.itemk-1, q.itemk-1 from Lk-1 p, Lk-1 q where p.item1=q.item1, …, p.itemk-2=q.itemk-2, p.itemk-1 < q.itemk-1 • 步骤 2: 剪枝 forall itemsets c in Ckdo forall (k-1)-subsets s of c do if (s is not in Lk-1) then delete c from Ck AA12 关联规则 史忠植

  30. 如何计算候选项集的支持度? • 为何候选项集的支持度的计算是一个问题? • 候选项集的总数可能是巨大的 • 一个事务可能包含多个候选项集 • 方法: • 候选项集被存储在一个哈希树 • 哈希树的叶子结点包含一个项集和计数的列表 • 内部结点 包含一个哈希表 • 子集函数:找出包含在一个事务中的所有候选项集 AA12 关联规则 史忠植

  31. 频繁模式挖掘的挑战 • 挑战 • 多次扫描事务数据库 • 巨大数量的候选项集 • 繁重的计算候选项集的支持度工作 • 改进 Apriori: 大体的思路 • 减少事务数据库的扫描次数 • 缩减候选项集的数量 • 使候选项集的支持度计算更加方便 AA12 关联规则 史忠植

  32. AprioriTid算法 • AprioriTid算法由Apriori算法改进 • 优点:只和数据库做一次交互,无须频繁访问数据库 • 将Apirori中的Ck扩展,内容由{c}变为{TID,c},TID用于唯一标识事务 • 引入Bk ,使得Bk对于事务的项目组织集合,而不是被动的等待Ck来匹配 AA12 关联规则 史忠植

  33. AprioriTid算法 • 举例:minsupp = 2 • 数据库: AA12 关联规则 史忠植

  34. AprioriTid算法示例 AA12 关联规则 史忠植

  35. ApioriTid算法示例 AA12 关联规则 史忠植

  36. ApioriTid算法示例 AA12 关联规则 史忠植

  37. ApioriTid算法 • 上面图中分别为Bk和Lk ,而Ck和Apriori算法产生的一样,因此没有写出来 • 可以看到Bk由Bk-1得到,无须由数据库取数据 • 缺点:内存要求很大,事务过多的时候资源难以满足 AA12 关联规则 史忠植

  38. 内容提要 • 引言 • Apriori 算法 • Frequent-pattern tree 和FP-growth 算法 • 多维关联规则挖掘 • 相关规则 • 关联规则改进 • 总结 AA12 关联规则 史忠植

  39. 频繁模式挖掘的瓶颈 • 多次扫描数据库是高代价的 • 长模式的挖掘需要多次扫描数据库以及生成许多的候选项集 • 找出频繁项集 i1i2…i100 • 扫描次数: 100 • 候选项集的数量: (1001) + (1002) + … + (110000) = 2100-1 = 1.27*1030 ! • 瓶颈:候选项集-生成-测试 • 我们能否避免生成候选项集? AA12 关联规则 史忠植

  40. 不生成候选项集的频繁模式挖掘 • 利用局部频繁的项由短模式增长为长模式 • “abc”是一个频繁模式 • 得到所有包含 “abc”的事务: DB|abc • “d”是 DB|abc 的一个局部频繁的项  abcd 是一个频繁模式 AA12 关联规则 史忠植

  41. FP Growth算法 (Han, Pei, Yin 2000) • Apriori算法的一个有问题的方面是其候选项集的生成 • 指数级增长的来源 • 另一种方法是使用分而治之的策略(divide and conquer) • 思想:将数据库的信息压缩成一个描述频繁项相关信息的频繁模式树 AA12 关联规则 史忠植

  42. 利用FP-树进行频繁模式挖掘 • 思想: 频繁模式增长 • 递归地增长频繁模式借助模式和数据库划分 • 方法 • 对每个频繁项,构建它的条件模式基,然后构建它的条件FP-树. • 对每个新创建的条件FP-树重复上述过程 • 直至结果FP-树为空,或者它仅包含一个单一路径.该路径将生成其所有的子路径的组合,每个组合都是一个频繁模式. AA12 关联规则 史忠植

  43. 频繁 1-项集 事务数据库支持度计数频繁1-项集 • 最小支持度为20% (计数为 2) AA12 关联规则 史忠植

  44. FP-树 构建 按支持度降序排列 AA12 关联规则 史忠植

  45. 创建根结点 null I2 1 I1 1 (I2,1) I3 0 I4 0 (I1,1) I5 1 • 维护索引表 (I5,1) FP-树 构建 • 扫描数据库 • 事务1: I1, I2, I5 • 排序: I2, I1, I5 • 处理事务 • 以项的顺序增加结点 • 标注项及其计数 AA12 关联规则 史忠植

  46. I2 2 I1 0 I3 0 I4 1 (I1,1) I5 0 (I5,1) FP-树 构建 null (I2,2) (I4,1) AA12 关联规则 史忠植

  47. I2 7 I1 6 I3 6 I4 2 (I1,4) I5 2 (I5,1) FP-树 构建 null (I1,2) (I2,7) (I3,2) (I3,2) (I4,1) (I4,1) (I3,2) (I5,1) AA12 关联规则 史忠植

  48. FP-树 构建 • 扫描事务数据库D一次,得到频繁项的集合F及它们的支持度.将F按支持度降序排列成L,L是频繁项的列表. • 创建FP-树的根, 标注其为NULL.对D中的每个事务进行以下操作: • 根据 L中的次序对事务中的频繁项进行选择和排序. 设事务中的已排序的频繁项列表为[p|P],其中p表示第一个元素,P表示剩余的列表.调用insert_Tree([p|P],T). AA12 关联规则 史忠植

  49. FP-树 构建 • Insert_Tree([p|P],T) If T has a child N such that N.item-name= p.item-name, then increment N’s count by 1; elsecreate a new node N, and let its count be 1, its parent link be linked to T, and its node- link to the nodes with the same item-name via the node-link structure. If P is nonempty, call insert_tree(P,N) recursively. AA12 关联规则 史忠植

  50. 挖掘 FP-tree • 从索引表中的最后一个项开始 • 找到所有包含该项的路径 • 沿着结点-链接(node-links) • 确定条件模式 • 路径中符合频度要求的模式 • 构建 FP-tree C • 添加项至C中所有路径,生成频繁模式 • 递归地挖掘C (添加项) • 从索引表和树中移除项 AA12 关联规则 史忠植

More Related