Apriori算法:通过限制候选产生发现频繁项集

Apriori算法:布尔关联规则挖掘频繁项集的方法

        该算法使用频繁项集性质的先验知识,Apriori算法使用一种逐层搜索的迭代方法,其中k项集用于探索(k+1)项集。首先,通过扫描数据库,累计每个项的技术,并收集满足最小支持度的项,找出频繁1项集的集合,该集合记为L1,然后使用L1找出频繁2项集的几个L2,使用L2找出L3......如此下去,知道不能再找出频繁k项集,找出每个Lk需要一次完整的数据库扫描。
        为了提高频繁项集逐层产生的效率,一种称为 先验性质(Apriori property)的重要性质用于压缩搜索空间。
        先验性质:频繁项集的所有非空子集也一定是频繁的。
        先验性质是基于如下观察,根据定义如果项集 I不满足最小支持杜阀值min_sup,则I是不频繁的,即P(I)<min_sup。如果把项A添加到项集I中,则结果项集(即I∪A)不可能比I更频繁出现因此I∪A也是不频繁的,即P(I∪A)<min_sup。
        该性质属于一类特殊的性质,称为反单调性:如果一个集合不能通过测试,则他的所有超类也都不能通过相同的测试。
        “如何在算法中使用先验性质?”为理解这一点,我们考察如何使用L k-1找出 L k,其中k>=2,下面的两步过程由连接步剪枝步组成。
          (1)连接步:
                            为找出Lk,通过将Lk-1与自身连接产生候选k项集合,该候选项集的集合为Ck,设l1和l2是Lk-1中的项集,为了有效地实现,Apriori算法嘉定实物或项集中的项按字典排序,之后执行连接操作Lk-1∞Lk-1,其中Lk-1是可连接的,如果他们前k-2个元素相同,如果(l1[1]=l2[1])∧(l1[2]=l2[2])......∧(l1[k-2]=l2[k-2])∧(l1[k-1]<l2[k-1]),则连接l1和l2产生的结果项集是{l1[1],l1[2]......,l1[k-1],l2[k-1]}。

        (2)剪枝步:
                           Ck是Lk 的超集,Ck可以是也可以不是频繁的,但是所有的频繁项集都包含在Ck中,扫描数据库,确定Ck中每个候选的计数,从而确定Lk。
    妈的不扯这些垃圾语言了 直接看例子:

AllElectronices 某分店的事物数据
Tid商品Id列表Tid商品Id列表
T100I1,I2,I5T600I2,I3
T200I2,I4T700I1,I3
T300I2,I3T800I1,I2,I3,I5
T400I1,I2,I4T900I1,I2,I3
T500I1,I3  
迭代的过程为:

其中的一些细节:


具体算法






  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值