关联规则(二)Apriori算法

本文深入探讨Apriori算法的先验原理,包括性质、算法流程、剪枝和连接策略。通过实例分析了如何利用这两个性质来优化算法,并提供了Python代码实现,帮助读者理解Apriori在大数据中的应用。
摘要由CSDN通过智能技术生成

1. 先验原理

1. 性质

上次说到,Apriori算法有两个重要特性。

  • 频繁项集的非空子集一定是频繁的
  • 非频繁项集的超集一定是非频繁的

这两个性质就是Apriori算法的基础,插图解释。(插图用PPT画的,有好的画图方法,请大佬赐教)。
在这里插入图片描述

都从1-项集开始分析的,假设1,2,3,4都满足最小支持度,那么它们都是频繁1-项集。
2-项集分析时,发现34不是频繁项集,标红。其余为频繁2-项集。
3-项集分析时,134,234 都不是频繁项集,标红。
4-项集分析时,1234不是频繁4-项集。

性质1 ,频繁项集的非空子集一定是频繁的。知道123 是频繁项集,就可以得出结论,12,13,23,1,2,3肯定都是频繁项集。234同理。
性质2 ,非频繁项集的超集一定是非频繁的。分析过程中,得知34是非频繁的,那么就可以知道134,234一定也是非频繁的。

2. 算法流程

流程是死的,就不解释什么了。感兴趣的还可以看看伪代码。
输入:数据集合D,支持度阈值αα
输出:最大的频繁k项集

  1. 扫描整个数据集,得到所有出现过的数据,作为候选频繁1项集。k=1,频繁0项集为空集。
  2. 挖掘频繁k项集
    a) 扫描数据计算候选频繁k项集的支持度
    b) 去除候选频繁k项集中支持度低于阈值的数据集,得到频繁k项集。如果得到的频繁k项集为空,则直接返回频繁k-1项集的集合作为算法 结果,算法结束。如果得到的频繁k项集只有一项,则直接返回频繁k项集的集合作为算法结果,算法结束。
    c) 基于频繁k项集,连接生成候选频繁k+1项集。
  3. 令k=k+1,转入步骤2。

3. 剪枝和连接

剪枝和连接是算法的核心。通过当项集不满足支持度的时候,我们删除。
1-项集都满足最小支持度,不需要剪枝,只要连接。因此,1,2,3,4 被连接成12,13,14,23,24,34。
2-项集时,34 不满足最小支持度,因此删除。这一步删除就是剪枝,删除之后,234,134,1234 都不会再出现。而12,13,14,23,24连接成123,124。
3-项集时,123,124 运行结束。
如果数据比较多,则算法就会4-项集,5-项集,,,n-项集一直这样下去。

2. python 代码分析

from numpy import *

def loadDataSet():  ## 定义的数据集,选数字还是选字母自行选择,也可以用其他的数据集代替。
    #return [[1, 3, 4], [2, 3, 5], [1, 2, 3, 5], [2, 5]]
    return [['A','B','D','E'],['E','B','D'],['B','D','E'],['E','D'],
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值