关联规则挖掘(二):Apriori算法

Apriori算法是数据挖掘中的经典关联规则挖掘算法,采用自底向上的方法从1-频繁集开始逐渐生成高阶频繁集。该算法利用频繁集性质减少计算量,但多次数据库扫描和大候选集生成导致性能下降。优化方法包括数据分割,以提高效率。
摘要由CSDN通过智能技术生成

1 算法简介

在数据挖掘领域,Apriori算法是挖掘关联规则的经典算法。Apriori算法采用的是自底向上的方法,从1-频繁集开始,逐步找出高阶频繁集。

它的基本流程是:第一次扫描交易数据库D时,产生1-频繁集。在此基础上经过连接、修剪产生2-频繁集。以此类推,直到无法产生更高阶的频繁集为止。在第k次循环中,也就是产生k-频繁集的时候,首先产生k-候选集,k-候选集中每一个项集都是对两个只有一个项不同的属于k-1频繁集的项集连接产生的,k-候选集经过筛选后产生k-频繁集。

2 理论基础

首先来看一个频繁集的性质。

定理:如果项目集X是频繁集,那么它的非空子集都是频繁集。

根据定理,已知一个k-频繁集的项集X,X的所有k-1阶子集都肯定是频繁集,也就肯定可以找到两个k-1频繁集的项集,它们只有一项不同,且连接后等于X。这证明了通过连接k-1频繁集产生的k-候选集覆盖了k-频繁集。同时,如果k-候选集中的项集Y,包含有某个k-1阶子集不属于k-1频繁集,那么Y就不可能是频繁集,应该从候选集中裁剪掉。Apriori算法就是利用了频繁集的这个性质。

3 算法伪代码

这是Apriori算法的主函数,它的输入是交易数据库D和最小支持度,最终输出频繁集L。函数第一步是扫描数据库产生1-频繁集,这只要统计每个项目出现的次数就可以了。然后依次产生2阶,3阶,……,k阶频繁集,k频繁集为空则算法停止。apriori_gen函数的功能是根据k-1频繁集产生k-候选集。接着扫描交易数据库里的每一笔交易,调用subset函数产生候选集的子集,这个子集里的每一个项集都是此次交易的子集,并对子集里的每一个项集的计数增一。最后统计候选集里所有项集的计数,将未达到最小支持度标准的项集删去,得到新的频繁集。

可以看到每一次循环,都必须遍历交易数据库;而且对于每一个交易,也要遍历候选集来增加计数,当候选集

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值