Apriori algorithm是关联规则里一项基本算法。是由Rakesh Agrawal和Ramakrishnan Srikant两位博士在1994年提出的关联规则挖掘算法。关联规则的目的就是在一个数据集中找出项与项之间的关系,也被称为购物蓝分析 (Market Basket analysis),因为"购物蓝分析"很贴切的表达了适用该算法情景中的一个子集。
关于这个算法有一个非常有名的故事:"尿布和啤酒"。故事是这样的:美国的妇女们经常会嘱咐她们的丈夫下班后为孩子买尿布,而丈夫在买完尿布后又要顺 手买回自己爱喝的啤酒,因此啤酒和尿布在一起被购买的机会很多。这个举措使尿布和啤酒的销量双双增加,并一直为众商家所津津乐道。
- 图解
- 关联规则概念介绍
资料库(Transaction Database):存储着二维结构的记录集。定义为:D
所有项集(Items):所有项目的集合。定义为:I。
记录 (Transaction ):在资料库里的一笔记录。定义为:T,T ∈ D
项集(Itemset):同时出现的项的集合。定义为:k-itemset(k项集),k-itemset ? T。除非特别说明,否则下文出现的k均表示项数。
支持度(Support):定 义为 supp(X) = occur(X) / count(D) = P(X)。
1. 解释一:比如选秀比赛,那个支持和这个有点类似,那么多人(资料库),其中有多少人是选择(支持)你的,那个就是支持度;
2. 解释二:在100个人去超市买东西的,其中买苹果的有9个人,那就是说苹果在这里的支持度是 9,9/100;
3. 解释三:P(X),意思是事件X出现的概率;
4. 解释四:关联规则当中是有绝对支持度(个数)和相对支持度(百分比)之分的。
置信度(Confidence/Strength): 定义为 conf(X->Y) = supp(X ∪ Y) / supp(X) = P(Y|X)。
候选 集(Candidate itemset):通过向下合并得出的项集。定义为C[k]。
频繁集(Frequent itemset):支持度大于等于特定的最小支持度(Minimum Support/minsup)的项集。表示为L[k]。注意,频繁集的子集一定是频繁集。
提升比率(提升度Lift):lift(X -> Y) = lift(Y -> X) = conf(X -> Y)/supp(Y) = conf(Y -> X)/supp(X) = P(X and Y)/(P(X)P(Y))
经过关联规则分析后,针对某些人推销(根据某规则)比盲目推销(一般来说是整个数据)的比率,这个比率越高越好,我们称这个规则为强规则;
剪枝步
只有当子集都是频繁集的候选集才是频繁集,这个筛选的过程就是剪枝步;
- More information about the concepts of arules!
1、项集(Itemset):是一组项,而每一个项都是一个属性值。在购物篮分析示例中,项集包含一组产品,例如Cake、Pepsi、Milk。在研究客户的人口统计信息示例中,项集包含一组属性值,比如{Gender=‘Male‘,Education=‘Bachelor‘}。每个项集都有一个大小,该大小表示项集中包含的项的数目。项集{Cake、Pepsi、Milk}的大小是3。
频繁项集是在数据集中出现频率相当高的那些项集。项集出现频率的阈值是用"支持度"来定义的。
2、支持度(Support):支持度用来度量一个项集的出现频率。项集{A,B}的支持度是同时包含A和B的事务的总个数。即:
Support({A,B})=NumberofTransactions(A,B)
Minimum_Support是一个阈值参数,必须在处理关联模型之前指定该参数。该参数表示用户只对某些项集和规则感兴趣,这些规则表示数据集的最低支持度。它是用于对项集进行限制,而不是对规则进行限制。
3、概率(Probability):也叫置信度(Confidence),是关联规则的属性。规则A=>B要概率是使用{A}的支持度除项集{A,B}的支持度来计算的。公式如下:
Probability(A=>B)=Probability(B|A)=Support(A,B)/Support(A)
也等于NumberofTransactions(A,B)/TotalNumberofTransactions
Minimum_Probability是一个阈值参数,必须在运行算法之前指定该参数.它表用户只对某些规则感兴趣,这些规则摇拥有比较高的概率,而不是最小的概率.Minimum_Probability对项集没有任何影响,它影响的是规则.
3、重要性(Importance):在一些文献中也称为兴趣度分数或者增益。重要性可以用于度量项集和规则。
项集的重要性是使用以下公式来定义的:
如果Importance=1,刚A和B是独立的项,它表示购买A和购买B是两个独立的事件。如果Importance<1,刚A和B是负相关的,这表求如果一个客户购买A了,刚他购买B是不太可能发生的。如果Importance>1,刚A和B是正相关的。这表示如果一个客户购买了A,刚他也可能购买B。
规则的重要性是使用以下公式计算的:
Importance(A=>B)=Log(P(B|A)/P(B|not A))
重要性为0,表示A和B之间没有任何关联。正的重要性分数表示当A为真时,B的概率会上升。负的重要性分数表示,当A为真时,B的概率会下降。
- 简单例子
- R实现