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

工程架构方向的程序员,看到推荐/搜索/广告等和算法相关的技术,心中或多或少有一丝胆怯。但认真研究之后,发现其实没有这么难。
今天给大家介绍下推荐系统中的“关联规则推荐”,保证大伙弄懂。
画外音:可以看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)关联规则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分钟很快就过了,希望大家能有收获。

架构师之路-分享可落地的技术文章

相关文章

架构师之路,20年干货精选

 

老板问我,什么是协同过滤?

老板问我,什么是基于内容的推荐?

老板问我,没有历史行为记录,怎么做推荐?

 

都看到这儿了,不点个赞吗老板问我,什么是关联规则推荐?

发布者:糖太宗,转载请注明出处:https://www.qztxs.com/archives/science/technology/5769

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022年5月10日 下午10:16
下一篇 2022年5月10日 下午10:19

相关推荐

  • TRS漏洞整理 (转发)

      0x00 前言 TRS北京拓尔思信息技术股份有限公司,其业务系统主要应用于政府、教育、企业等领域,漏洞较多系统有WCM(内容管理系统)、WAS(文本检索系统)、IDS(身份管理系统)。好多客户用到这个,记录一下   0x01 WCM内容管理系统 1.1 WCM5.2~WCM6.5存在SQL注入 首先是这个页面,http://xx.xx...

    技术 2022年5月28日
    12500
  • 解决某宝、某鱼等淘系App无法抓包问题

    使用Charles、Fiddle等抓包工具对淘系App进行抓包时,你会发现总是抓不到包,出现请求不走Charles代理的情况。这是因为淘系app底层网络通信的协议并不是普通的http协议,而是自己实现的一套私有协议Spdy。 通过对App反编译破解后分析发现,部分接口由于使用了spdy协议,导致无法抓包。 所以我们只要通过hook将是否使用spdy返回fal...

    2022年5月7日
    21500
  • 一次搞透,面试中的数1问题的五种方法!

    面试中,除了TopK,是否被问过:求一个正整数的二进制表示包含多少个1? 画外音:姊妹篇《一次搞透,面试中的TopK问题!》。   例如: uint32_t i=58585858; i的二进制表示是: 0000 0011 0111 1101 1111 0011 0000 0010 于是,i的二进制表示包含15个1。   到底有几种方法,这些思路里蕴含的优化思...

    技术 2022年5月11日
    1900
  • java面试字节跳动——字节码

    1.前言 先来个定义:Java字节码是一组可以由Java虚拟机(JVM)执行的高度优化的指令,它被记录在Class文件中,在虚拟机加载Class文件时执行。 说大白话就是,字节码是Java虚拟机能够看明白的可执行指令。 前面的文章中已经强调了很多次了,Class文件不等于字节码,为什么我要一直强调这个事情呢? 因为在绝大部分的中文资料和博客中,这两个东西都被...

    2022年5月18日
    4600
  • 究竟为啥总在凌晨上线,如何进行无损发布

    为什么很多互联网公司升级系统,选择在晚上上线? 美名其曰,晚上上线,对用户影响最小。   为什么会对用户产生影响? 很多人认为,系统升级往往需要重启,重启的过程中,正在访问的用户会访问失败。   例如,如果升级的是web-server: 如上图,重启ip1上的tomcat时,tomcat上或许有1000个http请求正在处理,这些请求就会失败。   又例如,...

    2022年5月15日
    4000

发表回复

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

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信