一、Apriori算法的简介
Apriori算法指导我们,如果要发现强关联规则,就必须先找到频繁集。所谓频繁集,即支持度大于最小支持度的项集。如何得到数据集合D中的所有频繁集呢?
Apriori算法是挖掘布尔关联规则频繁项集的算法。Apriori算法利用频繁项集性质的先验知识,通过逐层搜索的迭代方法,即将K-项集用于探察(k+1)项集,来穷尽数据集中的所有频繁项集。先找到频繁项集1-项集集合L1, 然后用L1找到频繁2-项集集合L2,接着用L2找L3,知道找不到频繁K-项集,找到每个Lk需要一次数据库扫描。注意:频繁项集的所有非空子集也必须是频繁的。Apriori性质通过减少搜索空间,来提高频繁项集逐层产生的效率。Apriori算法由连接和剪枝两个步骤组成。
拿沃尔玛超市的例子举例说明关联算法的作用:沃尔玛超市的货物摆放都是有严格要求的,那么他们按哪种规则去摆放的呢?其实沃尔玛超市的研发人员通过数据分析顾客购物物品的种类,进行物品与物品之间建立联系,得到一定的规定,例如刚出生婴儿的家庭,父亲往往在购物买自己所需要的啤酒时会考虑将孩子的尿不湿顺便买下,这就构成了一定规则,在同种人群中这件事频繁发生,因此需要构建这种摆放规则从而去吸引顾客的青睐。
二、Apriori算法的手动模拟计算
这个例子举完了,那么我们是怎么通过一群购物者,每个购物者众多商品中去得到这种规则呢?也就是第一段所说的满足支持度的频繁集,我们先去创建一个小型购物数据样本集,如图所示:
我们先用手算进行模拟Apriori算法的具体实现过程:
假设我们的最小支持度阈值为2,即支持度计数小于2的都要删除。
上图每行代表购物者X买的物品清单,下图表示C1候选集: