基於協同過濾算法的推薦

基於協同過濾算法的推薦

(本實驗選用數據爲真實電商脫敏數據,僅用於學習,請勿商用)算法

數據挖掘的一個經典案例就是尿布與啤酒的例子。尿布與啤酒看似絕不相關的兩種產品,可是當超市將兩種產品放到相鄰貨架銷售的時候,會大大提升二者銷量。不少時候看似不相關的兩種產品,卻會存在這某種神祕的隱含關係,獲取這種關係將會對提升銷售額起到推進做用,然而有時這種關聯是很難經過經驗分析獲得的。這時候咱們須要藉助數據挖掘中的常見算法-協同過濾來實現。這種算法能夠幫助咱們挖掘人與人以及商品與商品的關聯關係。機器學習

協同過濾算法是一種基於關聯規則的算法,以購物行爲爲例。假設有甲和乙兩名用戶,有a、b、c三款產品。若是甲和乙都購買了a和b這兩種產品,咱們能夠假定甲和乙有近似的購物品味。當甲購買了產品c而乙尚未購買c的時候,咱們就能夠把c也推薦給乙。這是一種典型的user-based狀況,就是以user的特性作爲一種關聯。學習

1、業務場景描述

經過一份7月份前的用戶購物行爲數據,獲取商品的關聯關係,對用戶7月份以後的購買造成推薦,並評估結果。好比用戶甲某在7月份以前買了商品A,商品A與B強相關,咱們就在7月份以後推薦了商品B,並探查此次推薦是否命中。spa

本次實驗選用的是PAI-Studio做爲實驗平臺,僅經過拖拽組件就能夠快速實現一套基於協同過濾的推薦系統。本實驗的數據和完整業務流程已經內置在了PAI首頁模板,開箱即用:blog

2、數據集介紹

數據源:本數據源爲天池大賽提供數據,數據按時間分爲兩份,分別是7月份以前的購買行爲數據和7月份以後的。 
具體字段以下:get

字段名 含義 類型 描述
user_id 用戶編號 string 購物的用戶ID
item_id 物品編號 string 被購買物品的編號
active_type 購物行爲 string 0表示點擊,1表示購買,2表示收藏,3表示購物車
active_date 購物時間 string 購物發生的時間

數據截圖: string

3、數據探索流程

本次實驗選用的是PAI-Studio做爲實驗平臺,僅經過拖拽組件就能夠快速實現一套基於協同過濾的推薦系統。產品

實驗流程圖: it

1.協同過濾推薦流程

首先輸入的數據源是7月份以前的購物行爲數據,經過SQL腳本取出用戶的購買行爲數據,進入協同過濾組件,這麼作的目的是簡化流程,由於購買行爲對此次實驗分析是最有價值的。協同過濾的組件設置中把TopN設置成1,表示每一個item返回最相近的item和它的權重。經過購買行爲,分析出哪些商品被同一個user購買的可能性最大。設置圖以下:數據挖掘

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

好比上圖的第一條,itemid1000和item15584的類似度爲0.2747133918,類似度越高表示兩個物品被同時選擇的機率越大。

2.推薦

上述步驟介紹瞭如何生成強關聯商品的對應列表,這裏使用了比較簡單的推薦規則,好比用戶甲某在7月份以前買了商品A,商品A與B強相關,咱們就在7月份以後推薦了商品B,並探查此次推薦是否命中。這個步驟是經過下圖實現的:

3.結果統計

上面是統計模塊,左邊的全表統計展現的是根據7月份以前的購物行爲生成的推薦列表,去重後一共18065條。右邊的統計組件顯示一共命中了90條,命中率0.4%左右。

根據上文的統計結果能夠看出,本次試驗的推薦效果比較通常,緣由在以下幾方面:

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

2)基於關聯規則的推薦不少時候最好是做爲最終推薦結果的補充或者是最基礎的推薦系統,真正想提升準確率仍是要依靠機器學習算法訓練模型的方式,具體方法能夠參考泛推薦系列的其它文章。

原文連接

相關文章
相關標籤/搜索