关联规则——Apriori算法

关联规则——Apriori算法

简介

关联规则分析也成为购物篮分析,最早是为了发现超市销售数据库中不同的商品之间的关联关系。例如一个超市的经理想要更多地了解顾客的购物习惯,比如“哪组商品可能会在一次购物中同时购买?”或者“某顾客购买了个人电脑,那该顾客三个月后购买数码相机的概率有多大?”他可能会发现如果购买了面包的顾客同时非常有可能会购买牛奶,这就导出了一条关联规则“面包=>牛奶”,其中面包称为规则的前项,而牛奶称为后项。通过对面包降低售价进行促销,而适当提高牛奶的售价,关联销售出的牛奶就有可能增加超市整体的利润。

基本概念

项集:项的集合。例:集合{computer,printer}就是一个2项集。

支持度:表示在所有的事务中同时出现该项集的概率。(项集A的支持度计数是事务数据集中包含项集 A 的事务个数。若已知项集的支持度计数,则规则A => B的支持度和置信度很容易从所有事务计数、项集A和项集A∪B的支持度计数推出。)

频繁项集:在一次具体的数据分析任务中,我们可以自行设定最小支持度阈值,则如果项集A的支持度满足预定义中的最小支持度阈值,即A项集为频繁项集(若A包含k个项,则也称A为k频繁项集)。

关联规则:指有关联的规则。例如上面的例子中 “面包=>牛奶” 就是一条关联规则。其侧面揭示了事务中的某种联系。

置信度:表示的是关联规则的前件出现时后件是否会出现,若出现,后件出现的概率有多大。对于A=>B而言,置信度表示A出现时B同时出现的概率。

项集A、B同时发生的概率称为关联规则的支持度
S u p p o r t ( A = > B ) = P ( A ∪ B ) Support(A => B)= P(A ∪ B) SupportA=>B=PAB

项集A发生,则项集B也同时发生的概率为关联规则的置信度
C o n f i d e n c e ( A = > B ) = P ( B ∣ A ) Confidence(A => B)= P(B | A) ConfidenceA=>B=PBA

强关联规则:若关联规则A => B满足如下, 则称该关联规则是强关联规则,否则为弱关联规则。
S u p p o r t ( A = > B ) ≥ m i n S u p Support(A => B)≥ minSup SupportA=>BminSup
C o n f i d e n c e ( A = > B ) ≥ m i n C o n f Confidence(A => B)≥ minConf ConfidenceA=>BminConf

闭项集和极大频繁项集

超项集:若S1是S2的超项集,则S2是S1的子集。

闭频繁集:对于项集X,如果不存在真超项集Y使得Y与X在事务数据库D中有相同的支持度,则称项集X在数据集D中是闭的,如果X在S中是闭的和频繁的,就称X是S中的闭频繁项集。(简单的来说,就是项集X所有父级的支持度都小于本身的支持度,则是闭的)

极大频繁集:如果X是频繁的,并且不存在超项集Y使得 X∈Y 并且Y在S中是频繁的。则称X是S中的极大频繁项集(就是闭频繁项集的极限情况,即刚好大于支持度的闭频繁项集)

频繁项集的关系

极大频繁项集<闭频繁项集<频繁项集

稀有模式和负模式

稀有模式:又称为非频繁模式。给定一个用户指定的正常数 δ,其满足(0<δ<1),则该类模式的最小支持度阈值通常定义为 Rmin_sup= δ *min_sup,其中min_sup为频繁项集的最小支持度阈值,若一个模式其支持度低于(或远低于)该最小支持度阈值,这个模式就称为稀有模式。

负模式:在数据集D中,某数据项集X的出现会减少另一数据项集Y的出现,甚至使得Y不出现,这一类模式称为负模式,由此产生的关联规则称为负关联规则。例如在超市商品销售中,分别购买可口可乐和百事可乐的支持度都非常高,但是二者存在很强的负相关性,因此它们可以组成负数据项集,由此而生成的关联规则称为负关联规则。

Apriori算法

Apriori算法是第一个关联规则挖掘算法,也是最经典的算法。它利用逐层搜索的迭代方法找出数据库中项集的关系,以形成规则,其过程由连接(类矩阵运算)与剪枝(去掉那些没必要的中间结果)组成。

核心思想

频繁项集的任何非空子集也一定是频繁的,也就是说一个项集是非频繁的,那么它的所有超集也一定是非频繁的

首先通过扫描数据库,累计每个项的计数,并收集满足最小支持度的项,找出频繁1项集的集合。然后使用频繁1找出长度为2的候选项集,再清除掉那些有子集不是频繁项集的候选集,对剩下的候选集扫描数据库,计算它们的支持度,筛选出满足条件的频繁2项集,如此下去,直到不能再找到频繁K项集。然后用得到的频繁项集生成关联规则。

(用频繁的(k – 1)-项集生成候选的频繁 k-项集,用数据库扫描和模式匹配计算候选集的支持度)

步骤

  • 找出所有频繁项集:这些项集的每一个出现的频繁性至少与预定义的最小支持度一样
  • 由频繁项集产生强关联规则:这些规则必须满足最小支持度、最小置信度和相关度
候选集生成步骤

连接: 用 Lk-1自连接得到候选k项集Ck,连接时只能将只差最后一个项目不同的项集进行连接

修剪: 一个候选k项集Ck,如果它的一个k-1项集(它的子集 )不是频繁的,那它本身也不可能是频繁的。

第一步是连接步,就是将k-1频繁集两两自连接得到最初的k候选集,这里自连接的频繁集必须满足两者只有最后一个项目不同的才能自连接。第二步是修剪步,就是将上面得到的最初k候选集,分别去计算每个k候选集它的每一个k-1子集是否为频繁的,如果有一个不是,那么这个k候选集就不可能成为频繁集,将它从候选集中删除。

由频繁项集产生关联规则

一旦由数据库D中的事务找出频繁项集,就可以直接由它们产生强关联规则,其产生步骤如下:

对找到的每个频繁项集l,产生各自的所有非空子集,针对每个l,用它的每个非空子集s和它的补集l-s,作为关联规则的左右两项,在计算它们的置信度,判断是否大于最小置信度,如果是则可以输出这个强关联规则。

如果希望让计算量更小,可以对得到的频繁项集进行剪枝,只选择出闭频繁项集或极大频繁项集考察它们的强关联规则,同时还可以进一步设置相关性度量指标过滤强关联规则,使得得到的强关联规则都是有用和有趣的。

缺陷

Apriori算法的运行时间主要发生在产生候选集扫描数据库,虽然通过巧妙的思想一定程度上减少了候选集的大小,然而在频繁项集很多或者最小支持度很低的情况下,算法依然会生成数量庞大的候选项集并且需要反复扫描数据库来检查数量庞大的候选项集,代价仍然十分高。

举例来说10^4 个频繁1-项集要生成 10^7 个候选 2-项集,要找长度为100的频繁模式,你必须先产生2^100 ≈ 10^30 个候选集。如果最长的频繁模式是n的话,则需要 (n +1 ) 次数据库扫描。

可采用 不用生成候选集的关联规则挖掘算法FP-growth

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值