数据挖掘原理与算法03关联规则挖掘

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
关联规则挖掘是数据挖掘的其他研究分支的基础。
2020/4/28
2
3.1 基本概念与解决方法
事务数据库
设I={ i1,i2,…,im }是一个项目集合,事务数据库 D={ t1,t2,…,tn }是由一系列具有唯一标识TID的事 务组成,每个事务ti(i=1,2,…,n)都对应I上的一 个子集。
第三章 关联规则挖掘理论和算法
内容提要
基本概念与解决方法 经典的频繁项目集生成算法分析 Apriori算法的性能瓶颈问题 Apriori的改进算法
2020/4/28
1
3.1 基本概念与解决方法
关联规则挖掘(Association Rule Mining)是数据挖掘中研究较早而 且至今仍活跃的研究方法之一。
定义3-2(频繁项目集).给定全局项目集I和数据库D ,D 中所有满足用户指定的最小支持度(Minsupport)的项目 集,即大于或等于minsupport的I的非空子集,称为频繁项 目集(频集:Frequent Itemsets)或者大项目集(Large Iitemsets)。在频繁项目集中挑选出所有不被其他元素包 含的频繁项目集称为最大频繁项目集(最大频集: Maximum Frequent Itemsets)或最大大项目集 (Maximum Large Iitemsets)。
(2) genrules( lk , lk);
算法3-4的核心是genrules递归过程,它实现一个 频繁项目集中所有强关联规则的生成。
2020/4/28
15
算法-递归测试一个频集中的关联规则
算法3-5 递归测试一个频集中的关联规则
genrules(lk: frequent k-itemset, xm: frequent m-itemset)
对于每一个频繁项目集l,生成其所有的非空子集; 对于l 的每一个非空子集x,计算Conference(x),如
果Confidence(x)≥minconfidence,那么“x(l-
x)”成立。
算法3-4 从给定的频繁项目集中生成强关联规则
Rule-generate(L,minconf)
(1) FOR each frequent itemset lk in L
2.生成关联规则:通过用户给定Minconfidence ,在频 繁项目集中,寻找关联规则。
第1个子问题是近年来关联规则挖掘算法研究的重 点。
2020/4/28
6
3.2 经典的频繁项目集生成算法分析
项目集空间理论 经典的发现频繁项目集算法 关联规则生成算法
2020/4/28
7
3.2.1 项目集空间理论
(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),
TID Itemset
4 B,D,E 5 A,B,C,D
2020/4/28
13
Apriori算法例子
Minsupport=40%
Database D
TID Items 100 1 3 4 200 2 3 5 300 1 2 3 5 400 2 5
itemset sup.
C1 {1}
2
{2} 3
Scan D {3} 3
FOR all candidates c Ct DO
c.count++;
(8) END
(9) Lk={cCk |c.countminsup_count} (10) END
(11) L= Lk;
2020/4/28
9
apriori-gen过程
算法apriori中调用了apriori-gen(Lk-1),是为了 通过(k-1)-频集产生K-侯选集。
itemset {1 2} {1 3} {1 5} {2 3} {2 5} {3 5}
C3 itemset Scan D L3 itemset sup
{2 3 5}
{2 3 5} 2
2020/4/28
Fra Baidu bibliotek14
3.2.3 关联规则生成算法
根据上面介绍的关联规则挖掘的两个步骤,在得 到了所有频繁项目集后,可以按照下面的步骤生 成关联规则:
Agrawal等人建立了用于事务数据库挖掘的项目集格空 间理论(1993, Appriori 属性)。
定理3-1( Appriori 属性1). 如果项目集X 是频繁项目集, 那么它的所有非空子集都是频繁项目集。
证明 设X是一个项目集,事务数据库T 中支持X 的元组数为s。对X 的任一非空子集为Y,设T中支持Y的元组数为s1。
(5) (6)
IF has_infrequent_subset(c, Lk-1) THEN
delete c;//删除含有非频繁项目子集的侯选元素
(7) (8)
ELSE add c to Ck; END
(9) Return Ck;
has_infrequent_subset(c, Lk-1),判断c是否加入
L1 = {large 1-itemsets}; //所有1-项目频集 FOR (k=2; Lk-1; k++) DO BEGIN
Ck=apriori-gen(Lk-1); // Ck是k-候选集
FOR all transactions tD DO BEGIN
(5) (6) (7)
Ct=subset(Ck,t); // Ct是所有t包含的候选集元素
定理3-2( Appriori 属性2).如果项目集X 是非频繁项目 集,那么它的所有超集都是非频繁项目集。
证明 (略)
2020/4/28
8
3.2.2 经典的发现频繁项目集算法
1994年,Agrawal 等人提出了著名的Apriori 算 法。
算法3-1 Apriori(发现频繁项目集)
(1) (2) (3) (4)
(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.itemk-1 < q.itemk-1 THEN BEGIN
(4)
c= p∞q;//把q的第k-1个元素连到p后
其中I1,I2I,I1∩I2=Ф。
定义3-4(强关联规则). D在I上满足最小支持度 和最小信任度(Minconfidence)的关联规则称为 强关联规则(Strong Association Rule)。
2020/4/28
5
关联规则挖掘基本过程
关联规则挖掘问题可以划分成两个子问题:
1. 发现频繁项目集:通过用户给定Minsupport ,寻找所 有频繁项目集或者最大频繁项目集。
19
3.4 提高Apriori算法效率的技术
一些算法虽然仍然遵循Apriori 属性,但是由于引入了相关 技术,在一定程度上改善了Apriori算法适应性和效率。
主要的改进方法有:
基于数据分割(Partition)的方法:基本原理是“在一个划分中 的支持度小于最小支持度的k-项集不可能是全局频繁的”。
2.可能产生庞大的侯选集 由Lk-1产生k-侯选集Ck是指数增长的,例如104个1-频 繁项目集就有可能产生接近107个元素的2-侯选集。如 此大的侯选集对时间和主存空间都是一种挑战。
2020/4/28
18
3.4 Apriori的改进算法
基于数据分割的方法 基于散列的方法
2020/4/28
集1项目集L1 第k次遍历利用前一次找到的大项集Lk-1 和Apriori-
gen函数产生候选集Ck ,然后扫描数据库,得到Ck 中候选的支持度,剔除了不合格的候选后Ck作为Lk
2020/4/28
12
例3-1
下表给出一个样本事务数据库,并对它实施Apriori算法。
TID Itemset
1 A,B,C,D 2 B,C,E 3 A,B,C,E
2020/4/28
17
3.3 Apriori算法的性能瓶颈问题
Apriori作为经典的频繁项目集生成算法,在数据挖 掘中具有里程碑的作用。
Apriori算法有两个致命的性能瓶颈:
1.多次扫描事务数据库,需要很大的I/O负载 对每次k循环,侯选集Ck中的每个元素都必须通过扫描 数据库一次来验证其是否加入Lk。假如有一个频繁大 项目集包含10个项的话,那么就至少需要扫描事务数 据库10遍。
基于散列(Hash)的方法:基本原理是“在一个hash桶内支持度 小于最小支持度的k-项集不可能是全局频繁的”。
基于采样(Sampling)的方法:基本原理是“通过采样技术,评 估被采样的子集中,并依次来估计k-项集的全局频度”。
到k-侯选集中。
2020/4/28
10
发现算法解决的是关联规则挖掘的第一个问题 关联规则分为布尔关联规则和多值规则 多值关联规则都转化为布尔关联规则来解决,因
此先介绍布尔关联规则算法 Apriori,AprioriTid
2020/4/28
11
Apriori算法分析
分为第一次遍历和第k次遍历 第一次遍历计算每个项目的具体值,确定大项目
{4} 1
{5} 3
L1
itemset {1}
sup. 2
{2}
3
{3}
3
{5}
3
L2 itemset sup
{1 3} 2
{2 3} 2
{2 5} 3
{3 5} 2
C2 itemset sup
{1 2} 1 {1 3} 2 {1 5} 1 {2 3} 2 {2 5} 3 {3 5} 2
C2 Scan D
2020/4/28
4
可信度与关联规则
定义3-3(关联规则与可信度).给定一个全局项目 集I和数据库D,一个定义在I和D上的关联规则形 如I1I2,并且它的可信度或信任度或置信度 (Confidence)是指包含I1和I2的事务数与包含I1的 事务数之比,即
Confidence(I1I2)= support(I1∪I2)/ support(I1),
根据项目集支持数的定义,很容易知道支持X 的元组一定支持Y, 所以s1 ≥s,即support(Y) ≥ support(X)。
按假设:项目集X 是频繁项目集,即support(X)≥ minsupport, 所以support(Y)≥ support(X)≥ minsupport,因此Y是频繁 项目集。□
最早是由Agrawal等人提出的(1993)。最初提出的动机是针对购物 篮分析(Basket Analysis)问题提出的,其目的是为了发现交易数据 库(Transaction Database)中不同商品之间的联系规则。
关联规则的挖掘工作成果颇丰。例如,关联规则的挖掘理论、算法 设计、算法的性能以及应用推广、并行关联规则挖掘(Parallel Association Rule Mining)以及数量关联规则挖掘(Quantitive Association Rule Mining)等。
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;
2020/4/28
16
Rule-generate算法例子
Minconfidence=80%
序号 lk
xm-1
confidence
1
235 23
100%
2
235 2
67%
3
235 3
67%
4
235 25
67%
5
235 5
67%
6
235 35
100%
support 规则(是否是强规则)
50% 235(是) 50% 235(否) 50% 325(否) 50% 253(否) 50% 523(否) 50% 352(是)
一个事务数据库可以用来刻画:
购物记录: I是全部物品集合, D是购物清单,每个元 组ti是一次购买物品的集合(它当然是I的一个子集)。
其它应用问题
2020/4/28
3
支持度与频繁项目集
定义3-1(项目集的支持度). 给定一个全局项目集I和数据 库D,一个项目集I1I在D上的支持度(Support)是包含I1 的事务在D中所占的百分比:support( I1 )=|| {t D | I1 t}|| / || D||。
相关文档
最新文档