3分钟了解“关联规则”推荐

CWZJustine 6年前
   <p>“把啤酒放在尿布旁,有助于提升啤酒销售量”是关联规则推荐的经典案例,今天,和大家聊聊“关联规则推荐”,正文不含任何公式,保证PM弄懂。</p>    <h2>一、概念</h2>    <p>1. 什么是关联规则(Association Rules)?</p>    <p>答:关联规则是数据挖掘中的概念,通过分析数据,找到数据之间的关联。电商中经常用来分析购买物品之间的相关性,例如,“购买尿布的用户,有大概率购买啤酒”,这就是一个关联规则。</p>    <p>画外音:如果把买尿布记作A,买啤酒记作B。</p>    <p>“买尿布的用户有较大概率买啤酒”这个关联规则记作A -> B。</p>    <p>2. 什么是关联规则推荐(Association Rule Based Recommendaion)?</p>    <p>答:顾名思义,利用关联规则,来实施推荐。关联规则推荐的目标,是希望达到</p>    <p>“将尿布放入购物车之后,再推荐啤酒”比“直接推荐啤酒”获取有更好的售卖效果。</p>    <p>画外音:这个目标非常非常重要,有些场景,或许直接推荐更有效。</p>    <p>关联规则推荐的典型应用:</p>    <ul>     <li>线下,可以将尿布和啤酒放在一起</li>     <li>线上,可以在用户将尿布放入购物车后,立刻推荐啤酒</li>    </ul>    <h2>二、如何实施</h2>    <p>假设某电商会售卖ABCD四种商品,历史上共5笔订单,分别卖出{A,B,C}, {B,C,D}, {A,B,C,D}, {A,C}, {C}。</p>    <p>1. 如何来实施“关联规则”推荐呢?</p>    <p>第一步:数据准备</p>    <p><img src="https://simg.open-open.com/show/bbcc2a8bb8f75d9b0b0347ec6cabebb2.jpg"></p>    <p>如上图,纵坐标是所有历史订单,横坐标是每笔订单售出的商品。</p>    <p>第二步:计算关联规则(组合商品)的支持度</p>    <p>2. 什么是支持度(support)?</p>    <p>答:共5笔订单,3笔包含商品A,A的支持度是3/5。</p>    <p><img src="https://simg.open-open.com/show/67a55abe800a748ca5c3e86314be5918.jpg"></p>    <p>很容易计算出,各个商品的支持度。从支持度可以看出,Best Seller是商品C,100%的订单中都包含商品C,C的支持度是1。</p>    <p>除了单个商品,组合商品也有支持度。</p>    <p><img src="https://simg.open-open.com/show/2b9a7634e631321b77975827338e73d9.jpg"></p>    <p>共5笔订单,2笔同时包含AB,即A->B的支持度是2/5。</p>    <p>画外音:全局总共4种商品,假设关联规则只关联2种商品,则一共需要计算C(4,2)共6种组合商品的支持度{AB,AC,AD,BC,BD,CD}。</p>    <p>支持度评估商品包含在订单中的“概率”,一个订单,有多大概率包含这个商品。</p>    <p>画外音:一般会先对支持度高的商品实施推荐,如果先实优化支持度低的商品,即使推荐效果翻倍,总体订单提升效果也会很有限。</p>    <p>第三步:计算关联规则的置信度</p>    <p>3. 什么是置信度(confidence)?</p>    <p>答:已知购买了A,有多大概率购买了B(即同时购买了AB),称A -> B的置信度。</p>    <p><img src="https://simg.open-open.com/show/0a220e743353be08550bc81eefcc4e4b.jpg"></p>    <p>可以看到,商品A有3次购买,这3次中有2次购买了B,A->B的置信度是2/3。</p>    <p>画外音:额,本来不想贴公式的</p>    <pre>  confidence(A->B) = support(A->B)/support(A)= (2/5)/(3/5) = 2/3   </pre>    <p>这也相对比较好理解,</p>    <ul>     <li>分子:support(A->B)是同时购买AB的比例</li>     <li>分母:support(A)是只购买A的比例</li>    </ul>    <p>二者相除,得到“购买了A,有多大概率购买B”,置信度的本质是条件概率。</p>    <p>这里需要注意的是,X->Y与Y->X的置信度不一定相等。</p>    <p><img src="https://simg.open-open.com/show/dd0bbdbba3df9c8b57bf9ceca577bd62.jpg"></p>    <p>如上图:</p>    <ul>     <li>B->C的置信度是1,买商品B时,100%会买C,</li>     <li>C->B的置信度是3/5,买商品C时,只有3/5买了B。</li>    </ul>    <p>画外音:</p>    <pre>  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   </pre>    <p>公式是给程序看的,excel表格是给人看的,结果都一样。</p>    <p>第四步:计算关联规则的提升度</p>    <p>上一个例子里,confidence(B->C)=1,即:如果用户购买商品B,100%会买C,那是不是意味着,如果用户将商品B放入购物车,就可以向用户推荐商品C呢?</p>    <p>答:不是。</p>    <p>我们来回顾一下,关联规则推荐的目标,是希望达到</p>    <p>“将尿布放入购物车之后,再推荐啤酒”比“直接推荐啤酒”获取有更好的售卖效果。</p>    <p><img src="https://simg.open-open.com/show/dd0bbdbba3df9c8b57bf9ceca577bd62.jpg"></p>    <p>虽然购买商品B,100%会买C</p>    <p>画外音:confidence(B->C)=1</p>    <p>但直接推荐C,用户也100%会买C</p>    <p>画外音:support(C)=1</p>    <p>会发现,购买B与购买C是独立事件,用户买不买C和用户买不买B没有直接关系。这里的关联规则推荐,并没有比直接推荐获取更好的效果。</p>    <p>4. 用什么指标来评估关联规则推荐的效果呢?</p>    <p>答:提升度。</p>    <p>5. 什么是提升度(lift)?</p>    <p>答:A->B关联规则推荐,与直接推荐B,的比值,可以用来评估推荐效果:</p>    <ul>     <li>大于1,说明有效,在购买A时推荐B,比直接推荐B,效果更好</li>     <li>等于1,说明无关,购买A与购买B,是独立事件</li>     <li>小于1,说明负相关,购买A时推荐B,效果还不如直接推荐B</li>    </ul>    <p>画外音:又有公式了</p>    <pre>  lift(A->B) =confidence(A->B)/support(B)   </pre>    <p>这也相对比较好理解,</p>    <ul>     <li>分子:confidence(A->B),购买A时,有多大概率同时购买B</li>     <li>分母:support(B),有多大概率直接购买B</li>    </ul>    <p>二者相除,得到效果是否更好。</p>    <p>还是通过两个直观的例子来看。</p>    <p><img src="https://simg.open-open.com/show/632eb72c99a531ea739322fa4278cc00.jpg"></p>    <p>来看看关联规则A->B,与直接推荐B,效果有没有提升:</p>    <ul>     <li>有3个订单购买A,这3个订单中有2个订单购买了B,所以A->B的置信度是2/3,即买了A有2/3的概率会买B</li>     <li>直接推荐B的话,5个订单中有3个购买了B,所以B的支持度是3/5,即有3/5的概率会直接买B</li>    </ul>    <p>会发现,关联规则推荐的效果更好。</p>    <p>画外音:根据公式</p>    <pre>  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   </pre>    <p>故关联规则推荐是正相关的。</p>    <p><img src="https://simg.open-open.com/show/1d48d19e106841da8efc35b22335565d.jpg"></p>    <p>来看看关联规则A->D,与直接推荐D,效果有没有提升:</p>    <ul>     <li>有3个订单购买A,这3个订单中有1个订单购买了D,所以A->D的置信度是1/3,即买了A有1/3的概率会买D</li>     <li>直接推荐D的话,5个订单中有2个购买了B,所以D的支持度是2/5,即有2/5的概率会直接买D</li>    </ul>    <p>会发现,关联规则推荐的效果很差,还不如直接推荐。</p>    <p>画外音:根据公式</p>    <pre>  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   </pre>    <p>故关联规则推荐是负相关的。</p>    <h2>三、总结</h2>    <p>(1) 关联规则A->B推荐,目标是,在“用户将A放入购物车时,推荐B”比“单独推荐B”获取更好的效果</p>    <p>(2) A->B的支持度,是用户同时购买A和B概率</p>    <p>(3) A->B的置信度,是用户购买A的同时,有多大概率购买B</p>    <p>(4) A->B的提升度,是“用户购买A的同时,有多大概率购买B”与“直接购买B的概率”的比值</p>    <ul>     <li>这个值大于1时,说明A->B有正向效果</li>     <li>这个值等于1时,说明A和B是独立事件</li>     <li>这个值小于1时,说明A->B有负向效果</li>    </ul>    <p> </p>    <p>来自:http://zhuanlan.51cto.com/art/201805/572616.htm</p>    <p> </p>