1. 程式人生 > >04_從啤酒與尿布,聊關聯規則推薦

04_從啤酒與尿布,聊關聯規則推薦

“把啤酒放在尿布旁,有助於提升啤酒銷售量”是關聯規則推薦的經典案例,今天,和大家聊聊“關聯規則推薦”,正文不含任何公式,保證PM弄懂。

 

一、概念

什麼是關聯規則(Association Rules)?

:關聯規則是資料探勘中的概念,通過分析資料,找到資料之間的關聯。電商中經常用來分析購買物品之間的相關性,例如,“購買尿布的使用者,有大概率購買啤酒”,這就是一個關聯規則。

畫外音:如果把買尿布記作A,買啤酒記作B。

“買尿布的使用者有較大概率買啤酒”這個關聯規則記作A -> B。

 

什麼是關聯規則推薦(Association Rule Based Recommendaion

)?

:顧名思義,利用關聯規則,來實施推薦。關聯規則推薦的目標,是希望達到

 “將尿布放入購物車之後,再推薦啤酒”

“直接推薦啤酒”

獲取有更好的售賣效果

畫外音:這個目標非常非常重要,有些場景,或許直接推薦更有效。

 

關聯規則推薦的典型應用

  • 線下,可以將尿布和啤酒放在一起

  • 線上,可以在使用者將尿布放入購物車後,立刻推薦啤酒

 

二、如何實施

假設某電商會售賣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

這也相對比較好理解,

  • 分子:support(A->B)是同時購買AB的比例

  • 分母: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,說明有效,在購買A時推薦B,比直接推薦B,效果更好

  • 等於1,說明無關,購買A與購買B,是獨立事件

  • 小於1,說明負相關,購買A時推薦B,效果還不如直接推薦B

畫外音:又有公式了

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

這也相對比較好理解,

  • 分子:confidence(A->B),購買A時,有多大概率同時購買B

  • 分母:support(B),有多大概率直接購買B

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

 

還是通過兩個直觀的例子來看。

來看看關聯規則A->B,與直接推薦B,效果有沒有提升:

  • 有3個訂單購買A,這3個訂單中有2個訂單購買了B,所以A->B的置信度是2/3,即買了A有2/3的概率會買B

  • 直接推薦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,效果有沒有提升:

  • 有3個訂單購買A,這3個訂單中有1個訂單購買了D,所以A->D的置信度是1/3,即買了A有1/3的概率會買D

  • 直接推薦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”獲取更好的效果

  • A->B的支援度,是使用者同時購買A和B概率

  • A->B的置信度,是使用者購買A的同時,有多大概率購買B

  • A->B的提升度,是“使用者購買A的同時,有多大概率購買B”與“直接購買B的概率”的比值

(1)這個值大於1時,說明A->B有正向效果

(2)這個值等於1時,說明A和B是獨立事件

(3)這個值小於1時,說明A->B有負向效果

 

希望這1分鐘,大家能有收穫。

 


《1分鐘瞭解協同過濾,pm都懂了》

《1分鐘瞭解基於內容的推薦,pm又懂了》

《1分鐘瞭解相似性推薦,pm真懂了》


原創: 58沈劍 架構師之路 4月9日