Apriori算法是挖掘最简单频繁模式的方法(单维度,单层,布尔频繁项集)。介绍算法前先介绍两个概念Support和Confidence翻译成中文就是支持度和置信度(两个值都是百分数),我在这里举个例子让大家理解这两个概念:假设有10个球,白色的球有3个,那么白球的支持度就是30%,而置信度则类似于概率里面的概念P(A|B) 。下面就开始介绍算法:
该算法的目的就是挖掘频繁模式所以会有一个support的阀值,低于这个繁阀值的集合就会被抛弃。该算法时前验算法(整个算法最关键的地方就是利用:一个频繁模式的任意一个子集也是频繁项集,换句话说就是只有子集是频繁项集那么才有探索的价值)
(频繁模式内的类型按照某种顺序排序)
第一次扫描获取每个类型的Support,将Support低于阀值的删去(就是去枝:删除没有价值的部分)
下面是循环执行:
1.连接:简单的来说就是从原本含有k个元素的频繁模式拓展到含k+1个元素的频繁模式,那么我们的任务就是让添加的这个元素是让k个元素的频繁模式拓展成功的最有可能的元素。我们反过来考虑如果已经拓展成功假设原来的频繁模式是a1,a2,...ak拓展后增加了a(k+1),那么在k的频繁项集中必然有a1,a2,a3....a(k-1),a(k+1)。那么最有效的选择就是将前k-1个元素都相同的频繁模式进行合并这样我们就完成了连接
2.去枝:连接完成不代表着这个模式就是频繁模式,我们现在要做的就是扫描事务表判断是否是频繁模式。如果不是就把该模式删除
建议:Support和Confidence这两个概念比较重要,而Apriori算法其实就是就是一个简单的前验算法,主要是如何来提高效率