工程架构方向的程序员,看到推荐/搜索/广告等算法相关的技术,或多或少都会有些胆怯。但是仔细研究之后,我发现其实并没有那么难。今天给大家介绍一下推荐系统中的“关联规则推荐”,方便大家了解。画外音:可以看excel截图,也可以看公式,根据自己能看懂的程度选择。一、概念什么是关联规则?答:关联规则是数据挖掘中的概念。通过分析数据,我们可以找到数据之间的关联。电子商务经常被用来分析购买物品之间的相关性。例如,“购买尿布的用户购买啤酒的概率很高”。这是关联规则。画外音:如果把购买尿布记录为A,购买啤酒记录为B,关联规则“购买尿布的用户购买啤酒的概率更高”表示为A->B。什么是AssociationRuleBased推荐?答:顾名思义,关联规则就是用来实现推荐的。关联规则推荐的目标是实现“将尿布放入购物车后推荐啤酒”比“直接推荐啤酒”更好的销售效果。画外音:这个目标非常非常重要。在某些场景下,直接推荐可能更有效。关联规则推荐的典型应用:(1)线下,可以把尿布和啤酒放在一起;(2)在线上,可以在用户将纸尿裤放入购物车后立即推荐啤酒;商会出售四种商品ABCD。历史有5个订单,卖出{A,B,C},{B,C,D},{A,B,C,D},{A,C},{A,B,C},{A,B,C},{C)如何实现“关联规则”推荐?第一步:数据准备如上图所示,纵坐标为所有历史订单,横坐标为每个订单销售的产品。第二步:计算关联规则的支持度(组合积)什么是支持度?答:一共有5个订单,其中3个包含产品A,A的支持度为3/5。计算每种商品的支持度很容易。从支持度可以看出,BestSeller是产品C,100%的订单都包含产品C,C的支持度为1。除了单个产品,组合产品也有支持。一共有5个订单,其中2个同时包含AB,即A->B的支持度为2/5。画外音:世界上共有4种商品。假设关联规则只关联2种商品,需要计算C(4,2)中6种组合商品的支持度{AB,AC,AD,BC,BD,CD}。支持评估订单中包含商品的“概率”,以及订单包含该商品的可能性有多大。画外音:一般先推荐支持度高的产品。如果先优化支持度低的产品,即使推荐效果翻倍,整体提升订单的效果也非常有限。第三步:计算关联规则的置信度。什么是信心?答:已知A已购买,购买B(即同时购买AB)的概率为多少,称为A->B的置信度。可见A已购买3次,B在这3次中被购买了2次,A->B的置信度为2/3。画外音:好吧,我不想发布公式confidence(A->B)=support(A->B)/support(A)=(2/5)/(3/5)=2/3which比较好理解,(1)分子:支持(A->B)是同时买入AB的比例;(2)分母:支持(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/5support(C->B)=3/5confidence(B->C)=support(B->C)/support(B)=1confidence(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,用户也会买C画外音100%:support(C)=1会发现买B和买C是等价的独立事件,用户买不买C和买不买B没有直接关系,这里的关联规则推荐并没有比直接推荐达到更好的效果。用什么指标来评价关联规则推荐的效果?答:提升度。什么是升力?答: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)分母:支持(B),直接买B的可能性有多大;将两者分开,得到效果是否更好。或者通过两个直观的例子。再来看看关联规则A->B,直接推荐B的效果:(1)有3个订单买A,这3个订单中有2个买B,所以A->B的置信度是2/3,即买A,买B的概率是2/3;(2)如果你直接推荐B,5个订单中有3个会买B,所以B的支持度是3/5,也就是有3/5的概率你会直接买B;你会发现关联规则推荐的效果更好。画外音:根据公式confidence(A->B)=support(A->B)/support(A)=2/3support(B)=3/5lift(A->B)=confidence(A->B)/support(B)=10/9lift(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/3support(D)=2/5lift(A->D)=confidence(A->D)/support(D)=5/6lift(A->B)<1,所以关联规则推荐是负相关的。3.总结(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分钟很快就过去了。希望每个人都能有所收获。【本文为专栏作者《58神剑》原创稿件,转载请联系原作者】点此阅读更多该作者好文
