(一)Apriori算法
Apriori算法是由Agrawal 和Srikant在1994年提出,是数据挖掘的经典算法之一。
其基本的思路如下:
1)令k = 1
2)统计每个k项集的支持度,并找出频繁k项集
3)利用频繁k项集生成候选k+1项集
4)令k=k+1,重复第2)步
这里我们要思考两个问题:
- 为什么这个算法是有效的?
- 候选集的构造到底是怎么回事?
先探讨第一个问题。
Apriori算法存在两个性质:
1)任何一个频繁项集的子集也一定是频繁项集
2)任何一个非频繁项集的超集也一定是非频繁项集
如果一个数据集中存在关联规则,那么根据关联规则的性质,其必然是频繁项集,可是,频繁项集也存在频繁1项集、2项集等等,只要你项数大于2,那么就有可能存在关联规则在里面,如何很轻松愉快的并且顺滑的得到关联规则,就得看看这第一个性质。如果我找出了k最大的一个频繁项集,那么其子集也皆为频繁项集,那我直接在这个频繁项集里再慢慢去枚举不就好了。
第二个问题也是来源于这两个性质。
不妨看看上图的例子,在构建候选3项集里,为什么没有{A,C,E}?难道不是排列组合得到的吗?
答案来源于第二个性质。{A,C,E}的子集{A,E}并不是频繁项集,所以在构造候选3项集的时候,其必然不能出现。