现在商家通过查看哪些商品经常在一起购买,来了解用户的购买行为。这种从数据海洋中抽取的知识可以用于商品的定价、市场促销、存货管理等环节。从规模数据集中寻找物品间的隐含关系被称作关联分析或者关联规则学习。下面首先详细讨论关联分析,然后讨论Apriori原理,Apriori算法正式基于该原理得到的。接下来创建函数频繁项集高效发现的函数,然后从频繁项集中抽取出关联规则。
1.1 关联分析
关联分析是一种在大规模数据集中寻找有趣关系的任务。这些关系可以有两种形式:频繁项集或者关联规则。频繁项集是经常出现在一起的物品的集合;关联规则暗示两种物品之间可能存在很强的关系。例如经典的尿布—葡萄酒的关联规则,这意味着如果有人购买了尿布,那么他很可能也会买葡萄酒。使用频繁项集和关联规则,商家可以更好地了解他们的顾客。尽管大部分关联规则分析的实例来自零售业,但该技术同样可以用于其他行业,比如网站流量分析以及医药行业。
一个项集的支持度被定义为数据集中包含该项集的记录所占的比例。支持度是针对项集来说的,因此可以定义一个最小支持度,而只保留满足最小支持度的项集。
可信度或者置信度是针对一条诸如{尿布}—{葡萄酒}的关联规则来定义的。这条规则的可信度被定义为“支持度({尿布,葡萄酒})/支持度({尿布})”,这意味着对于包含“尿布”的所有记录中,我们的规则对其中75%的记录适用。
1.2 Apriori原理
要获得每种可能集合的支持度需要不断重复统计,而随着物品数的增加,遍历次数会急剧增长。为了降低所需的计算时间,研究人员提出Apriori原理。它可以帮我们减少可能感兴趣的项集。它说如果某个项集是频繁的,那么它的所有子集也是频繁项,这个原理直观上并没有什么帮助,但是如果反过来看就有用了,也就是说如果一个项集是非频繁集,那么它的所有超集也是非频繁的。
1.3 使用Apriori算法来发现频繁集
关联分析的目标包括两项:发现频繁项集和发现关联规则。首先需要找到频繁项集,然后才能获得关联规则。本节将只关注于发现频繁项集。
Apriori算法是发现频繁项集的一种方法。Apriori算法的两个输入参数分别是最小支持度和数据集。1.该算法首先会生成所有单个物品的项集列表,接着扫描交易记录来查看哪些项集满足最小支持度要求,哪些不满足最小支持度的集合会被去掉;2.然后对剩下来的集合进行组合以生成包含两个元素的项集,接着再重新扫描交易记录,去掉不满足最小支持度的项集。该过程重复进行直到所有项集都被去掉。
程序清单1-1:Apriori算法中的辅助函数
def loadDataSet():
return [[1,3,4],[2,3,5],[1,2,3,5],[2,5]]
第一个函数loadDataSet()创建了一个用于测试的简单数据集。
def