2.4.3 关联规则典型算法
可以根据产品交易数据集合特性选用相应的关联规则算法进行规则分析,下面介绍穷举算法和Apriori算法。
1)穷举算法
穷举算法就是通过穷举产品项集的所有组合,并测试每个组合是否满足条件,从而获取产品间的关联规则。
例如,已知一个商品编号的总项集为{1, 2, 3},那么所有可能的组合如下:
{1},{2}
{1},{3}
{2},{3}
{1},{2,3}
{2},{1,3}
{3},{1,2}
{1,2,3}(https://www.daowen.com)
共有7种组合,分别检查以上各种组合,在每一种组合上找出满足支持度和置信度要求的关联规则。
穷举算法需要的时间复杂度为O(2^N),其中N为商品项集的元素个数。对于普通的超市,其商品的项集数也在1万以上,用指数时间复杂度的算法不能在可接受的时间内解决问题。因此穷举算法应用场合是非常受限的。
2)Apriori算法
Apriori算法是一种最有影响的挖掘布尔关联规则频繁项集的算法。其核心是基于两阶段频集思想的递推算法。该关联规则在分类上属于单维、单层、布尔关联规则。在这里,所有支持度大于最小支持度的项集称为频繁项集,简称频集。
该算法的基本思想是:首先找出所有的频集,这些项集出现的频繁性至少和预定义的最小支持度一样。然后由频集产生强关联规则,这些规则必须满足最小支持度和最小置信度。最后使用第一步找到的频集产生期望的规则,产生只包含集合的项的所有规则,其中每一条规则的右部只有一项,这里采用的是中规则的定义。一旦这些规则被生成,那么只有那些大于用户给定的最小置信度的规则才被留下来。为了生成所有频集,使用了递推的方法。
Apriori算法采用了逐层搜索的迭代的方法,算法简单明了,没有复杂的理论推导,也易于实现。但其有一些难以克服的缺点:
①对数据库的扫描次数过多。
②Apriori算法会产生大量的中间项集。
③采用唯一支持度。
④算法的适应面窄。