阅读本文之前建议先理解关联分析的基本概念与术语。传送门
本文简单介绍关联分析中的先验(Apriori)原理与Apriori算法,持续更新与补充。
先验(Apriori)原理
原理简介:
如果一个项集是频繁的,则它的所有子集一定也是频繁的。相反,如果一个项集是非频繁的,则它所有的超集也是非频繁的。
此原理基于支持度的反单调性(anti-monotone):一个项集的支持度绝不会超过它的子集的支持度。
基于此原理,我们就能对项集进行 基于支持度的剪枝(support-based pruning),不用计算支持度就能删除掉某些非频繁项集。
于是便出现了基于先验原理的Apriori算法。
Apriori算法
Apriori算法是第一个关联规则挖掘算法,它开创性地使用基于支持度的剪枝技术,系统地控制候选项集指数增长。
对于文章开头表 6-1 中所示的事务,下图 6-5 给出Apriori算法频繁项集产生部分的一个示例。
初始时每个项都被看作 候选1-项集。对它们的支持度计数之后,候选项集 {可乐} 和 {鸡蛋} 被丢弃。
在下一次迭代中,就只需使用 频繁1-项集 来产生 候选2-项集 ,由于只有4个 频繁1-项集,因此算法产生的 候选2-项集 的数目为 C ( 4 , 2 ) = 6 C(4, 2) = 6 C(4,2)=6 个。计算它们的支持度之后,发现4个候选项集是频繁的,因此用此4个来产生候选3-项集。
通过此例子可以看出先验剪枝策略的有效性。枚举所有项集到3-项集的暴力策略过程将产生
C ( 6 , 1 ) + C ( 6 , 2 ) + C ( 6 , 3 ) =