数据挖掘
2011年5月12日星期四
2
事务数据库
设I={ i1,i2,…,im }是一个项目集合,事务数据 库D={ t1,t2,…,tn }是由一系列具有唯一标识 TID的事务组成,每个事务ti(i=1,2,…,n)都 对应I上的一个子集。 一个事务数据库可以用来刻画:
购物记录: I是全部物品集合, D是购物清单,每个元 组t 是一次购买物品的集合(它当然是I的一个子集)。 组 i是一次购买物品的集合(它当然是 的一个子集)。 其它应用问题
2011年5月12日星期四
4
可信度与关联规则
定义(关联规则与可信度) 定义(关联规则与可信度).给定一个全局项目集I 和数据库D,一个定义在I和D上的关联规则形如 I1⇒I2,并且它的可信度或信任度或置信度 (Confidence)是指包含I1和I2的事务数与包含I1的 事务数之比,即 Confidence(I1⇒I2)= support(I1∪I2)/ support(I1), 其中I1,I2⊆I,I1∩I2=Ф。 定义(强关联规则) 定义(强关联规则). D在I上满足最小支持度和最 小信任度(Minconfidence)的关联规则称为强关 联规则(Strong Association Rule)。
L3={abc, abd, acd, ace, bcd} Self-joining: L3*L3 abcd from abc and abd acde from acd and ace
Pruning: acde is removed because ade is not in L3 C4={abcd}
序号 1 2 3 4 5 6
ห้องสมุดไป่ตู้
lk 235 235 235 235 235 235
xm-1 23 2 3 25 5 35
confidence 100% 67% 67% 67% 67% 100%
2011年5月12日星期四
17
第三章 关联规则挖掘理论和算法
内容提要
基本概念与解决方法 经典的频繁项目集生成算法分析 Apriori算法的性能瓶颈问题 Apriori的改进算法 对项目集格空间理论的发展 基于项目序列集操作的关联规则挖掘算法 改善关联规则挖掘质量问题 约束数据挖掘问题 关联规则挖掘中的一些更深入的问题 数量关联规则挖掘方法
2011年5月12日星期四
12
Apriori算法例子
Minsupport=50%
Database D
TID 100 200 300 400 Items 134 235 1235 25
itemset sup. 2 C1 {1} {2} 3 Scan D {3} 3 {4} 1 {5} 3
L1
itemset sup. {1} 2 {2} 3 {3} 3 {5} 3
2011年5月12日星期四
1
关联规则挖掘是数据挖掘研究的基础
关联规则挖掘(Association Rule Mining)是数据挖掘中研究较早而且 至今仍活跃的研究方法之一。 最早是由Agrawal等人提出的(1993)。最初是针对购物篮分析 (Basket Analysis)问题提出的,其目的是为了发现交易数据库 (Transaction Database)中不同商品之间的联系规则。 关联规则的挖掘工作成果颇丰。例如,关联规则的挖掘理论、算法设 计、算法的性能以及应用推广、并行关联规则挖掘(Parallel Association Rule Mining)以及数量关联规则挖掘(Quantitive Association Rule Mining)等。
第三章 关联规则挖掘理论和算法
内容提要 基本概念与解决方法 经典的频繁项目集生成算法分析 Apriori算法的性能瓶颈问题 Apriori的改进算法 对项目集空间理论的发展 基于项目集操作的关联规则挖掘算法 改善关联规则挖掘质量问题 约束数据挖掘问题 关联规则挖掘中的一些更深入的问题 数量关联规则挖掘方法
14
关联规则的生成问题
根据上面介绍的关联规则挖掘的两个步骤,在得 到了所有频繁项目集后,可以按照下面的步骤生 成关联规则:
对于每一个频繁项目集l,生成其所有的非空子集; 对于l 的每一个非空子集x,计算Conference(x),如 果Confidence(x)≥minconfidence,那么“x (lx)”成立。
2011年5月12日星期四
10
apriori-gen过程
算法apriori中调用了apriori-gen(Lk-1),是为了 通过(k-1)-频集产生K-侯选集。
(1) FOR all itemset p∈ Lk-1 DO (2) FOR all itemset q∈Lk-1 DO (3) IF p.item1=q.item1, …, p.itemk-2=q.itemk-2, p.itemk-1 < q.itemk-1 THEN BEGIN (4) c= p∞q;//把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;
输入:数据集D;最小支持数 输出:频繁项目集L。
2011年5月12日星期四
9
经典的发现频繁项目集算法
Ck: Candidate itemset of size k Lk : frequent itemset of size k L1 = {frequent items}; //所有1-项目频集 for (k =2; Lk !=∅; k++) do begin Ck= apriori-gen(Lk-1) apriori-gen( // candidates generated from Lk-1; for each transaction t in database do increment the count of all candidates in Ck that are contained in t Lk = candidates in Ck with min_support end L=∪ Lk; return L
第1个子问题是近年来关联规则挖掘算法研究的重 点。
2011年5月12日星期四
6
第三章 关联规则挖掘理论和算法
内容提要
基本概念与解决方法 经典的频繁项目集生成算法分析 Apriori算法的性能瓶颈问题 Apriori的改进算法 对项目集格空间理论的发展 基于项目序列集操作的关联规则挖掘算法 改善关联规则挖掘质量问题 约束数据挖掘问题 关联规则挖掘中的一些更深入的问题 数量关联规则挖掘方法
2011年5月12日星期四
15
算法算法-递归测试一个频集中的关联规则
genrules(lk: frequent k-itemset, xm: frequent m-itemset) (1)X={(m-1)-itemsets 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) END (9)END;
2011年5月12日星期四
16
Rule-generate算法例子
Minconfidence=80%
TID 100 200 300 400 Items 134 235 1235 25
support 50% 50% 50% 50% 50% 50% 规则(是否是强规则) 23 5(是) 2 35(否) 3 25(否) 25 3(否) 5 23(否) 35 2(是)
C3 itemset
{2 3 5}
2011年5月12日星期四
Scan D
L3 itemset sup {2 3 5} 2
13
Apriori算法例子
Minsupport=40% Tid 1 2 3 4 5 Itemset A,B,C,D B,C,E A,B,C,E B,D,E A,S,C,D
2011年5月12日星期四
定理( Appriori 属性2).如果项目集X 是非频繁项目集, 定理( ) 那么它的所有超集都是非频繁项目集。
证明 (略)
2011年5月12日星期四
8
经典的发现频繁项目集算法
1994年,Agrawal 等人提出了著名的Apriori 算 法。 算法3 算法3-1 Apriori(发现频繁项目集)
C2 L2 itemset sup
{1 3} {2 3} {2 5} {3 5} 2 2 3 2
itemset sup {1 2} 1 {1 3} 2 {1 5} 1 {2 3} 2 {2 5} 3 {3 5} 2
C2 itemset {1 2} Scan D
{1 {1 {2 {2 {3 3} 5} 3} 5} 5}
has_infrequent_subset(c, Lk-1),判断c是否加入
到k-侯选集中。
2011年5月12日星期四
11
apriori-gen过程
算法apriori中调用了apriori-gen(Lk-1),是为了 通过(k-1)-频集产生K-侯选集。 Example of Candidate-generation