編輯導讀:在現實生活中我們經常會用淘寶、京東、百度等產品去搜索想要買的產品或者想要知道的訊息。在需求不明確的情況下,產品會對我們的需求進行深度挖掘和匹配,這就是推薦系統在起作用。

本文從搭建推薦系統的意義出發,對推薦系統的設計和過程中需要注意的問題進行了分析總結,供大家一同參考學習。

一、搭建推薦系統的意義

1. 降低物品信息過載困擾,幫助用戶快速找到喜愛商品

當前商場店鋪比較多,物品排列密密麻麻,對用戶的選擇造成一定的干擾,以至於無處下手,最後不了了之,而推薦系統的搭建一定程度上解決了信息過載問題,直接將潛在物品推薦到用戶面前,縮短購買路徑,提高下單量。

2. 深度挖掘商場內長尾商品,提高GMV

經過一系列商品數據採集、分析、打標操作,實現商品的統一化管理,深度挖掘長尾商品,將該類商品推送至目標客戶面前,提高其曝光度,降低商品對貨櫃、店鋪位置的依賴,從而提高營業額。

3. 對於無目的客戶,推薦折扣商品、營銷活動,刺激購買慾望

針對對無購物目的的人羣,推薦系統自動推薦低價好貨、熱門活動和限量商品,吸引客戶注意力,達到營銷和門店導流的目的,刺激客戶購買慾,從而提高下單量。

4. 通過購物車分析,推薦給客戶更多關聯商品,提高用戶的驚喜度和滿意度

針對老客戶,通過購物車分析,推薦給客戶性價比更高的類似商品,提高用戶購物體驗的驚喜度和滿意度。

二、數據採集與數據準備

針對上述需求,我們最終的目的是將人、貨、場進行匹配,爲此我們需要收集用戶、商場、商品的數據信息。包括:

商場信息:

物品信息:

三、推薦算法實現

整個推薦算法主要利用商場的用戶行爲數據,採用基於鄰域的用戶協同過濾和物品協同過濾。

1. 基於商場用戶的協同過濾算法

基於用戶的協同過濾算法基本上分成2步:

  1. 通過分析商場用戶歷史訂單信息,計算該用戶的行爲向量,找到相似的用戶羣體。
  2. 將相似羣體所有購買過的物品列表中,從中過濾掉已購買的商品後,將未接觸的商品同步推送給用戶。

首先,計算用戶相似度,找到相似的人羣,通過兩兩用戶對比,得出該對用戶的相似度。具體算法如下:

假設有A,B 2個用戶,A用戶曾購買過{a,b,d},B 用戶曾購買{a,c},我們約定:

  • N(A):代表A用戶所購買過的物品清單;
  • N(B):代表B用戶所購買過的物品清單;
  • W(AB):代表A、B用戶的相似度值;

那麼根據餘弦相似度公式得出:

假設現在有一組這樣的用戶購買記錄數據,如下圖所示:

A用戶購買了{a、b、d},B用戶購買了{a、c},C用戶購買了{b、e},D用戶購買了{c、d、e},

我們可以得出:

W(AB)=0.409;

W(AC)=0.409;

W(AD)=0.333;

根據A用戶與所有其他用戶的相似度值從高到低排序,依次爲B、C、D,一般情況下我們會選取與A用戶最相似的K個用戶用來做推薦,假設此時取k=3時,那麼就是將B、C、D用戶的所有物品減去A已經購買過的物品,從而得出可推薦列表,即{c,e}。

此時推薦列表是一個無序列表,爲提高推薦的精準度,我們需要計算出A對以上列表項中各個物品的喜愛程度,進而把最符合A興趣的物品進行推薦。

分別計算用戶A對c、A對e物品的喜愛程度:

根據公式:

w(uv)是指用戶u與用戶v的相似度,r(vi)是指用戶v對物品i的喜愛程度,此處默認 =1 得出:

p(A,c)=W(AB) +W(AD)=0.409+0.333=0.742;

P(A,e)=W(AC)+W(AD)= 0.409+0.333=0.742;

2. 基於物品的協同過濾算法

基於物品的協同過濾算法基本上分成2步:

  1. 計算該商場內商品/店鋪的的相似物品/店鋪集;
  2. 根據商品/店鋪相似性以及用戶對該類商品/店鋪的喜愛程度,將權重最高的商品/店鋪推送給用戶。

在這裏我們做一個約定:商品/店鋪相似度的計算思路基於用戶對物品喜愛的人數,我們默認:對物品a、物品b喜歡的人數越多,那麼兩個物品之間的相似度越大。

我們約定:

  • N(a):代表喜歡物品a的用戶名單;
  • N(b):代表喜歡物品b用戶名單;
  • W(ab):代表a、b用戶的相似度值;

那麼同樣利用餘弦相似度:

假設,在數據採集中,有這樣一組用戶數據:

A:{a,b,d}

B:{b,c,e}

C:{c,d}

D:{b,c,d}

E:{a,d}

我們通過構造矩陣來得出物品相似度矩陣:

那麼物品a和b的相似度即:

W(ab)=0.409;

W(ac)=0;

W(ad)=0.707;

W(ae)=0;

W(bc)=0.667;

W(bd)=0.333;

W(be)=0.578;

W(ce)=0 ;

W(de)=0 ;

利用公式,計算出用戶u對一個物品j的興趣:

當K=3時,選出與a最相似的物品爲b、c、d;與b最接近的物品爲c、d、e;

3. 其他的混合推薦算法

選用基於用戶標籤、基於上下文信息和基於社交數據作爲用戶興趣擴展推薦,從而豐富推薦系統的結果。

四、冷啓動問題處理

當系統剛剛發佈上線,數據準備不充分,想做精細化的個性化推薦就面臨很大挑戰,這時就需要尋找合適的方法解決系統啓動後無推薦數據的問題,一般針對這些問題我們可以從幾個方面入手:

  • 利用用戶註冊信息,給用戶推薦相應物品;
  • 利用社交數據,推薦給用戶其好友購買過和感興趣的物品;
  • 讓用戶自行選擇自己感興趣的品類,根據品類信息推薦相應數據;
  • 推薦熱門物品;

五、推薦系統的評估與迭代

一個商業推薦系統的評估一般是從用戶滿意度、預測準確度、覆蓋率、多樣性、新穎性、驚喜度、信任度、實時性、健壯性、商業目標幾個維度來考慮。

1. 用戶滿意度

用戶是推薦系統的重要參與者,用戶滿意是推薦系統優化的追求的目標。判斷用戶是否滿意,我們可以從以下幾個方面着手:

  1. 用戶問卷調查,通過問卷的形式直接獲得用戶的感受;
  2. 數據統計,我們可以統計用戶購買推薦商品的比率,如果用戶購買了推薦的商品,那麼就表示在一定程度上用戶是滿意的。

2. 預測準確度

推薦系統的準確度衡量是離線實驗計算,在計算該指標時需要有一個離線的數據集,該數據集包含了用戶的歷史行爲記錄,然後將這個數據集分成訓練集和測試集。最後將訓練集的模型計算結果與測試集進行對比,將預測行爲與測試集行爲的重合度作爲預測準確度。

例如在TopN推薦中,一般通過準確率和召回率來度量。令,R(u)表示在訓練集中給用戶推薦列表;T(u)是測試集上行爲列表。

那麼召回率(Recall)=

而準確率(Precision)=

3. 覆蓋率

覆蓋率是考覈推薦系統對物品長尾的發掘能力。即推薦的物品集佔總物品集合的比例。或者更細緻一點就是統計推薦不同物品出現的次數分佈,如果所有物品都曾出現在推薦列表,並且出現的次數差不多,那麼就說明該系統覆蓋率比較高。

4. 多樣性

多樣性要求推薦列表需要覆蓋用戶不同興趣領域,既要考慮用戶的主興趣點又要照顧到用戶其他的興趣,從而擴大用戶瀏覽量,提高訂單量。

5.  新穎性

一般推薦結果的平均流行度度量新穎性比較粗略,如果要提高新穎性的準確度需要做用戶調查。

6. 驚喜度

驚喜度對推薦系統是更高的要求,它是基本意思是如果推薦結果和用戶的歷史興趣不相似但卻讓用戶覺得滿意。

7. 信任度

如果推薦結果的可解釋性能提高用戶的信任度,比如提示用戶,你的xx好友曾購買過該商品,這樣更能讓用戶對推薦的商品感興趣。

8. 實時性

如果推薦結果能夠根據用戶的行爲實時發生變化,那麼就說明該系統實時性比較好,當前很多公司採用流式計算來提高系統的實時響應度。

9. 健壯性

衆所周知,絕大部分的推薦系統都是通過分析用戶的行爲實現推薦算法的,那麼如果有人惡意注入行爲攻擊,很容易導致推薦結果的不準確,所以一個好的推薦系統需要有較強抵抗噪聲數據的能力。

10. 商業目標

推薦系統的結果要時時關注與商業目標是否一致,技術的驅動離不開業務的支持,一個能給公司帶來盈利的系統才能更加長久。

本文由 @alentain 原創發佈於人人都是產品經理,未經許可,禁止轉載。

題圖來自 Unsplash,基於CC0協議。

相關文章