国际权威的学术会议IEEE International Conference on Data Mining (ICDM) 评选出了数据挖掘领域的十大经典算法,他们分别是:C4.5、kMeans、SVM、Apriori、EM、PageRank、AdaBoost、KNN、Naive Bayes以及CART。今天就让我们共同探讨一下十大算法之一Apriori的具体应用。
#Apriori 算法简介
在算法学习过程中,有个经典的例子,当美国超市把纸尿布和啤酒放在一起的时候,两样商品的销售额双双上升。从表面上看,两者并没有直接关系,但却暗藏着一个鲜为人知的逻辑。美国消费者购买纸尿布的往往是男性消费者,而他们大多数都是啤酒爱好者。当然这是一个教科书上的故事,但是在如何提升销售量的问题上,把两件或多样的商品结合起来销售,提升其中一种或多种产品的销售额,成为了研究的热点,而其核心问题就是要找出两件物品之间的关联规则,这也是我们今天的主角Apriori模型[1]。
一. Apriori概述
Apriori在拉丁语中指“来自以前”。当定义问题时,通常会使用先验知识或假设,这被称作“一个先验”(a priori),Apriori算法的名字正是基于这样的事实:选择物品间的关联规则也就是要寻找物品之间的潜在关系。
举例:
1. 找出频繁一起出现的物品集的集合,我们称之为频繁项集。比如一个超市的频繁项集可能有(啤酒+尿布,纸巾+湿巾,苹果+西瓜)
2. 在频繁项集的基础上,使用Apriori关联规则算法找出其中物品的关联结果。
>综上所述,需要先找频繁项集,再根据关联规则找关联物品,对于频繁项集的筛选原因有两点:
1.若是商品并不是购买频次高的商品,则在统计学上,其购买次数与其他物品的关系无法得到验证。
2.考虑到若是有1万个商品,若对购买频次不高加入模型中,会大大影响模型的使用效率。所以从两方面来说,先找频繁项集,再根据关联规则找关联物品将极大帮助我们提高工作的效率。
二. Apriori算法基础
在介绍Apriori算法之前,首先要了解支持度、置信度以及提升度的基本概念。
以20条商品购买记录数据为例:
01 支持度(Support)
支持度可以理解为物品当前流行程度。
◎支持度=包含物品A的记录数量/总的记录数量
苹果的支持度:16/19
02 置信度(Confidence)
置信度是指如果购买物品A,有较大可能购买物品B。
◎置信度(A->B)=包含物品A和B的记录数量/包含 A 的记录数量
置信度(苹果→玉米): 支持度(苹果→玉米)/支持度(苹果)=9/10
03 提升度(Lift)
提升度指当销售一个物品时,另一个物品销售率会增加多少。
◎提升度(A->B)=置信度(A->B)/(支持度A)
苹果–>玉米的提升度为:
支持度(玉米): 玉米的支持度=16/19
置信度(苹果→玉米): 支持度(苹果→玉米)/支持度(苹果)=9/10
提升度(苹果→玉米): 置信度(苹果→玉米)/支持度(玉米)=(9/10)/(16/19)
其中支持度将帮助我们确定频繁项集,而置信度和提升度将会基于频繁项集在下一篇寻找物品关联规则的时候使用。
三.Apriori算法特点
Apriori算法首先根据物品间的支持度找出物品中的频繁项集。通过上面我们知道,支持度越高,说明物品越受欢迎。这个支持度是我们主观决定的,我们需要将这个参数传入到模型中,然后Apriori会返回支持度不小于预先设定的一个支持度阈值的那些频繁项集。
而后,置信度通过之前给出的计算规则进行计算,对于其规则苹果⟹玉米计算出其支持度(玉米)与置信度(苹果⟹玉米)。置信度越高,苹果⟹玉米存在关联的可能性越大。提升度则是衡量苹果⟹玉米关系强弱的标准。简单来说,置信度是判断两者是否存在相关,提升度是衡量关系的强弱。然而如果用引擎搜索所有组合,一旦数据量很大时,所产生的运算量无法估计,所以Apriori给出了一个解决方案即:某个项集是频繁的,那么它的所有子集也是频繁的;另一种解释是:若某个项集是非频繁的,那么它的所有子集也是非频繁的,这个推论将大大减少我们的运算时间。有了这些基础,下面进入实战环节。
算法实现,待补充。