文章目录
- 第三章节是Apriori算法实现的阉割版(没有剪枝步)
- 第四章节是完整版
- 第五章节是直接调用封装好的apriori算法
- 想了解第四部分完整背景的可以参考这个网址
引言
关联规则分析是数据挖掘中最活跃的研究方法之一,目的是在一个数据集中找到各项之间的关联关系,而这种关系并没有在数据中直接体现出来。以超市的销售数据为例,当存在很多商品时,可能的商品组合数量达到了令人望而却步的程度,这是提取关联规则的最大困难。因此各种关联规则分析算法从不同方面入手减少可能的搜索空间大小以及减少扫描数据的次数。Apriori算法是最经典的挖掘频繁项集的算法,第一次实现在大数据集上的可行的关联规则提取,其核心思想是通过连接产生候选项及其支持度,然后通过剪枝生成频繁项集。
一、一些概念
1.关联规则的一般形式
- 关联规则的支持度(相对支持度)
项集A、B同时发生的概率称为关联规则的支持度(相对支持度)。 S u p p o r t ( A = > B ) = P ( A ∪ B ) Support(A=>B)=P(A∪B) Support(A=>B)=P(A∪B) - 关联规则的置信度
项集A发生,则项集B发生的概率为关联规则的置信度。 C o n f i d e n c e ( A = > B ) = P ( B ∣ A ) Confidence(A=>B)=P(B|A) Confidence(A=>B)=P(B∣A)
2.最小支持度和最小置信度
- 最小支持度是衡量支持度的一个阈值,表示项目集在统计意义上的最低重要性
- 最小置信度是衡量置信度的一个阈值,表示关联规则的最低可靠性
- 强规则是同时满足最小支持度阈值和最小置信度阈值的规则
3.项集
- 项集是项的集合。包含 k k k个项的集合称为 k k k项集,如集合{牛奶,麦片,糖}是一个三项集
- 项集出现的频率是所有包含项集的事务计数,又称为绝对支持度或支持度计数
- 如果项集 I I I的相对支持度满足预定义的最小支持度阈值,则 I I I是频繁项集。如果有 k k k项,记为 L k L_k Lk
4.支持度计数
- 项集A的支持度计数是事务数据集中包含项集A的事务个数,简称项集的频率或计数
- 一旦得到项集 A 、 B 和 A ∪ B A、B和A∪B A、B和A∪B的支持度计数以及所有事务个数,就可以导出对应的关联规则 A = > B A=>B A=>B和 B = > A B=>A B=>A,并可以检查该规则是否为强规则。
其中 N N N表示总事务个数, σ σ σ表示计数
二、Apriori算法:使用候选产生频繁项集
Apriori算法的主要思想是找出存在于事务数据集中最大的频繁项集,再利用得到的最大频繁项集与预先设定的最小置信度阈值生成强关联规则。
1.Apriori的性质
频繁项集的所有非空子集一定是频繁项集。根据这一性质可以得出:向不是频繁项集 I I I的项集中添加事务 A A A,新的项集 I ∪ A I∪A I∪A一定不是频繁项集。
2.Apriori算法实现过程
第一步:
找出所有频繁项集(支持度必须大于等于给定的最小支持度阈值),在这个过程中连接步与剪枝步相互融合,最终得到最大频繁项集 L k L_k Lk
- 连接步
连接步的目的是找到 K K K项集。对于给定的最小支持度阈值,分别对1项候选集 C 1 C_1 C1,剔除小于该阈值的项集得到1项频繁集 L 1 L_1 L1;下一步由 L 1 L_1 L1自身连接产生2项候选集 C 2 C_2 C2,剔除小于该阈值的项集得到2项频繁集 L 2 L_2 L2;再下一步由 L 2 和 L 1 L_2和L_1 L2和L1连接产生3项候选集 C 3 C_3 C3,剔除小于该阈值的项集得到3项频繁集 L 3 L_3 L3,这样循环下去,直至由 L k − 1 和 L 1 L_{k-1}和L_1 Lk−1和L1连接产生 k k k项候选集 C k C_k