技术博客

实例讲解“啤酒+尿布”是怎样计算出来的

先简单介绍一下啤酒+尿布的故事:某个超市发现,在周末购买了儿童尿布的顾客,有很大一部分同时购买了啤酒;超市工作人员就尝试了一下:把尿布摆放在距离啤酒想对较近的位置,结果真的促进了两种商品的销售。

这个故事中用到了一种算法,叫做关联规则。还是拿🌰来说:

只有少量数据时的示例:

假设你开了一个小超市,里面就买四种商品(辣么多😺):A、B、C、D

你发现很多顾客同时购买多件产品,以同时购买两件为例,总共有:AB、AC、AD、BC、BD、CD种组合。

把某一天的销售记录拿出来并整理一下:当天总共有100张小票,其中有51张小票显示:用户同时购买了A和B两种商品,这就意味着有51%的用户倾向于同时购买A和B。也就是两者共现的概率,这个值是来判断一条规则是否值得去深挖的判定条件,如果太小就算了。

我们可以这样去理解:有51%的用户在购买A的同时会购买B,这里的51%就叫做支持度,也称作相对支持度,而51就是绝对支持度咯。

同时还发现,另外有29人购买了商品A确没有购买B,也就是说所,总共有29+51=80位顾客购买了商品A,这80位顾客中有51位同时还购买了B:

也就是说有63.75%的顾客购买了A的同时会购买了B,这个63.75%叫做置信度。也就是A发生情况下B发生的条件概率,在这里就是购买了A的用户再购买B商品这条规则的可靠程度。

现在你就得到了一条关联规则:A->B:支持度51%,置信度63.75%,

同样的方法你还可以得到其他的规则,比如:

B->A:支持度XX%,置信度XX%

A->C:支持度XX%,置信度XX%

....

我们选择支持度和置信度都比较高的,比如就选A->B,假定A代表啤酒,B代表尿布,由于它们之间有着非常高的关联关系(置信度63.75%说明二者相关性很高,支持度51%说明此条规则适用性比较强),因此我们可以推测购买了啤酒的顾客就会购买尿布了(有63.75%的可能会购买)。

再回顾一下刚才的规则:

啤酒->尿布:支持度:51%;置信度:63.75%

这意味着:

购买啤酒的人中,同时购买尿布的概率为63.75%:说明二者关联性很强,要想办法让购买啤酒的顾客能很方便的找到尿布。

而所有顾客中,同时购买啤酒和尿布的顾客占51%:说明二者很畅销要多多备货。

小测验:

A->B和B->A这两条规则的支持度和置信度一样吗?

答案:

支持度是一样的,但是置信度却不一定。

因为支持度是二者共现的概率,因此是一样的,但是置信度是条件概率:P(A|B)不一定等于P(B|A)。

数据量较大时的情形:

上面的例子中只有四个产品,我们可以很轻松的统计出来,但是如果是一个有十万种商品的大超市呢:

仅两两组合竟然就有近50亿种可能!!!还是交给“愚公”吧😓,这真是要“子子孙孙无穷匮😢”了。

怎么办呢?答案就是使用合适的算法😊!!

比如说有些商品一年都卖不了几件(这意味着支持度会极小),那么我们直接就不去关心与之相关的商品组合了,一件这样的商品就可以减少10万个(确切说是10万减1个)组合😺!

基于此理念,发展出了两种常用的关联规则算法:Apriori算法和FP-Growth算法,可以极大的提高规则提取的效率(因为大量影响力小的数据在计算前就被忽略掉了)。

顺便说一下,FP-Growth算法是毕业于中国科技大学的韩家炜老师提出来的,是不是可以稍稍自豪一下了😄。

关联规则有什么用呢?

  • 首先可以做决策支持,就像第二个例子中说的,如果是商家挖掘出了关联规则,可以通过两种或者多种商品捆绑销、同时售价格优惠的策略来提高销售量。
  • 再者可以做推荐,比如你在某东或者某猫上查看某件商品时,下面往往会有提示:查看了此商品的用户同时还看了...然后列出一大堆其他商品,靠这种方式激发你购买的欲望。(不过请注意,使用这种算法进行推荐,所有人看到的结果都是一样的,更高级的算法是做个性化推荐,也就是不同的人看到的商品都是根据自己的兴趣计算出来的,通俗来说就是“千人千面”)

关于如何做到个性化,或者更深入地了解关于Apriori算法和FP-Growth算法的详细讲解...

敬请期待😄

识别二维码,关注“格物课堂”微信公众号

2022-2023 Copyright © 深圳市意行科技开发有限公司 - All Rights Reserved.
深圳市南山区学苑大道1227号 
粤ICP备17013574号