淘寶推薦系統:從千人一面到千人千面邏輯和算法(上篇)

61 評論 160679 瀏覽 693 收藏 18 分鐘

應廣大朋友的要求,本人對本篇文章進行一次更新,將推薦系統的底層邏輯和部分算法模型進行整合歸納,由于內容篇幅較長,分為上下兩篇,請分別瀏覽!

互聯網技術的高速發展,給我們帶來了十足的便利性,回顧整個互聯網的發展歷程,從PC時代轉移到移動互聯網時代,從移動互聯網時代轉向IOT時代,從IOT時代又即將邁入AI時代,這些飛速發展的背后,其實是數據的采集,傳輸和處理的大變革。

而以我們當下為例,移動互聯網技術和智能手機的發展,讓采集用戶數據的能力變得空前強大,無時無刻,無所不在,而一旦擁有這些數據之后全行業的個性化推薦技術變得更加容易實現,不論是今日頭條的,還是淘寶美團的,無疑是這個時代的最大受益者。

不同于個人PC機,手機可以唯一錨定一個具體的自然人,而手機這類私人的專屬物品是與其他人很難共用的,那么你手機的型號,在手機上的瀏覽、交易等行為數據,就具有了極高的分析價值。

從電商平臺的角度來講,個性化推薦技術的本質是將當前最有可能成交的產品優先推薦給消費者,使流量得到更加充分的利用,最大限度的提高轉化效率。而推薦技術也隨著用戶個人數據的不斷豐富,在逐漸升級,從最基礎的千人一面,慢慢演化到千人千面,下面我就沿著這個演化史給大家具體介紹一下相關的推薦邏輯和模型算法。

NO1.千人一面的邏輯基礎和推薦算法

  • 核心邏輯:物以類聚,也即推薦和當前商品相似、相關或其他維度的產品,每個人進來看到的商品推薦其實是完全一致的,俗稱千人一面;
  • 使用環境:當前基本沒有什么用戶數據,但是商品數據豐富到足夠支持起所需的推薦邏輯。

1. 根據商品的分類或其他基礎屬性進行推薦(相似性推薦)

對于某一個商品來說,這是一種替代性的推薦方式,也即用戶不想買它的時候,還可以有其他的選擇。就比如說用戶正在瀏覽一個斯伯丁的籃球,看完描述之后發現不是自己理想的款式,規格材質不太對,但是在這個單品下方,出現了一個同類型的耐磨材質的籃球,OK!那么這個用戶可能就會把這個推薦的籃球帶回家。

這個例子中僅僅是依據商品的分類進行推薦,當然我們還可以根據實際情況加入商品的更多基礎屬性進行加權取值,算最后得分來進行推薦。

主要應用【加權求和法】

也就是選取商品的某些屬性,并且針對各種屬性的對于用戶選擇的重要性進行一個主觀的評估,然后賦上權值,進行累加計算,得出每種商品和其他商品的相似性,案例如下:

水杯類目中選擇三個屬性【材質】【樣式】【顏色】,其中【材質】重要等級為3,【樣式】重要等級為2,【顏色】重要等級為1

  • 商品A(塑料,大肚杯,透明色)
  • 商品B(陶瓷,直筒杯,透明色)
  • 商品C(玻璃,直筒杯,白色)

比對的兩個商品每種屬性的相似度關系值:

  • 材質是否相同(不同為0,相同為1)
  • 樣式是否相同(不同為0,相同為1)
  • 顏色是否相同(不同為0,相同為1)

在根據加權累加的公式,可以得到如下表格

那么之后我們就可以在A商品之后,推薦這個相似度分數比較高的其他同類目下的商品了,當然自身就不需要重復推薦了,以及長期推薦點擊量不高的產品,后面可以進行動態優化。

2. 根據商品的被動銷售級屬性進行推薦(相關性推薦)

根據商品最終在訂單中出現的概率來判斷商品間的相關性,目前還可以依賴于其他幾個維度來參考一同做判斷(被同時瀏覽的幾率,被同時加入購物車的幾率,被同時購買的幾率),以下采取訂單中是否通知購買來講解算法模型,簡單解釋一下就是想買A的人還可能想買C。

主要應用【置信度】等指標算法

商品的關聯性可以通過”置信度“,”支持度“,”提升度“三個指標來衡量。

難度較大的是從一個銷售記錄集中計算所有商品兩兩/三三之間的關聯性,以下范例以兩個商品之間的關聯性來講解。

  1. 計算A→B支持度,購買A還購買B這個組合的訂單占所有訂單的百分比。
  2. 計算A→B置信度,購買A還購買B這個組合的訂單占所有購買A的訂單的百分比。
  3. 計算A→B提升度,購買A還購買B的概率同不購買A只購買B商品的概率之商。

那么根據相關度算法,先從所有訂單中找出包含A商品的訂單個數N1,然后再查詢A的所有訂單中出現B的個數N2,則置信度X=N2/N1。

總訂單為3000單,其中包含A的訂單有1200單,B的訂單800單,C的訂單1500單,D的訂單600單,E的訂單 1000單

A的1200單中(包含B的有300單,包含C的有600單,包含D的有400單,包含E的有200單)

則C商品對于A的置信度最高,那么就可以優先推薦C商品,買了A商品的人最有可能還去買C,其實通常情況下,我們不可能僅僅單獨看置信度這一個指標,三個指標都需要綜合起來看,提升度大于1,具有強置信度(30%以上)和較高支持度(10%)的規則可以認為是比較合理靠譜的規則,計算其它2個指標的值就不在此贅述了。

NO2.千人十面的邏輯基礎和推薦算法

  • 核心邏輯:人以群分,將有相似的屬性,相似行為的用戶分為一類人,然后這一類中的人某一個人喜歡A產品,那么其他人也有極大的可能喜歡A產品
  • 使用環境:當前積累了一定的用戶數據之后,可以開始試試用這種模式

    1、根據用戶基礎信息進行推薦

用戶注冊和后期行為過程中系統可以收集分析出一些固定數據,這類數據是長期穩定的,可以刻畫成一些人群特征,我們俗稱標簽,而整個推薦系統中最牛的位置,也在于標簽的大范圍深度應用,其中基礎標簽可能就是年齡標簽、性別、收入范圍、興趣愛好、星座、生活區域等,那么標簽完全相同的這一類人就極有可能有相同的喜好(一般還會把行為加入一起來判斷相似性)

比如一個用戶的標簽組成為:20—35之間、女性、低收入人群、愛寵人士、雙魚座……,最近剛好購買了一袋X品牌的狗糧,那么則另外一個標簽與她相符的人,也可能在某個時間段產生這個需求。

2、根據用戶行為數據進行推薦

比如在電商的場景下,常見的用戶行為就會有搜索、瀏覽、咨詢、加購、支付、收藏、評價、分享等等,那么通過記錄這些用戶行為數據,我們就可以對應進行推薦了。

①基于搜索關鍵詞進行推薦

對于一個新注冊的買家來購物,這時候大部分數據都全無,咋辦?因為這個買家除了具備一些基本的人群屬性外,購物行為和購物偏好方面是空的。好,這時候我們可以根據他搜索的關鍵詞來進行跟蹤推薦,依據搜索同樣關鍵詞的其他用戶最后達成的商品成交概率來進行合理推薦。

舉個例子:如連衣裙這個產品,在風格上有韓版的、歐美的、田園風格的等等。那么搜索引擎通過分析以前搜索“連衣裙”這個關鍵詞的其他消費者,發現70%以上的消費者最終都購買了“韓版”的,那么韓版就是一個高概率成交風格。所以,展現這一類型的商品在這個新用戶面前的。

②基于瀏覽記錄進行推薦

對于淘寶這種大型系統來說,在整個網站中和app中的所有瀏覽記錄的時間脈絡,它是全部有記錄,完全能夠做到判斷你在何時看到什么商品,同時瀏覽的行為背后即代表這關注,表明用戶對此商品感興趣,那么我們完全可以根據這一類商品的相似度進行關聯推薦,用戶所有瀏覽行為都是商品推薦的重要依據。

舉個例子:每次你搜索并且看完一些寶貝后,關閉淘寶,過一段時間再打開淘寶,你就可以看到在“猜你喜歡”模塊中出現之前瀏覽過的同類商品。

基于購買記錄的推薦

其實這是很好理解的,因為你已經購買了,所以這證明了你對產品的認可,甚至是對這個店鋪的認可,尤其是在一些比如說衣服、視頻、鞋子、寵物用品等復購率較高的商品中。如果你在這個店鋪里面買過,那么你在搜索相關的關鍵詞的時候,這個店鋪符合要求的商品就會被優先展現(尤其是新上架的商品),方式是:購買過的店鋪。

舉個例子:淘寶中,你收藏的店鋪、瀏覽過的店鋪等等,都會以一種強個性化的方式得到優先推薦,而且還會給你添上標簽“購買過的店鋪”。在絕大多數類目里面,這種最高級別的推薦都是非常明顯的。

喜好度評分、向量余弦公式

基于用戶的協同過濾(user-based CF),通過用戶對不同類型的商品的喜好度進行評分,然后根據每類商品的喜好度評分構建一個多維向量,使用余弦公式有來評測用戶之間喜好度的相似性,基于此將其他相似用戶非常喜歡而該用戶還沒有了解的產品進行推薦。這部分推薦本質上是給用戶推薦其他相似用戶喜歡的內容,一句話概括:和你類似的人也喜歡這些商品。

關于喜好度的計算,先將用戶行為的權值定義清楚,假設定義如下:

  • 搜索權值為1;
  • 點擊流量權值為1;
  • 加購權值為2;
  • 咨詢權值為1;
  • 完成支付權值為3;
  • 好評權值為2;
  • 分享權值為3;

那么在系統中加入埋點,產生用戶行為數據之后,我們將可以獲得用戶關于某類商品的喜好度具體分值,加權平均后分值區間為【0,13】

在假設商城類僅有5類商品:

  • 對食品類目的商品喜好度(0~13分)
  • 對家居類目的商品喜好度(0~13分)
  • 對玩具類目的商品喜好度(0~13分)
  • 對圖書類目的商品喜好度(0~13分)
  • 對游戲類目的商品喜好度(0~13分)

一個用戶A:對食品的喜好度為3,對家居的喜好度為1,對玩具的喜好度為4,對圖書的喜好度為5,對游戲的喜好度為0,用戶A可以用向量表示為

一個用戶B:對食品的喜好度為3,對家居的喜好度為4,對玩具的喜好度為5,對圖書的喜好度為0,對游戲的喜好度為2,用戶A可以用向量表示為

接下來就要使用的【余弦函數】了,這邊要和大家解釋一下向量的概念(可能很多人高中數學已經忘記了),向量是空間中帶箭頭的線段,2個向量之間的夾角越小,表明它們的相似度越相近,多個屬性的向量表示為。

對于用戶A的對于所有類目商品的喜好度向量和用戶B的向量而言,他們的在多維空間的夾角可以用向量余弦公式計算:

余弦值的值域在【-1,1】之間,0表示完全垂直90°,-1表示夾角180°,1表示夾角為0°,系數越靠近1,向量夾角越小,兩件商品的相關性越高,。就剛才用戶A和用戶B的例子而言,我們可以知道他們的相似度為:

相似度系數推薦說明:

  • 非常相似:0.8—1.0;
  • 比較相似:0.6—0.8;
  • 一般:0.4—0.6;
  • 不太相似: ?0—0.4;
  • 完全不相似:-1.0—0;

那么根據這個余弦值的結果,我們會發現用戶A和B在商品的喜好度上是比較相似的,所以在給A推薦商品時,我們就可以依照B喜歡的而A卻從未瀏覽過的商品進行推薦,或者是其他B喜歡的商品等。

總結

目前大部分推薦都是多重算法結合的,以上介紹為了邏輯清晰,所以都是單一說明,沒有進行組合,而現實中可能會依據相同標簽相似喜好度的人推薦同類型的產品等,接下來的【下篇】,我會重點為大家介紹關于區別于給用戶標簽化的推薦方法,更高階的是給商品、服務、店鋪等全方位的標簽化,同時還會介紹到標簽的標簽,比如標簽的場景失效,標簽的熱度衰減等!

#專欄作家#

囧囧有神(個人微信公眾號:jspvision),人人都是產品經理【2018年度最受歡迎】專欄作家,起點學院導師,成均館大學企業講師,混沌大學創新翰林。10年互聯網經驗,產品運營專家,Team Leader。

本文原創發布于人人都是產品經理。未經許可,禁止轉載。

題圖來自Unsplash,基于CC0協議

更多精彩內容,請關注人人都是產品經理微信公眾號或下載App
評論
評論請登錄
  1. 好期待下篇,什么時候更新呀?

    來自北京 回復
  2. 千人千面的推薦邏輯是什么?

    來自遼寧 回復
    1. 可能是下篇的內容

      來自北京 回復
  3. 茅塞頓開 ?? 求下篇

    來自浙江 回復
  4. 請問作者大大,這篇寫的太好了,通俗易懂,求下篇啊,跪求~

    來自上海 回復
  5. 請問下篇在哪里可以看

    來自江蘇 回復
  6. 非常好的文章,正在投資一個內容電商,請問您的私信?

    來自廣東 回復
    1. jspvision個人微信號,可以加我,私信溝通

      回復
  7. 期待下篇

    來自北京 回復
  8. 商品A和商品A的相似度是8,怎么算出來的呢?我怎么算出來的是6??求解惑解惑,強迫癥產品傷不起

    來自北京 回復
    1. 我算了2遍!是6沒錯了~

      來自北京 回復
    2. 感恩 指出數據計算問題,突然感覺自己的數學是體育老師教的了

      回復
  9. 作者你好:第二篇還沒有出嗎 ?

    來自上海 回復
  10. 您好,我想問下,千人千面的展現,和權重的算法,,是文章里面講的嗎?

    來自廣東 回復
    1. 真實情況其實比文章里面要復雜很多倍,我分開抽出來單點講,只是為了大家更好的去理解它。

      回復
  11. 作者,您的千人百面和千人千面還會更新嗎?等了半年多了。

    來自北京 回復
  12. 看得過癮。。。下篇在哪里

    回復
  13. 支持度,置信度,提升度指標綜合起來怎么考慮

    來自上海 回復
  14. 您好,請問上面那個加權累加后,是推薦B商品呢還是推薦C商品呢,從表格我看不大出來誒 ?

    來自浙江 回復
    1. 推薦B,因為B和A的相似度為1,C和A的相似度為0;故推薦B。

      來自廣東 回復
  15. 我是來催更的??

    來自陜西 回復
  16. 您好 請問那個加權累加的算法為什么相同的商品相似度為8 為啥不是6?

    來自北京 回復
    1. 我算了一年,結果是6

      來自廣東 回復
  17. 下篇催更(已經一季度快過完了嘿嘿)

    來自江蘇 回復
  18. 下篇呢?

    回復
  19. 作者您好~請問下篇什么時候發布呢?~

    來自北京 回復
  20. 贊!想請教您幾個問題:1淘寶現在在運用千人十面的時候 還是主要是通過行為數據 而非 用戶基本信息吧?(畢竟都沒有要求用戶填寫太多人口統計信息以及興趣標簽) 2千人千面的內容是在下篇里么,啥時候能出。。

    來自北京 回復
  21. 想請教您一些問題,在用戶行為權值那里,搜索一次和搜索多次也是不太一樣的誒。用統一的權值是不是有點模糊?

    來自北京 回復
  22. 作者您好,我現在也在做有關社交APP的用戶內容推薦,能不能加您微信,跟您探討一下推薦系統的流程,以及迭代優化呢?

    來自廣東 回復
    1. 好的 私信我 加我微信好咯 嘿嘿??

      回復
  23. 期待更多關于算法和模型的內容,另外有關用戶畫像中的標簽,確實如前面所有,是需要擴展到預測層面的,希望這方面也講一講,謝謝啦

    來自湖南 回復
    1. 已經更新咯 嘿嘿嘿 您可以看看

      回復
  24. 請教一下文中這句話 “那么搜索引擎通過分析以前搜索“連衣裙”這個關鍵詞的消費者” 是什么意思呢?分析新用戶以前搜索的內容是指用戶在其它app上的搜索行為嗎?

    回復
  25. 最近在做淘寶導購類產品的用戶畫像和推薦系統,用戶量挺大(日UV百萬+),但是用戶在我們產品上的行為很少,只有點擊瀏覽,其他全部跳轉到淘寶,這種情況下如何做好推薦系統呢

    來自浙江 回復
    1. 可以根據 進入頁面的時間和跳出頁面的時間 跟蹤用戶的瀏覽時長 來判斷 主題頁面是否對客戶有吸引力 同時發生點擊 跳轉 就代表轉化 可以看看是哪一類人群 點擊的哪一類商品 從這方面去考慮

      回復
  26. 個性化推薦算法比你說的要復雜多,文章很淺,如果能用算法的知識去分析個性化推薦,那是極好的。

    來自北京 回復
    1. 嗯 好的 因為這一篇主要還是講邏輯層面的內容 我之后把每一個的算法也給大家簡單說說 后續這篇文章給更新更新 歡迎關注

      回復
    2. 期待邏輯算法說明

      來自廣東 回復
    3. 已經更新了 三個算法模型

      回復
  27. 這個就是有點用戶畫像細分的感覺,廣告上說的是精準數字營銷,技術上就是相似度匹配推薦,根據用戶特征去預判用戶需求,實現精準的營銷與推薦。

    來自廣東 回復
  28. 好奇用戶的收貨地址不會被參考進去嗎?用戶的收獲地址也是包含很多信息的

    來自上海 回復
  29. 這種推薦機制優先級是如何判定的?比如我計劃買手機,類似這種消費頻率比較低的產品,在一段時間內多次瀏覽此類產品,購買后(很長時間都不會再買),這時的系統推薦依舊是根據我之前的瀏覽習慣所推薦的手機。還是說根據用戶整個購買記錄和瀏覽習慣(注冊賬號時至今),來推薦一些消費頻率大的產品。。。。問的有些業余多包涵??

    回復
  30. 我來說幾點上面沒有涉及的方面:
    1. 需要細分推薦的維度:比如說:a.有些產品只是適用購買一次(或者在一段時間內只買一次即可,如大型家電),那么此時就不應該再次推薦這些東西。需要建立一個共生性的推薦模塊,也就是常講的“買了一個東西后,接下來針對這個東西可能會用到的東西”;b.同一個風格的產品不是推薦得越多越好,因為用戶在成長,價值觀也可能是發生改變的,一成不變的風格會造成審美疲勞(扎克伯格的穿衣風格那只是特例)。作為平臺有推薦給用戶更多可能性的產品的義務,而不是一味讓用戶陷入呆板乏味的牢籠中,更不能讓生硬的標簽決定了用戶的所有;
    2. 推薦還應該智能化:當前的推薦更多的是依賴用戶的操作行為所決定的,但當獲取到用戶信息情況比較少的情況下,那么進行推薦就顯得有些捉襟見肘了。歸結原因則在于:推薦應該更接近用戶。推薦要做的不僅僅是在用戶想要的時候進行推薦,還應該具備某種“預知”的能力。結合生活場景和用戶特征去進行推薦(天氣、交通、社會大事件、工作地點等等可能與用戶相關的環境);
    3. 留給用戶更大的空間:推薦歸推薦,但不能就絕對認定用戶喜歡這個推薦。那么就需要在產品設計得時候留有些回旋的空間。無論是推薦的產品布局的位置還是頻次,都要有一定的克制。

    來自廣東 回復
    1. ?? 厲害了大神

      來自北京 回復