- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
每个关联规则可由如下过程产生:
对于每个频繁项集 l,产生 l 的所有非空子集; sup port _ count(l ) 对于每个非空子集s,如果 sup port _ count( s) min_conf 则输出规则“ ” s (l s)
Apriori算法—用伪码表示其形式00 5000
购买的item A,B,C A,C A,D B,E,F
假设最小支持度为50%, 最小置信度为50%,则有 如下关联规则
A C (50%, 66.6%) C A (50%, 100%)
大型数据库关联规则挖掘中如何降低计 算复杂度,提高关联规则效率
由事务数据库挖掘单维布尔关联规则
最简单的关联规则挖掘,即单维、单层、布尔关联规 则的挖掘,而且我们的举例尽量不涉及概念分层。
Items Bought A,B,C A,C A,D B,E,F
首先挖掘频繁项集,其前提条件是: 最小支持度 50%,且最小置信度 50%
Transaction ID 2000 1000 4000 5000
Apriori算法(计算大型数据库时挖掘关联规则的常用算法之一)
Apriori算法利用频繁项集性质的先验知识(prior knowledge),通过逐层搜索的迭代方法,即将k-项 集用于探察(k+1)-项集,来穷尽数据集中的所有频繁 项集(通过先验知识挖掘未知知识)。
Apriori性质:频繁项集的所有非空子集也必须是频繁 的。( A B 模式不可能比A更频繁的出现,即A与
先找到频繁1-项集集合(即单个项出现的频率)L1,然后用L1 找到频繁2-项集集合L2,接着用L2找L3,直到找不到频繁k项集,找每个Lk需要一次数据库扫描,过程用到下面性质。
B的非空交集不可能比A大,只能被包含)
Apriori算法是反单调的,即一个集合如果不能通过测试,则 该集合的所有超集(注意超集与真超集概念是怎么样的?其 定义与子集相对!)也不能通过相同的测试。
Frequent Itemset Support {A} 75% {B} 50% {C} 50% {A,C} 50%
对规则A C,其支持度 support(A C ) P(A C ) =50% 置信度分A推导C和由C推导A,以A推导C为例:
confidence (A C ) P(C | A) P(A C ) / P(A) support(A C ) / support(A) 66.6%
关联规则的两个兴趣度度量
支持度 置信度
关联规则:基本概念
给定:
项的集合(进行关联分析时问题的邻域所包含的项的集合):
I={i1,i2,...,in}
任务相关数据D是数据库事务的集合,每个事务T则是项的集合, 使得T I 。例如每个事务就是购买的一个订单,每个订单记录的 是购买的哪些商品的信息,项的集合就是商店里所有商品种类的集 合,每个订单就是关于这个订单中购买的商品种类的集合。 这样, 一个订单中购买商品种类总是被商场所有商品种类的集合所包含。 为了进行关联规则分析,我们将每个事务由事务标识符TID标识; A,B为两个项集,事务T包含A当且仅当A T ,一般分析两个项 集。
C2 2rd scan
Itemset {A, B} {A, C} {A, E} {B, C}
{A,E}
{B, E}
{C, E}
最终,挖掘出2项集中4个 和3项集中1个频繁项集!
C3
Itemset {B, C, E}
3rd
scan
L3
Itemset {B, C, E}
注意:我们假设最小支持度是50%,则最小支持计数是2个,则L1时删除D,则 任何包含D的超集其出现次数都不可能再超过1次,即Apriori性质所讲的内容。
Ck是Lk的超集,即它的成员可能不是频繁的,但是所 有频繁的k-项集都在Ck中(为什么?)。因此可以通 过扫描数据库,通过计算每个k-项集的支持度来得到 Lk 。
为了减少计算量,可以使用Apriori性质,即如果一个k-项集 的(k-1)-子集不在Lk-1中,则该候选不可能是频繁的,可以直 接从Ck删除。
2.使用Apriori性质剪枝:频繁项集的所有子集必须是频繁 的,对候选项C3,我们可以删除其子集为非频繁的选项: {A,B,C}的2项子集是{A,B},{A,C},{B,C},其中{A,B}不是L2的元素,
所以删除这个选项; {A,C,E}的2项子集是{A,C},{A,E},{C,E},其中{A,E} 不是L2的元素, 所以删除这个选项; {B,C,E}的2项子集是{B,C},{B,E},{C,E},它的所有2-项子集都是L2 的元素,因此保留这个选项。
Apriori算法—示例
使用Apiori性质由L2产生C3
1 .连接:至少有一个元素相同时,才能进行两两连接 C3=L2 L2= {{A,C},{B,C},{B,E}{C,E}} {{A,C},{B,C},{B,E}{C,E}} = {{A,B,C},{A,C,E},{B,C,E}}, 我们认为任何频繁的三项集都包含在此C3中!
Apriori算法—示例(如何挖掘满足最小支持度的关联的频繁项集)
Database TDB
Tid 10 20 30 40 Items A, C, D B, C, E A, B, C, E B, E
不在 L2中
Itemset
sup
C1 1st scan
{A}
{B} {C}
2
3 3
L1
Itemset
{A} {B} {C} {E}
基本概念
k-项集:包含k个项的集合
{牛奶,面包,黄油}是个3-项集
项集的频率是指包含项集的事务数占总的事务数的百分比
如果项集的频率大于(最小支持度×D中的事务总数),则 称该项集为频繁项集(即满足最小支持度要求的项集) 找出所有频繁项集
大型数据库中的关联规则挖掘包含两个过程:
涉及到大量数据读取和计算,所以大部分的计算都集中在这一 步,完成后找到的项集其本身已经满足了最小支持度规则
举例二:购物篮分析
如果问题的全域是商店中所有商品的集合,则 对每种商品都可以用一个布尔量来表示该商品 是否被顾客购买,则每个购物篮都可以用一个 布尔向量表示(0001001100);而通过分析布尔 向量则可以得到商品被频繁关联或被同时购买 的模式,这些模式就可以用关联规则表示。
思考:这种布尔购物篮有什么缺陷?影响挖掘结果吗?
用DMQL深入学习各种数据挖掘功能之二
关联规则分析--大型数据库中关联规则挖掘
(概念描述、关联规则分析、分类、预测、聚类及孤立点分析等等)
什么是关联规则挖掘?
关联规则挖掘:
从事务数据库,关系数据库和其他信息存储中的大 量数据的项集之间发现有趣的、频繁出现的模式、 关联和相关性。 主要的兴趣度度量指标有两个:置信度、支持度, 如果一个模式既满足支持度和置信度要求,则称这 个模式为强关联规则。
age( X , "30...39" ) buys( X , " laptop_ computer ")
age( X , "30...39" ) buys( X , " computer ")
4、根据关联挖掘的各种扩充 挖掘最大的频繁模式(该模式的任何真超模式都是非 频繁的,意味着这个模式是最大的频繁模式) 挖掘频繁闭项集(一个项集c是频繁闭项集,如果不 存在其真超集c`,使得每个包含c的事务也包含c`, 意味着c的任何一个真超集都不可能是频繁的,我们 就说c是频繁闭项集)
support(A B ) P(A B )
支持度s是指事务集D中包 含 A B 的百分比
注意: 不是或,是模式间的连接,是
union
Customer buys beer
confidence( A B) P( B | A) P( A B) / P( A)
置信度c是指D中包含A的 事务同时也包含B的百分比
基本思路步骤为:
算法:Apriori使用根据候选生成的逐层迭代找出频繁项表
输入:与任务相关的事务数据库D;最小支持临界值 min_sup 输出:D中的频繁项集L
具体代码,略。代码了解即可,但要掌握Apriori算法的计算思想。
提高Apriori算法的有效性(1)
Apriori算法主要的挑战
3.这样,剪枝后得到C3={{B,C,E}}
Apriori算法—示例
由频繁项集产生关联规则
同时满足最小支持度和最小置信度的才是强关 联规则,从频繁项集产生的规则都满足支持度 要求,而其置信度则可由一下公式计算:
confidence (A B ) P(A | B )
sup port _ count(A B ) sup port _ count(A )
sup
2 3 3 3
{D}
{E}
1
3 Itemset {A, B} {A, C} {A, E} {B, C} {B, E} {C, E} sup 2 sup 1 2 1 2 3 2
连接!
C3
Itemset {A,B,C} {B,C,E} {A,C,E}
剪 枝 结 果
{A,B}
都在
L2
连接!
C2
Itemset {A, C} {B, C} {B, E} {C, E} sup 2 2 3 2