京東個性化推薦系統解析

作者:fisherman,Davidxiaozhi





京東個性化推薦系統






在電商領域,推薦的價值在於挖掘用戶潛在購買需求,縮短用戶到商品的距離,提升用戶的購物體驗。


京東推薦的演進史是絢麗多彩的。京東的推薦起步於2012年,當時的推薦產品甚至是基於規則匹配做的。整個推薦產品線組合就像一個個鬆散的原始部落一樣,部落與部落之前沒有任何工程、算法的交集。2013年,國內大數據時代到來,一方面如果做的事情與大數據不沾邊,都顯得自己水平不夠,另外一方面京東業務在這一年開始飛速發展,所以傳統的方式已經跟不上業務的發展了,爲此推薦團隊專門設計了新的推薦系統。


隨着業務的快速發展以及移動互聯網的到來,多屏(京東App、京東PC商城、M站、微信手Q等)互通,推薦類型從傳統的商品推薦,逐步擴展到其他類型的推薦,如活動、分類、優惠券、樓層、入口圖、文章、清單、好貨等。個性化推薦業務需求比較強烈,基於大數據和個性化推薦算法,實現向不同用戶展示不同內容的效果。


爲此,團隊於2015年底再次升級推薦系統。2016年618期間,個性化推薦大放異彩,特別是團隊開創的“智能賣場”,實現了活動會場的個性化分發,不僅帶來GMV的明顯提升,也大幅降低了人工成本,大大提高了流量效率和用戶體驗,從而達到商家和用戶雙贏,此產品獲得了2016年度的集團優秀產品。爲了更好地支撐多種個性化場景推薦業務,推薦系統一直在迭代優化升級,未來將朝着“滿屏皆智能推薦”的方向發展。


推薦產品


用戶從產生購買意向,到經歷購買決策,直至最後下單的整個過程,在任何一個購物鏈路上的節點,推薦產品都能在一定程度上幫助用戶決策。


推薦產品發展過程


推薦產品發展歷程主要經歷了幾個階段(圖1),由簡單的關聯推薦過程到個性化推薦,逐步過渡到場景智能推薦。從相關、相似的產品推薦過渡到多特徵、多維度、用戶實時行爲、結合用戶場景進行的全方位智能推薦。

圖1 推薦產品發展歷程

    

多屏多類型產品形態


多類型主要指推薦類型覆蓋到多種類型,如商品、活動、分類、優惠券、樓層、入口圖、文章、清單、好貨等。在移動互聯時代,多屏場景非常普遍,整合用戶在多屏的信息,能使個性化推薦更精準。多屏整合的背後技術是通過前端埋點,用戶行爲觸發埋點事件,通過點擊流系統進行多屏的行爲信息收集。這些行爲數據通過實時流計算平臺來計算用戶的興趣偏好,從而根據用戶興趣偏好對推薦結果進行重排序,達到個性化推薦的效果。京東多屏終端如圖2所示。

圖2 京東多屏終端

    




推薦系統架構






推薦系統的目標是通過全方位的精準數據刻畫用戶的購買意圖,推薦用戶有購買意願的商品,給用戶最好的體驗,提升下單轉化率,增強用戶黏性。推薦系統的業務架構如圖3所示。

圖3 推薦系統的業務架構

  • 系統架構。對外提供統一的HTTP推薦服務,服務京東所有終端的推薦業務。

  • 模型服務。爲了提高個性化的效果而開發的一系列公共的個性化服務,用戶維度有用戶行爲服務和用戶畫像服務,商品維度有商品畫像,地域維度有小區畫像,特徵維度有特徵服務。通過這些基礎服務,讓個性化推薦更簡單、更精準。

  • 機器學習。算法模型訓練階段,嘗試多種機器學習模型,結合離線測評和在線A/B,驗證不同場景下的算法模型的效果,提高推薦的轉化率。

  • 數據平臺。數據是推薦的源泉,包括數據收集和數據計算。數據雖然是整體推薦架構的最底層,卻是非常重要的,因爲數據直接關係到推薦的健康發展和效果提升。

    

個性化推薦架構


在起步初期,推薦產品比較簡單,每個推薦產品都是獨立服務實現。新版推薦系統是一個系統性工程,其依賴數據、架構、算法、人機交互等環節的有機結合。新版推薦系統的目標,是通過個性化數據挖掘、機器學習等技術,將“千人一面”變爲“千人千面”,提高用戶忠誠度和用戶體驗,提高用戶購物決策的質量和效率;提高網站交叉銷售能力,縮短用戶購物路徑,提高流量轉化率(CVR)。目前新版推薦系統支持多類型個性化推薦,包括商品、店鋪、品牌、活動、優惠券、樓層等。新版個性化推薦系統架構如圖4所示。

圖4 新版個性化推薦系統架構

    

個性化推薦系統架構圖中不同的顏色代表不同的業務處理場景:數據處理部分(最底層綠色模塊),包括離線數據預處理、機器學習模型訓練,以及在線實時行爲的接入、實時特徵計算。推薦平臺(藍色模塊),主要體現響應用戶請求時推薦系統的各服務模塊之間的交互關係。推薦系統核心模塊:

  • 推薦網關。推薦服務的入口,負責推薦請求的合法性檢查、請求分發、在線Debug 以及組裝請求響應的結果。

  • 調度引擎。負責推薦服務按策略調度及流量分發,主要根據配置中心的推薦產品 的實驗配置策略進行分流,支持按用戶分流、隨機分流和按關鍵參數分流。支持自定義埋 點,收集實時數據;支持應急預案功能,處理緊急情況,秒級生效。

  • 推薦引擎。負責推薦在線算法邏輯實現,主要包括召回、過濾、特徵計算、排序、 多樣化等處理過程。

  • 個性化基礎服務。目前主要個性化基礎服務有用戶畫像、商品畫像、用戶行爲、 預測服務。用戶畫像包括用戶的長期興趣、短期興趣、實時興趣。興趣主要有性別、品牌 偏好、品類偏好、購買力等級、自營偏好、尺碼顏色偏好、促銷敏感度、家庭情況等。商品畫像主要包括商品的產品詞、修飾詞、品牌詞、質量分、價格等級、性別、年齡、標籤等。用戶行爲主要獲取用戶近期行爲,包括用戶的搜索、點擊、關注、加入購車、下單等。預測服務主要是基於用戶的歷史行爲,使用機器學習訓練模型,用於調整召回候選集的權重。

  • 特徵服務平臺。負責爲個性服務提供特徵數據和特徵計算,特徵服務平臺主要針對 特徵數據,進行有效的聲明、管理,進而達到特徵資源的共享,快速支持針對不同的特徵進行有效的聲明、上線、測試以及A/B實驗效果對比。

    

個性化技術(橙色模塊),個性化主要通過特徵和算法訓練模型來進行重排序,達到精準推薦的目的。特徵服務平臺主要用於提供大量多維度的特徵信息,推薦場景回放技術是指通過用戶實時場景特徵信息反饋到推薦排序,在線學習(Online-Learning)和深度學習都是大規模特徵計算的個性化服務。

    

個性化推薦系統的主要優勢體現爲支持多類型推薦和多屏產品形態,支持算法模型A/B實驗快速迭代,支持系統架構與算法解耦,支持存儲資源與推薦引擎計算的解耦,支持預測召回與推薦引擎計算的解耦,支持自定義埋點功能;推薦特徵數據服務平臺化,支持推薦場景回放。

數據平臺

    

京東擁有龐大的用戶量和全品類的商品以及多種促銷活動,可以根據用戶在京東平臺上的行爲記錄積累數據,如瀏覽、加購物車、關注、搜索、購買、評論等行爲數據,以及商品本身的品牌、品類、描述、價格等屬性數據的積累,活動、素材等資源的數據積累。這些數據是大規模機器學習的基礎,也是更精確地進行個性化推薦的前提。

    

數據收集


用戶行爲數據收集流程一般是用戶在京東平臺(京東App、京東PC網站、微信手Q)上相關操作,都會觸發埋點請求點擊流系統(專門用於收集行爲數據的平臺系統)。點擊流系統接到請求後,進行實時消息發送(用於實時計算業務消費)和落本地日誌(用於離線模型計算),定時自動抽取行爲日誌到大數據平臺中心。算法人員在數據集市上通過機器學習訓練模型,這些算法模型應用於推薦服務,推薦服務輔助用戶決策,進一步影響用戶的購物行爲,購物行爲數據再發送到點擊流,從而達到數據收集閉環。

    

離線計算


目前離線計算平臺涉及的計算內容主要有離線模型、離線特徵、用戶畫像、商品畫像、用戶行爲,離線計算主要在Hadoop上運行MapReduce,也有部分在Spark平臺上計算,計算的結果通過公共導數工具導入存儲庫。團隊考慮到業務種類繁多、類型複雜以及存儲類型多樣,開發了插件化導數工具,降低離線數據開發及維護的成本。數據離線計算架構如圖5所示。

圖5 數據離線計算架構


在線計算


目前在線計算的範圍主要有用戶實時行爲、用戶實時畫像、用戶實時反饋、實時交互特徵計算等。在線計算是根據業務需求,快速捕捉用戶的興趣和場景特徵,從而實時反饋 到用戶的推薦結果及排序,給用戶專屬的個性化體驗。在線計算的實現消息主要來源於Kafka集羣的消息訂閱和JMQ消息訂閱,通過Storm集羣或Spark集羣實時消費,推送到Redis集羣和HBase集羣存儲。數據在線計算框架如圖6所示。

圖6 數據在線計算架構

  





關鍵技術






推薦系統涉及的技術點比較多,考慮到篇幅有限,這裏重點介紹個性化推薦中比較重要的部分。

推薦引擎


個性化推薦系統的核心是推薦引擎,推薦引擎的一般處理過程是召回候選集,進行規 則過濾,使用算法模型打分,模型融合排序,推薦結果多樣化展示。主要使用的技術是機器學習模型,結合知識圖譜,挖掘商品間的關係,按用戶場景,通過高維特徵計算和海量召回,大規模排序模型,進行個性化推薦,提升排序效果,給用戶極致的購物體驗。


推薦引擎處理邏輯主要包括分配任務,執行推薦器,合併召回結果。推薦器負責召回 候選集、業務規則過濾、特徵計算、排序等處理。推薦引擎技術架構如圖7所示。

圖7 推薦引擎技術架構

分配:根據推薦場景,按召回源進行任務拆分,關鍵是讓分佈式任務到達負載均衡。

推薦器。推薦引擎的核心執行組件,獲取個性化推薦結果,推薦器的實現如圖8所示。

圖8 推薦器架構

  • 召回階段。獲取候選集,一般從基於用戶畫像、用戶偏好、地域等維度進行召回,如果是新用戶的召回資源不夠,會使用冷啓動服務進行召回。

  • 規則過濾階段。對人工規則、一品多商、子母碼、郵差差價等進行過濾。

  • 特徵計算階段。結合用戶實時行爲、用戶畫像、知識圖譜、特徵服務,計算出召回的候選集的特徵向量。

  • 排序階段。使用算法模型對召回候選集打分,根據召回源和候選集的分值,按一定的策略對候選集進行重新排序。

合併:歸併多個推薦器返回的推薦結果,按業務規則進行合併,考慮一定的多樣性。舉例來說,京東App首頁“猜你喜歡”的實現過程如圖9所示。首先根據用戶畫像信息和用戶的近期行爲及相關反饋信息,選擇不同的召回方式,進行業務規則過濾;對滿足要求的候選商品集,提取用戶特徵、商品特徵、用戶和商品的交叉特徵;使用算法模型根據這些特徵計算候選商品的得分;根據每個商品的得分對商品進行排序,同時會豐富推薦理由,考慮用戶體驗,會對最終排好序推薦結果進行微調整,如多樣性展示。

圖9 猜你喜歡實現過程圖

    





用戶畫像





京東大數據有別於其他廠商的地方就是京東擁有最長的價值鏈和全流程的數據積累。京東數據的特徵非常全面,數據鏈記錄着每個用戶的每一步操作:從登錄到搜索、瀏覽、選擇商品、頁面停留時間、評論閱讀、是否關注促銷,以及加入購物車、下訂單、付款、配送方式,最終是否有售後和返修,整個用戶的購物行爲完整數據都被記錄下來。通過對這些用戶行爲及相關場景的分析,構建了京東用戶畫像,如圖10所示。


其中不僅有用戶的年齡、性別、購物習慣,更有根據其購物行爲分析出的大量數據, 例如是否已婚,是否有孩子,對促銷是否敏感等。另外,實時用戶畫像可以秒級分析出用戶的購買意圖,以及實時興趣偏好。京東推薦用戶畫像技術體系如圖11所示。


用戶畫像在京東各終端的推薦產品中都有應用,618推出的智能賣場是用戶畫像的典型 應用場景。智能賣場的產品包括髮現好貨、個性化樓層、秒殺、活動、優惠券、分類、標籤等。以秒殺爲例,推薦結果會根據當前用戶的用戶畫像中的畫像模型(性別、年齡、促銷敏感度、品類偏好、購買力)進行加權,讓用戶最感興趣的商品排在前面。


用戶畫像也是場景推薦的核心基礎。以東家小院爲例,根據用戶的歷史行爲匯聚出很多場景標籤,按當前用戶的畫像模型,調整場景標籤的排序。如用戶選擇“包治百病”標籤,會按用戶畫像中的性別、年齡、品類、促銷敏感度等畫像模型進行推薦商品的重排序。

圖10 用戶畫像示意圖

圖11 京東推薦用戶畫像技術體系






特徵服務平臺





特徵就是一種屬性的描述,特徵是個性化推薦的基礎,常用的特徵分爲單邊特徵和雙邊特徵。單邊特徵是指對象本身的屬性描述,如商品的顏色;雙邊特徵是指兩個對象交互程度的描述,如某用戶最近一小時瀏覽的品牌與候選集中品牌的匹配程度。從特徵生成的場景來說,分爲離線特徵和實時特徵。離線特徵是通過算法模型提前生成,實時特徵是通過實時計算的方式生成的。特徵的質量直接影響推薦的效果、特徵計算的性能,同時影響個性化推薦的處理能力。另外,共享和複用特徵可以提高算法的迭代速度並節約人力成本。


特徵服務管理平臺主要針對特徵數據和特徵計算,進行有效聲明和管理,進而達到特徵資源的共享和複用。特徵服務平臺能快速滿足針對制定不同的特徵進行有效的聲明、上線、測試以及A/B實驗效果對比的需求,做到特徵的可維護、可說明、可驗證。特徵服務平臺的主要功能如下:離線特徵的定製化使用,在線特徵的定製化使用,由定製化特徵產生新的特徵,部分特徵、模型在線申明,不同特徵效果快速A/B。特徵服務平臺架構如圖12所示。

圖12 特徵服務平臺架構


場景特徵回放技術


推薦的一般處理邏輯是每次請求會召回一批商品,然後根據用戶的行爲數據和用戶模型計算出每個商品的特徵。算法模型會根據每個商品的特徵計算出每個商品的得分,最後選出得分最高的幾個商品推薦給用戶。


線上計算特徵這種行爲是一次性的,不會被記錄下來。因此在線下訓練模型的時候,如果想利用上述的特徵,就需要在線下機器上再次計算一遍這些特徵。遺憾的是,線下計算出來的特徵往往不能和線上特徵完全相同,這就導致了模型訓練的效果較差。場景特徵回放示意圖如圖13所示,推薦業務調用推薦引擎,推薦引擎將場景特徵通過特徵回放服務記錄下來,推送至大數據平臺,機器學習根據場景特徵數據重新訓練算法模型,進而影響推薦引擎中的排序,形成一個場景閉環推薦,達到更準確的個性化推薦。

圖13 場景特徵回放示意圖

場景特徵回放技術架構如圖14所示,場景特徵回放技術實現過程如下。線上特徵一般是一系列的數值,我們將這些特徵按照一定的規則組裝成一個字符串,然後將特徵使用HTTP的POST方法異步發送到服務端。

圖14 場景特徵回放技術架構

服務端使用Openresty接收這些HTTP請求,並把HTTP請求中的特徵數據落地到本地磁盤文件中。Openresty是一種高性能的Web服務器,能夠承受很高的QPS,並且具有很高的穩定性,它的這兩點特性保障了服務的穩定。

數據抽取系統把服務器集羣磁盤上的數據抽取到臨時倉庫。


數據抽取系統對數據進行壓縮和過濾處理,然後推送到Hive表中。不同類型的請求會放到不同的分區中,更加方便算法工程師使用這些數據。


個性化推薦系統是一個系統工程,依賴產品、數據、架構、算法、人機交互等進行場景推薦,本節重點從這幾個維度闡述了京東的個性化推薦系統。推薦系統隨着業務發展和社會生活方式的改變而進行不斷升級,經歷了從PC時代到移動互聯時代,從關聯推薦走向個性化推薦,從純商品推薦到多類型推薦的轉變。個性化推薦系統已經實現了千人千面。誠然,個性化的效果也有待提升,有些體驗類的問題也在逐步完善。目前正在進行或有待提高的方面包括:算法方面豐富知識圖譜、深度學習廣泛應用;推薦系統方面會更好地支持海量召回、高維特徵計算、在線學習,推薦更實時,更精準;產品方面已向“滿屏皆智能推薦”方向邁進。最後,希望個性化推薦系統能讓購物變得簡單,變得更人性化、更豐富、更美好。

作者簡介:

fisherman,時任推薦部門推薦系統負責人,負責推薦部門的架構設計及相關研發工作。

Davidxiaozhi,時任推薦部門推薦系統架構師,負責推薦系統的架構設計和系統升級。




   
   
   
 
    
    
    

請添加編  回覆關鍵詞:數據可視化

進羣一起學習交流吧


-今日互動-


你get到了嗎?歡迎文章下方留言互動




如果感覺對你有幫助的話

          
             
             
             
來個「 轉發朋友圈 」和「 在看 」,一起見證你的努力和成長,是對我們最大的支持!

本文分享自微信公衆號 - DataScience(DataScienceTeam)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章