老板問(wèn)我,什么是關(guān)聯(lián)規(guī)則推薦?
工程架構(gòu)方向的程序員,看到推薦/搜索/廣告等和算法相關(guān)的技術(shù),心中或多或少有一絲膽怯。但認(rèn)真研究之后,發(fā)現(xiàn)其實(shí)沒(méi)有這么難。
今天給大家介紹下推薦系統(tǒng)中的“關(guān)聯(lián)規(guī)則推薦”,保證大伙弄懂。
畫(huà)外音:可以看excel截圖,或者看公式,大伙結(jié)合自己能夠理解的程度自取。
一、概念
什么是關(guān)聯(lián)規(guī)則(Association Rules)?
答:關(guān)聯(lián)規(guī)則是數(shù)據(jù)挖掘中的概念,通過(guò)分析數(shù)據(jù),找到數(shù)據(jù)之間的關(guān)聯(lián)。電商中經(jīng)常用來(lái)分析購(gòu)買(mǎi)物品之間的相關(guān)性,例如,“購(gòu)買(mǎi)尿布的用戶(hù),有大概率購(gòu)買(mǎi)啤酒”,這就是一個(gè)關(guān)聯(lián)規(guī)則。
畫(huà)外音:如果把買(mǎi)尿布記作A,買(mǎi)啤酒記作B。
“買(mǎi)尿布的用戶(hù)有較大概率買(mǎi)啤酒”這個(gè)關(guān)聯(lián)規(guī)則記作A -> B。
什么是關(guān)聯(lián)規(guī)則推薦(Association Rule Based Recommendaion)?
答:顧名思義,利用關(guān)聯(lián)規(guī)則,來(lái)實(shí)施推薦。關(guān)聯(lián)規(guī)則推薦的目標(biāo),是希望達(dá)到
“將尿布放入購(gòu)物車(chē)之后,再推薦啤酒”
比
“直接推薦啤酒”
獲取有更好的售賣(mài)效果。
畫(huà)外音:這個(gè)目標(biāo)非常非常重要,有些場(chǎng)景,或許直接推薦更有效。
關(guān)聯(lián)規(guī)則推薦的典型應(yīng)用:
(1)線(xiàn)下,可以將尿布和啤酒放在一起;
(2)線(xiàn)上,可以在用戶(hù)將尿布放入購(gòu)物車(chē)后,立刻推薦啤酒;
二、如何實(shí)施
假設(shè)某電商會(huì)售賣(mài)ABCD四種商品,歷史上共5筆訂單,分別賣(mài)出{A,B,C}, {B,C,D}, {A,B,C,D}, {A,C}, {C}
如何來(lái)實(shí)施“關(guān)聯(lián)規(guī)則”推薦呢?
第一步:數(shù)據(jù)準(zhǔn)備
如上圖,縱坐標(biāo)是所有歷史訂單,橫坐標(biāo)是每筆訂單售出的商品。
第二步:計(jì)算關(guān)聯(lián)規(guī)則(組合商品)的支持度
什么是支持度(support)?
答:共5筆訂單,3筆包含商品A,A的支持度是3/5。
很容易計(jì)算出,各個(gè)商品的支持度。從支持度可以看出,Best Seller是商品C,100%的訂單中都包含商品C,C的支持度是1。
除了單個(gè)商品,組合商品也有支持度。
共5筆訂單,2筆同時(shí)包含AB,即A->B的支持度是2/5。
畫(huà)外音:全局總共4種商品,假設(shè)關(guān)聯(lián)規(guī)則只關(guān)聯(lián)2種商品,則一共需要計(jì)算C(4,2)共6種組合商品的支持度{AB,AC,AD,BC,BD,CD}。
支持度評(píng)估商品包含在訂單中的“概率”,一個(gè)訂單,有多大概率包含這個(gè)商品。
畫(huà)外音:一般會(huì)先對(duì)支持度高的商品實(shí)施推薦,如果先實(shí)施優(yōu)化支持度低的商品,即使推薦效果翻倍,總體訂單提升效果也會(huì)很有限。
第三步:計(jì)算關(guān)聯(lián)規(guī)則的置信度
什么是置信度(confidence)?
答:已知購(gòu)買(mǎi)了A,有多大概率購(gòu)買(mǎi)了B(即同時(shí)購(gòu)買(mǎi)了AB),稱(chēng)A -> B的置信度。
可以看到,商品A有3次購(gòu)買(mǎi),這3次中有2次購(gòu)買(mǎi)了B,A->B的置信度是2/3。
畫(huà)外音:額,本來(lái)不想貼公式的
- confidence(A->B) = support(A->B)/support(A)= (2/5)/(3/5) = 2/3
這也相對(duì)比較好理解,
(1)分子:support(A->B)是同時(shí)購(gòu)買(mǎi)AB的比例;
(2)分母:support(A)是只購(gòu)買(mǎi)A的比例;
二者相除,得到“購(gòu)買(mǎi)了A,有多大概率購(gòu)買(mǎi)B”,置信度的本質(zhì)是條件概率。
這里需要注意的是,X->Y與Y->X的置信度不一定相等。
如上圖:
- B->C的置信度是1,買(mǎi)商品B時(shí),100%會(huì)買(mǎi)C,
- C->B的置信度是3/5,買(mǎi)商品C時(shí),只有3/5買(mǎi)了B。
畫(huà)外音:
- 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表格是給人看的,結(jié)果都一樣。
第四步:計(jì)算關(guān)聯(lián)規(guī)則的提升度
上一個(gè)例子里,confidence(B->C)=1,即:如果用戶(hù)購(gòu)買(mǎi)商品B,100%會(huì)買(mǎi)C,那是不是意味著,如果用戶(hù)將商品B放入購(gòu)物車(chē),就可以向用戶(hù)推薦商品C呢?
答:不是。
我們來(lái)回顧一下,關(guān)聯(lián)規(guī)則推薦的目標(biāo),是希望達(dá)到
“將尿布放入購(gòu)物車(chē)之后,再推薦啤酒”
比
“直接推薦啤酒”
獲取有更好的售賣(mài)效果。
雖然購(gòu)買(mǎi)商品B,100%會(huì)買(mǎi)C
畫(huà)外音:confidence(B->C)=1
但直接推薦C,用戶(hù)也100%會(huì)買(mǎi)C
畫(huà)外音:support(C)=1
會(huì)發(fā)現(xiàn),購(gòu)買(mǎi)B與購(gòu)買(mǎi)C是獨(dú)立事件,用戶(hù)買(mǎi)不買(mǎi)C和用戶(hù)買(mǎi)不買(mǎi)B沒(méi)有直接關(guān)系。這里的關(guān)聯(lián)規(guī)則推薦,并沒(méi)有比直接推薦獲取更好的效果。
用什么指標(biāo)來(lái)評(píng)估關(guān)聯(lián)規(guī)則推薦的效果呢?
答:提升度。
什么是提升度(lift)?
答:A->B關(guān)聯(lián)規(guī)則推薦,與直接推薦B,的比值,可以用來(lái)評(píng)估推薦效果:
(1)大于1,說(shuō)明有效,在購(gòu)買(mǎi)A時(shí)推薦B,比直接推薦B,效果更好;
(2)等于1,說(shuō)明無(wú)關(guān),購(gòu)買(mǎi)A與購(gòu)買(mǎi)B,是獨(dú)立事件;
(3)小于1,說(shuō)明負(fù)相關(guān),購(gòu)買(mǎi)A時(shí)推薦B,效果還不如直接推薦B;
畫(huà)外音:又有公式了
- lift(A->B) =confidence(A->B)/support(B)
這也相對(duì)比較好理解,
(1)分子:confidence(A->B),購(gòu)買(mǎi)A時(shí),有多大概率同時(shí)購(gòu)買(mǎi)B;
(2)分母:support(B),有多大概率直接購(gòu)買(mǎi)B;
二者相除,得到效果是否更好。
還是通過(guò)兩個(gè)直觀的例子來(lái)看。
來(lái)看看關(guān)聯(lián)規(guī)則A->B,與直接推薦B,效果有沒(méi)有提升:
(1)有3個(gè)訂單購(gòu)買(mǎi)A,這3個(gè)訂單中有2個(gè)訂單購(gòu)買(mǎi)了B,所以A->B的置信度是2/3,即買(mǎi)了A有2/3的概率會(huì)買(mǎi)B;
(2)直接推薦B的話(huà),5個(gè)訂單中有3個(gè)購(gòu)買(mǎi)了B,所以B的支持度是3/5,即有3/5的概率會(huì)直接買(mǎi)B;
會(huì)發(fā)現(xiàn),關(guān)聯(lián)規(guī)則推薦的效果更好。
畫(huà)外音:根據(jù)公式
- 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
故關(guān)聯(lián)規(guī)則推薦是正相關(guān)的。
來(lái)看看關(guān)聯(lián)規(guī)則A->D,與直接推薦D,效果有沒(méi)有提升:
(1)有3個(gè)訂單購(gòu)買(mǎi)A,這3個(gè)訂單中有1個(gè)訂單購(gòu)買(mǎi)了D,所以A->D的置信度是1/3,即買(mǎi)了A有1/3的概率會(huì)買(mǎi)D;
(2)直接推薦D的話(huà),5個(gè)訂單中有2個(gè)購(gòu)買(mǎi)了B,所以D的支持度是2/5,即有2/5的概率會(huì)直接買(mǎi)D;
會(huì)發(fā)現(xiàn),關(guān)聯(lián)規(guī)則推薦的效果很差,還不如直接推薦。
畫(huà)外音:根據(jù)公式
- 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
故關(guān)聯(lián)規(guī)則推薦是負(fù)相關(guān)的。
三、總結(jié)
(1)關(guān)聯(lián)規(guī)則A->B推薦,目標(biāo)是,在“用戶(hù)將A放入購(gòu)物車(chē)時(shí),推薦B”比“單獨(dú)推薦B”獲取更好的效果;
(2)A->B的支持度,是用戶(hù)同時(shí)購(gòu)買(mǎi)A和B概率;
(3)A->B的置信度,是用戶(hù)購(gòu)買(mǎi)A的同時(shí),有多大概率購(gòu)買(mǎi)B;
(4)A->B的提升度,是“用戶(hù)購(gòu)買(mǎi)A的同時(shí),有多大概率購(gòu)買(mǎi)B”與“直接購(gòu)買(mǎi)B的概率”的比值:
- 這個(gè)值大于1時(shí),說(shuō)明A->B有正向效果
- 這個(gè)值等于1時(shí),說(shuō)明A和B是獨(dú)立事件
- 這個(gè)值小于1時(shí),說(shuō)明A->B有負(fù)向效果
1分鐘很快就過(guò)了,希望大家能有收獲。
【本文為51CTO專(zhuān)欄作者“58沈劍”原創(chuàng)稿件,轉(zhuǎn)載請(qǐng)聯(lián)系原作者】