京東推薦系統架構揭祕:大數據時代下的智能化改造

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

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

隨着業務的快速發展以及移動互聯網的到來,多屏(京東App、京東PC商城、M站、微信、手Q等)互通,推薦類型從傳統的商品推薦,逐步擴展到其餘類型的推薦,如活動、分類、優惠券、樓層、入口圖、文章、清單、好貨等。個性化推薦業務需求比較強烈,基於大數據和個性化推薦算法,實現向不一樣用戶展現不一樣內容的效果。爲此,團隊於2015年末再次升級推薦系統。2016年618期間,個性化推薦大放異彩,特別是團隊開創的「智能賣場」,實現了活動會場的個性化分發,不只帶來GMV的明顯提高,也大幅下降了人工成本,大大提升了流量效率和用戶體驗,從而達到商家和用戶共贏,此產品得到了2016年度的集團優秀產品。爲了更好地支撐多種個性化場景推薦業務,推薦系統一直在迭代優化升級,將來將朝着「滿屏皆智能推薦」的方向發展。面試

推薦產品

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

1 . 推薦產品發展過程

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

2 . 多屏多類型產品形態

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

推薦系統架構

1 .總體業務架構

推薦系統的目標是經過全方位的精準數據刻畫用戶的購買意圖,推薦用戶有購買意願的商品,給用戶最好的體驗,提高下單轉化率,加強用戶黏性。負載均衡

系統架構。對外提供統一的 HTTP 推薦服務,服務京東全部終端的推薦業務。框架

模型服務機器學習

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

機器學習

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

數據平臺

數據是推薦的源泉,包括數據收集和數據計算。數據雖然是總體推薦架 構的最底層,倒是很是重要的,由於數據直接關係到推薦的健康發展和效果提高。

2 . 個性化推薦架構

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

個性化推薦系統架構圖中不一樣的顏色表明不一樣的業務處理場景:

數據處理部分(最底層灰色模塊),包括離線數據預處理、機器學習模型訓練,以及在線實時行爲的接入、實時特徵計算。

推薦平臺(藍色模塊),主要體現響應用戶請求時推薦系統的各服務模塊之間的交互關係。推薦系統核心模塊:

推薦網關

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

調度引擎

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

推薦引擎

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

個性化基礎服務

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

特徵服務平臺

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

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

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

數據平臺

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

1 . 數據收集

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

2 . 離線計算

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

3 . 在線計算

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

推薦引擎

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

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

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

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

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

召回階段

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

規則過濾階段

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

特徵計算階段

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

排序階段

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

◆ 合併。歸併多個推薦器返回的推薦結果,按業務規則進行合併,考慮必定的多樣性。

舉例來講,京東App首頁「猜你喜歡」的實現過程以下圖。

首先根據用戶畫像信息和用戶的近期行爲及相關反饋信息,選擇不一樣的召回方式,進行業務規則過濾;對知足要求的候選商品集,提取用戶特徵、商品特徵、用戶和商品的交叉特徵;使用算法模型根據這些特徵計算候選商品的得分;根據每一個商品的得分對商品進行排序,同時會豐富推薦理由,考慮用戶體驗,會對最終排好序推薦結果進行微調整,如多樣性展現。

感興趣能夠加Java架構師羣獲取Java工程化、高性能及分佈式、高性能、深刻淺出。高架構。性能調優、Spring,MyBatis,Netty源碼分析和大數據等多個知識點高級進階乾貨的直播免費學習權限 都是大牛帶飛 讓你少走不少的彎路的 羣..號是:855801563 對了 小白勿進 最好是有開發經驗

注:加羣要求

一、具備工做經驗的,面對目前流行的技術不知從何下手,須要突破技術瓶頸的能夠加。

二、在公司待久了,過得很安逸,但跳槽時面試碰壁。須要在短期內進修、跳槽拿高薪的能夠加。

三、若是沒有工做經驗,但基礎很是紮實,對java工做機制,經常使用設計思想,經常使用java開發框架掌握熟練的,能夠加。

四、以爲本身很牛B,通常需求都能搞定。可是所學的知識點沒有系統化,很難在技術領域繼續突破的能夠加。

5.阿里Java高級大牛直播講解知識點,分享知識,多年工做經驗的梳理和總結,帶着你們全面、科學地創建本身的技術體系和技術認知!

相關文章
相關標籤/搜索