啤酒与尿布的故事
传说二十世纪90年代,美国沃尔玛超市的销售管理人员在分析销售订单时发现,啤酒与尿布这两件看起来毫不关联的商品竟然经常会出现在同一个订单中。后来跟踪调查发现,原来美国的年轻夫妇一般在周五晚上妻子会安排丈夫去超市购买尿布,而丈夫在购买尿布时总会忍不住顺便给自己买上几罐啤酒,这就是为什么啤酒和尿布这两件看起来毫不关联的商品经常会出现在同一个购物篮中。这个故事至今仍是大数据挖掘中津津乐道的经典案例。因为它揭示了数据中两个事物之间的关联性问题,也就是我们今天也重点介绍的——关联规则(分析)。
关联分析的目标:
1.发现频繁项集:发现满足最小支持度的所有项集;
2.发现关联规则:从频繁项集中提取所有符合置信度要求的规则(提升度要求)。
Apriori算法--发现频繁项集的一种方法
原理:如果一个项集是频繁项集,则它的所有非空子集都是频繁项集; 如果一个集合不是频繁项集,则它的所有父集都不是频繁项集。
Apriori算法实现过程如下:
举个栗子,假设某电商会售卖ABCD四种商品,历史上共5笔订单,分别卖出{A,B,C}, {B,C,D}, {A,B,C,D}, {A,C}, {C} 如何来实施“关联规则”推荐呢?
接下来我们需要重点介绍几个概念,第一个是支持度。什么是支持度(support)?如表中共5笔订单,3笔包含商品A,A的支持度是3/5。
同理很容易计算出,各个商品的支持度。从支持度可以看出,Best Seller是商品C,100%的订单中都包含商品C,C的支持度是1。除了单个商品,组合商品也有支持度。
可以看到表中共5笔订单,2笔同时包含AB,即A->B的支持度是2/5。
第二个是置信度,什么是置信度(confidence)?已知购买了A,有多大概率购买了B,称A -> B的置信度。表示这条规则有多大程度值得可信。
可以看到,商品A有3次购买,这3次中有2次购买了B,A->B的置信度是2/3。
置信度公式:confidence(A->B) = support(A->B)/support(A)= (2/5)/(3/5) = 2/3,置信度的本质是条件概率。这里需要注意的是,X->Y与Y->X的置信度不一定相等。
上图中,confidence(B->C)=1,即如果用户购买商品B,100%会买C,那是不是意味着,如果用户将商品B放入购物车,就可以向用户推荐商品C呢?显然不是的,虽然购买商品B,100%会买C,但直接推荐C,用户也100%会买C,会发现,购买B与购买C是独立事件,用户买不买C和用户买不买B没有直接关系。这里的关联规则推荐,并没有比直接推荐获取更好的效果。
所以接下来我们要介绍第三个重要概念,那就是提升度,什么是提升度(lift)?
提升度公式:lift(A->B) =confidence(A->B)/support(B),大于1,说明有效,即在购买A时推荐B,比直接推荐B,效果更好;等于1,说明无关,即购买A与购买B,两者是独立事件;lift(A->B) < 1,即该关联规则推荐是负相关的。
总结一下:
一、关联规则A->B推荐,目标是在“用户将A放入购物车时,推荐B”比“单独推荐B”获取更好的效果;
二、1、A->B的支持度,是用户同时购买A和B概率;
2、A->B的置信度,是用户购买A的同时,有多大概率购买B(条件概率);
3、A->B的提升度,是“用户购买A的同时,有多大概率购买B”与“直接购买B的概率”的比值:
(1)这个值大于1时,说明A->B有正向效果;
(2)这个值等于1时,说明A和B是独立事件;
(3)这个值小于1时,说明A->B有负向效果。