在上一篇 数据挖掘入门算法整理 中提到, Apriori算法是 关联规则算法中使用最为广泛的算法,这次我们就来学习下该算法的基本知识。
Apriori 算法是一种最有影响力的挖掘布尔关联规则的频繁项集的 算法,它是由Rakesh Agrawal 和RamakrishnanSkrikant 提出的。它使用一种称作逐层搜索的迭代方法,k- 项集用于探索(k+1)- 项集。首先,找出频繁 1- 项集的集合。该集合记作L1。L1 用于找频繁2- 项集的集合 L2,而L2 用于找L2,如此下去,直到不能找到 k- 项集。每找一个 Lk 需要一次数据库扫描。为提高频繁项集逐层产生的效率,一种称作Apriori 性质的重 要性质 用于压缩搜索空间。其运行定理在于 一是频繁项集的所有非空子集都必须也是频繁的,二是非频繁项集的所有父集都是非频繁的 。
Apriori算法应用广泛,可用于消费市场价格分析,猜测顾客的消费习惯;网络安全领域中的入侵检测技术;可用在用于高校管理中,根据挖掘规则可以有效地辅助学校管理部门有针对性的开展贫困助学工作;也可用在移动通信领域中,指导运营商的业务运营和辅助业务提供商的决策制定。
三、
基本概念
Apriori算法最重要的两个概念为支持度(support)和置信度 (confidence):
算法分为两个阶段:计算各层支持度和根据支持度计算置信度。这里直接通过一个例子来说明,初始集合有5条记录,根据条记录中的商品组合,我们可以逐级算出每一层的支持度,计算过程如下图:
支持度计算过程
可以看到,最终可以得到3层支持度:L1,L2,L3,接下来,我们可以直接通过支持度计算各层的置信度,这里我们以L3为例:
置信度计算过程
置信度计算比较简单,就是根据K层集合中K-1个元素到另外一个元素的置信度,直接套用上边公式即可。这里我们其实可以得出规则,当BC或CE出现的时候,E或B必然出现。当然,这里只是个简单的例子,实际中必须要有足够的样本,结果才更可靠。
从上边看 Apriori算法基本原理还是比较简单的 ,但是实际过程中如果按照这样来计算,对于N个商品会有2^N−1个组合,但N稍大点计算量就非常大了,所以实际算法实现中,要利用开头提到 Apriori算法的性质进行剪枝,以减少计算量。此外,关联规则算法还有FP-Growth和Eclat等更为高效的算法,这里不再介绍,可自行了解。
参考: Apriori算法详解 、 使用Apriori算法和FP-growth算法进行关联分析