1. 程式人生 > >深度解析京東個性化推薦系統演進史

深度解析京東個性化推薦系統演進史

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

京東推薦的演進史是絢麗多彩的。京東的推薦起步於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,時任推薦部門推薦系統架構師,負責推薦系統的架構設計和系統升級。

編者按:文章摘自《決戰618:探祕京東技術取勝之道》,本書從前端的網站、移動入口到後端的結算、履約、物流、供應鏈等體系,系統展示了京東全新的技術成就。同時,也涵蓋了京東正在充分運用大資料、人工智慧等先進技術對所有技術體系架構進行整體改造,使其始終保障技術的先進性的方法,以及京東對未來科技發展的積極探索和展望。詳情點選:https://item.jd.com/12202253.html