Press "Enter" to skip to content

老板问我,什幺是关联规则推荐?

工程架构方向的程序员,看到推荐/搜索/广告等和算法相关的技术,心中或多或少有一丝胆怯。但认真研究之后,发现其实没有这幺难。

 

今天给大家介绍下推荐系统中的“关联规则推荐”,保证大伙弄懂。

 

画外音:可以看excel截图,或者看公式,大伙结合自己能够理解的程度自取。

 

一、概念

 

 

什幺是关联规则 ( Association Rules ) ?

 

答 :关联规则是数据挖掘中的概念, 通过分析数据,找到数据之间的关联 。电商中经常用来分析购买物品之间的相关性,例如,“购买尿布的用户,有大概率购买啤酒”,这就是一个关联规则。

 

画外音:如果把买尿布记作A,买啤酒记作B。

 

“买尿布的用户有较大概率买啤酒”这个关联规则记作A -> B。

 

什幺是关联规则推荐 ( Association Rule Based Recommendaion ) ?

 

答 :顾名思义,利用关联规则,来实施推荐。关联规则推荐的目标,是希望达到

 

“将尿布放入购物车之后,再推荐啤酒”

 

 

“直接推荐啤酒”

 

获取有更好的售卖效果 。

 

画外音:这个目标非常非常重要,有些场景,或许直接推荐更有效。

 

关联规则推荐的 典型应用 :

 

(1)线下,可以将尿布和啤酒放在一起;

 

(2)线上,可以在用户将尿布放入购物车后,立刻推荐啤酒;

 

二、如何实施

 

假设某电商会售卖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。

 

画外音:全局总共4种商品,假设关联规则只关联2种商品,则一共需要计算C(4,2)共6种组合商品的支持度{AB,AC,AD,BC,BD,CD}。

 

支持度评估商品包含在订单中的“概率”,一个订单,有多大概率包含这个商品。

 

画外音:一般会先对支持度高的商品实施推荐,如果先实施优化支持度低的商品,即使推荐效果翻倍,总体订单提升效果也会很有限。

 

第三步:计算关联规则的置信度

 

什幺是置信度 (confidence) ?

 

答 :已知购买了A,有多大概率购买了B(即同时购买了AB),称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

 

这也相对比较好理解,

 

(1)分子: support(A->B) 是同时购买AB的比例;

 

(2)分母: support(A) 是只购买A的比例;

 

二者相除,得到“购买了A,有多大概率购买B”,置信度的本质是 条件概率 。

 

这里需要注意的是,X->Y与Y->X的置信度不一定相等。

 

 

如上图:

 

B->C的置信度是1,买商品B时,100%会买C,

 

C->B的置信度是3/5,买商品C时,只有3/5买了B。

 

画外音:

 

support(B->C)=3/5

 

support(C->B)=3/5

 

confidence(B->C)=support(B->C)/support(B)=1

 

confidence(C->B)=support(C->B)/support(C)=3/5

 

公式是给程序看的,excel表格是给人看的,结果都一样。

 

第四步:计算关联规则的提升度

 

上一个例子里,confidence(B->C)=1,即:如果用户购买商品B,100%会买C,那是不是意味着,如果用户将商品B放入购物车,就可以向用户推荐商品C呢?

 

答 :不是。

 

我们来回顾一下,关联规则推荐的目标,是希望达到

 

“将尿布放入购物车之后,再推荐啤酒”

 

 

“直接推荐啤酒”

 

获取有更好的售卖效果 。

 

 

虽然购买商品B,100%会买C

 

画外音: confidence(B->C)=1

 

但直接推荐C,用户也100%会买C

 

画外音: support(C)=1

 

会发现, 购买B与购买C是独立事件 ,用户买不买C和用户买不买B没有直接关系。这里的关联规则推荐, 并没有比直接推荐获取更好的效果 。

 

用什幺指标来评估关联规则推荐的效果呢?

 

答 :提升度。

 

什幺是提升度(lift)?

 

答 :A->B关联规则推荐,与直接推荐B,的比值,可以用来评估推荐效果:

 

(1)大于1,说明有效,在购买A时推荐B,比直接推荐B,效果更好;

 

(2)等于1,说明无关,购买A与购买B,是独立事件;

 

(3)小于1,说明负相关,购买A时推荐B,效果还不如直接推荐B;

 

画外音:又有公式了

 

lift(A->B) =confidence(A->B)/support(B)

 

这也相对比较好理解,

 

(1)分子: confidence(A->B) ,购买A时,有多大概率同时购买B;

 

(2)分母: support(B) ,有多大概率直接购买B;

 

二者相除,得到效果是否更好。

 

还是通过两个直观的例子来看。

 

 

来看看关联规则A->B,与直接推荐B,效果有没有提升:

 

(1)有3个订单购买A,这3个订单中有2个订单购买了B,所以A->B的置信度是2/3,即 买了A有 2/3 的概率会买B;

 

(2)直接推荐B的话,5个订单中有3个购买了B,所以B的支持度是3/5, 即有 3/5 的概率会直接买B;

 

会发现,关联规则推荐的 效果更好 。

 

画外音:根据公式

 

confidence(A->B) =support(A->B)/support(A) = 2/3

 

support(B) = 3/5

 

lift(A->B) =confidence(A->B)/support(B) = 10/9

 

lift(A->B) > 1

 

故关联规则推荐是正相关的。

 

 

来看看关联规则A->D,与直接推荐D,效果有没有提升:

 

(1)有3个订单购买A,这3个订单中有1个订单购买了D,所以A->D的置信度是1/3,即 买了A有 1/3 的概率会买D;

 

(2)直接推荐D的话,5个订单中有2个购买了B,所以D的支持度是2/5,即 有 2/5 的概率会直接买D;

 

会发现,关联规则推荐的 效果很差 ,还不如直接推荐。

 

画外音:根据公式

 

confidence(A->D) =support(A->D)/support(A) = 1/3

 

support(D) = 2/5

 

lift(A->D) = confidence(A->D)/support(D)= 5/6

 

lift(A->B) < 1

 

故关联规则推荐是负相关的。

 

三、总结

 

(1)关联规则A->B推荐,目标是,在“用户将A放入购物车时,推荐B”比“单独推荐B”获取更好的效果;

 

(2)A->B的 支持度 ,是用户同时购买A和B概率;

 

(3)A->B的 置信度 ,是用户购买A的同时,有多大概率购买B;

 

(4)A->B的 提升度 ,是“用户购买A的同时,有多大概率购买B”与“直接购买B的概率”的比值:

 

– 这个值大于1时,说明A->B有正向效果

 

– 这个值等于1时,说明A和B是独立事件

 

– 这个值小于1时,说明A->B有负向效果

 

1分钟很快就过了,希望大家能有收获。

 

 

Be First to Comment

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注