先简单介绍一下啤酒+尿布的故事:某个超市发现,在周末购买了儿童尿布的顾客,有很大一部分同时购买了啤酒;超市工作人员就尝试了一下:把尿布摆放在距离啤酒想对较近的位置,结果真的促进了两种商品的销售。
这个故事中用到了一种算法,叫做关联规则。还是拿🌰来说:
只有少量数据时的示例:
假设你开了一个小超市,里面就买四种商品(辣么多😺):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算法的详细讲解...
敬请期待😄
识别二维码,关注“格物课堂”微信公众号