天天看點

【玩轉資料系列四】聽說啤酒和尿布很配?本期教你用協同過濾做推薦産品位址:https://data.aliyun.com/product/learn?spm=a21gt.99266.416540.102.OwEfx2

(本文資料為虛構,僅供實驗)

資料挖掘的一個經典案例就是尿布與啤酒的例子。尿布與啤酒看似毫不相關的兩種産品,但是當超市将兩種産品放到相鄰貨架銷售的時候,會大大提高兩者銷量。很多時候看似不相關的兩種産品,卻會存在這某種神秘的隐含關系,擷取這種關系将會對提高銷售額起到推動作用,然而有時這種關聯是很難通過理性的分析得到的。這時候我們需要借助資料挖掘中的常見算法-協同過濾來實作。這種算法可以幫助我們挖掘人與人以及商品與商品的關聯關系。

協同過濾算法是一種基于關聯規則的算法,以購物行為為例。假設有甲和乙兩名使用者,有a、b、c三款産品。如果甲和乙都購買了a和b這兩種産品,我們可以假定甲和乙有近似的購物品味。當甲購買了産品c而乙還沒有購買c的時候,我們就可以把c也推薦給乙。這是一種典型的user-based情況,就是以user的特性做為一種關聯。

本文的業務場景如下:

通過一份7月份前的使用者購物行為資料,擷取商品的關聯關系,對使用者7月份之後的購買形成推薦,并評估結果。比如使用者甲某在7月份之前買了商品a,商品a與b強相關,我們就在7月份之後推薦了商品b,并探查這次推薦是否命中。

資料源:本資料源為天池大賽提供資料,資料按時間分為兩份,分别是7月份之前的購買行為資料和7月份之後的。

具體字段如下:

字段名

含義

類型

描述

user_id

使用者編号

string

購物的使用者id

item_id

物品編号

被購買物品的編号

active_type

購物行為

0表示點選,1表示購買,2表示收藏,3表示購物車

active_date

購物時間

購物發生的時間

資料截圖:

【玩轉資料系列四】聽說啤酒和尿布很配?本期教你用協同過濾做推薦産品位址:https://data.aliyun.com/product/learn?spm=a21gt.99266.416540.102.OwEfx2

首先,實驗流程圖:

【玩轉資料系列四】聽說啤酒和尿布很配?本期教你用協同過濾做推薦産品位址:https://data.aliyun.com/product/learn?spm=a21gt.99266.416540.102.OwEfx2
【玩轉資料系列四】聽說啤酒和尿布很配?本期教你用協同過濾做推薦産品位址:https://data.aliyun.com/product/learn?spm=a21gt.99266.416540.102.OwEfx2

首先輸入的資料源是7月份之前的購物行為資料,通過sql腳本取出使用者的購買行為資料,進入協同過濾元件。協同過濾的元件設定中把topn設定成1,表示每個item傳回最相近的item和它的權重。通過購買行為,分析出哪些商品被同一個user購買的可能性最大。設定圖如下:

【玩轉資料系列四】聽說啤酒和尿布很配?本期教你用協同過濾做推薦産品位址:https://data.aliyun.com/product/learn?spm=a21gt.99266.416540.102.OwEfx2

協同過濾結果,表示的是商品的關聯性,itemid表示目标商品,similarity字段的冒号左側表示與目标關聯性高的商品,右邊表示機率:

【玩轉資料系列四】聽說啤酒和尿布很配?本期教你用協同過濾做推薦産品位址:https://data.aliyun.com/product/learn?spm=a21gt.99266.416540.102.OwEfx2

上述步驟介紹了如何生成強關聯商品的對應清單。這裡使用了比較簡單的推薦規則,比如使用者甲某在7月份之前買了商品a,商品a與b強相關,我們就在7月份之後推薦了商品b,并探查這次推薦是否命中。這個步驟是通過下圖實作的:

【玩轉資料系列四】聽說啤酒和尿布很配?本期教你用協同過濾做推薦産品位址:https://data.aliyun.com/product/learn?spm=a21gt.99266.416540.102.OwEfx2
【玩轉資料系列四】聽說啤酒和尿布很配?本期教你用協同過濾做推薦産品位址:https://data.aliyun.com/product/learn?spm=a21gt.99266.416540.102.OwEfx2

上面是統計子產品,左邊的全表統計展示的是根據7月份之前的購物行為生成的推薦清單,去重後一共18065條。右邊的統計元件顯示一共命中了90條。

根據上文的統計結果可以看出,本次試驗的推薦效果并不理想,原因在如下幾方面。

1)首先本文隻是針對了業務場景大緻介紹了協同過濾推薦的用法。很多針對于購物行為推薦的關鍵點都沒有處理,比如說時間序列,購物行為一定要注意對于時效性的分析,跨度達到幾個月的推薦不會有好的效果。其次沒有注意推薦商品的屬性,本文隻考慮了商品的關聯性,沒有考慮商品是否為高頻或者是低頻商品,比如說使用者a上個月買了個手機,a下個月就不大會繼續購買手機,因為手機是低頻消費品。

2)基于關聯規則的推薦很多時候最好是作為補充,真正想提高準确率還是要依靠機器學習算法訓練模型的方式。

作者微信公衆号(與作者讨論):

【玩轉資料系列四】聽說啤酒和尿布很配?本期教你用協同過濾做推薦産品位址:https://data.aliyun.com/product/learn?spm=a21gt.99266.416540.102.OwEfx2

往期文章:

<a href="https://yq.aliyun.com/articles/53862?spm=5176.100244.teamconlist.9.sxpb3b">【玩轉資料系列一】人口普查統計案例</a>

<a href="https://yq.aliyun.com/articles/54260?spm=5176.100244.teamconlist.7.sxpb3b">【玩轉資料系列二】機器學習應用沒那麼難,這次教你玩心髒病預測</a>

<a href="https://yq.aliyun.com/articles/57261?spm=5176.100244.teamconlist.3.sxpb3b">【玩轉資料系列三】利用圖算法實作金融行業風控</a>

繼續閱讀