关联规则(一)

        基于关联规则的推荐,是推荐系统中常用的算法之一;只要我们能将数据转换成Transaction(交易),就可以做购物篮分析。

1.算法背景

        为什么将关联规则与购物篮分析放在一起,这将要从该算法最早出现的案例说起!这便是大家耳熟能详的啤酒与尿布的故事。

        “啤酒与尿布”的故事产生于 20 世纪 90 年代的美国沃尔玛超市。沃尔玛的超市管理人
员分析销售数据时发现了一个令人难于理解的现象:在某些特定的情况下,“啤酒”与“尿
布”两件看上去毫无关系的商品会经常出现在同一个购物篮中
,这种独特的销售现象引起了
管理人员的注意,并进行了后续的调查。
        原来,美国的妇女通常在家照顾孩子,所以她们经常会嘱咐丈夫在下班回家的路上
为孩子买尿布,而丈夫在买尿布的同时又会顺手购买自己爱喝的啤酒。这样就会出现啤酒与
尿布这两件看上去不相干的商品经常会出现在同一个购物篮的现象。如果年轻的父亲在卖场只能买到两件商品之一,则他很有可能会放弃购物而去另一家商场,直到可以一次同时买到啤酒与尿布为止。沃尔玛发现了这一独特的现象,开始在卖场尝试将啤酒与尿布摆放在相同的区域,让年轻的父亲可以同时找到这两件商品,并很快地完成购物;而沃尔玛超市也可以让这些客户一次购买两件商品、而不是一件,从而获得了很好的商品销售收入。

        一句话概括上面的故事:沃尔玛在分析销售记录时,发现啤酒和尿布经常一起被购买,于是他们调整了货架,把两者放在一起,结果真的提升了啤酒的销量。那么具体的过程是如何分析的呢?

2.关联分析问题

        首先,该商品组合会经常出现,我们对其分析才有价值,较低概率的事件没有分析的意义。专业术语,支持度。 支持度:指的是某个商品组合出现的次数与总次数之间的比例,是个百分比。支持度越高,代表这个组合出现的频率越大。

以下面的5个订单/购物篮为例:

订单编号

购买的商品

1

牛奶 1、面包 2、尿布 3

2

可乐4、面包2、尿布3、啤酒5

3

牛奶1、尿布3、啤酒5、鸡蛋6

4

面包2、牛奶1、尿布3、啤酒5

5

面包2、牛奶1、尿布3、可乐4

可以尝试计算每一件商品或每一个组合的支持度。

        例 牛奶   4/5=0.8      牛奶+面包    3/5=0.6

        那虽然组合的支持度很高,那么依靠A推送B的可靠性有多大?这就引出了置信度,即在购买A的情况下,购买B的概率有多大。【第3部分会补充相应的数学理论】

        依然是上面的购物篮,置信度(牛奶→面包) 3/4=0.75      置信度(面包→牛奶) 3/4=0.75  除此之外,我们发现置信度(可乐→尿布)=1  !!!那么我们需要在用户购买可乐的时候,推荐尿布吗???

        此时就出现了第3个比较重要的概念,提升度。提升度:商品A的出现,对商品B的出现概率提升的程度。公式:提升度(A→B)=置信度(A→B)/支持度(B)

当然,我们要在商品A出现的时候,推荐商品B,肯定是希望A能够对B出现的概率有所提升。即置信度>支持度。总结为:

                                提升度(A→B)>1:代表有提升;
                                提升度(A→B)=1:代表有没有提升,也没有下降;
                                提升度(A→B)<1:代表有下降。

        综上,其实我们的关联规则推荐就是要找到出现概率较高的组合,且其中一个或多个元素的出现,对其它元素的出现会有概率的提升。   这个“其它元素”就是我们挖掘出来的要进行推荐的元素。

        通过上述讲解,我们不难理解关联规则推荐的相关原理了,接下来,我们进行一下总结,也就是这篇文章的第三部分,也是这篇文章的最后一个部分:Apriori算法原理。

3.Apriori算法原理

        在上面的讲解中,我们一方面要找到出现概率较高的组合[频繁项集的概念],另一方面我们需要其它元素对推荐元素的出现概率的提升。这要求我们在模型训练的时候,需要规定最小的支持度和最小的提升度。

项集:其实就是物品的集合;频繁项集:支持度大于等于最小支持度阈值的项集。对应的还有非频繁项集。

Apriori算法就是查找频繁项集的过程。

同样的还是上面的订单,我们来查找一下频繁项集,首先我们设置最小支持度0.5。

订单编号

购买的商品

1

牛奶 1、面包 2、尿布 3

2

可乐4、面包2、尿布3、啤酒5

3

牛奶1、尿布3、啤酒5、鸡蛋6

4

面包2、牛奶1、尿布3、啤酒5

5

面包2、牛奶1、尿布3、可乐4

此处,为方便统计商品进行ID的设置。

最小项集[包含一个元素]

商品项集支持度
14/5
24/5
35/5
42/5
53/5
6

1/5

标红的为非频繁项集,其所在的更多元素的项集,支持度会小于等于它的项集。故它所在的更多元素的项集排除了4,6

二项集

故1,5     2,5   为非频繁项集

三项集

排除掉含有4和6的,排除掉同时含1,5或2,5,三项集只有1,2,3

商品项集支持度
1,2,33、5

 以上即是Apriori算法的流程

Step1,K=1,计算K项集的支持度;
Step2,筛选掉小于最小支持度的项集;
Step3,如果项集为空,则对应K-1项集的结果为最终结果。
否则K=K+1,重复1-3步。

        其中涉及到的数学原理以及主要算法实现,我将在接下来的文章中继续讲述。希望我们相互学习,共同进步。

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

算法打怪中

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值