在電商領域,推薦的價值在于挖掘用戶潛在購買需求,縮短用戶到商品的距離,提升用戶的購物體驗。
京東推薦的演進史是絢麗多彩的。京東的推薦起步于2012年,當時的推薦產品甚至是基于規則匹配做的。整個推薦產品線組合就像一個個松散的原始部落一樣,部落與部落之前沒有任何工程、算法的交集。2013年,國內大數據時代到來,一方面如果做的事情與大數據不沾邊,都顯得自己水平不夠,另外一方面京東業務在這一年開始飛速發展,所以傳統的方式已經跟不上業務的發展了,為此推薦團隊專門設計了新的推薦系統。
隨著業務的快速發展以及移動互聯網的到來,多屏(京東App、京東PC商城、M站、微信手Q等)互通,推薦類型從傳統的商品推薦,逐步擴展到其他類型的推薦,如活動、分類、優惠券、樓層、入口圖、文章、清單、好貨等。個性化推薦業務需求比較強烈,基于大數據和個性化推薦算法,實現向不同用戶展示不同內容的效果。
為此,團隊于2015年底再次升級推薦系統。2016年618期間,個性化推薦大放異彩,特別是團隊開創的“智能賣場”,實現了活動會場的個性化分發,不僅帶來GMV的明顯提升,也大幅降低了人工成本,大大提高了流量效率和用戶體驗,從而達到商家和用戶雙贏,此產品獲得了2016年度的集團產品。為了更好地支撐多種個性化場景推薦業務,推薦系統一直在迭代優化升級,未來將朝著“滿屏皆智能推薦”的方向發展。
用戶從產生購買意向,到經歷購買決策,直至后下單的整個過程,在任何一個購物鏈路上的節點,推薦產品都能在一定程度上幫助用戶決策。
推薦產品發展歷程主要經歷了幾個階段(圖1),由簡單的關聯推薦過程到個性化推薦,逐步過渡到場景智能推薦。從相關、相似的產品推薦過渡到多特征、多維度、用戶實時行為、結合用戶場景進行的全方位智能推薦。
多類型主要指推薦類型覆蓋到多種類型,如商品、活動、分類、優惠券、樓層、入口圖、文章、清單、好貨等。在移動互聯時代,多屏場景非常普遍,整合用戶在多屏的信息,能使個性化推薦更精準。多屏整合的背后技術是通過前端埋點,用戶行為觸發埋點事件,通過點擊流系統進行多屏的行為信息收集。這些行為數據通過實時流計算平臺來計算用戶的興趣偏好,從而根據用戶興趣偏好對推薦結果進行重排序,達到個性化推薦的效果。京東多屏終端如圖2所示。
推薦系統的目標是通過全方位的精準數據刻畫用戶的購買意圖,推薦用戶有購買意愿的商品,給用戶好的體驗,提升下單轉化率,增強用戶黏性。推薦系統的業務架構如圖3所示。
在起步初期,推薦產品比較簡單,每個推薦產品都是獨立服務實現。新版推薦系統是一個系統性工程,其依賴數據、架構、算法、人機交互等環節的有機結合。新版推薦系統的目標,是通過個性化數據挖掘、機器學習等技術,將“千人一面”變為“千人千面”,提高用戶忠誠度和用戶體驗,提高用戶購物決策的質量和效率;提高網站交叉銷售能力,縮短用戶購物路徑,提高流量轉化率(CVR)。目前新版推薦系統支持多類型個性化推薦,包括商品、店鋪、品牌、活動、優惠券、樓層等。新版個性化推薦系統架構如圖4所示。
個性化推薦系統架構圖中不同的顏色代表不同的業務處理場景:數據處理部分(底層綠色模塊),包括離線數據預處理、機器學習模型訓練,以及在線實時行為的接入、實時特征計算。推薦平臺(藍色模塊),主要體現響應用戶請求時推薦系統的各服務模塊之間的交互關系。推薦系統核心模塊:
個性化技術(橙色模塊),個性化主要通過特征和算法訓練模型來進行重排序,達到精準推薦的目的。特征服務平臺主要用于提供大量多維度的特征信息,推薦場景回放技術是指通過用戶實時場景特征信息反饋到推薦排序,在線學習(Online-Learning)和深度學習都是大規模特征計算的個性化服務。
個性化推薦系統的主要優勢體現為支持多類型推薦和多屏產品形態,支持算法模型A/B實驗快速迭代,支持系統架構與算法解耦,支持存儲資源與推薦引擎計算的解耦,支持預測召回與推薦引擎計算的解耦,支持自定義埋點功能;推薦特征數據服務平臺化,支持推薦場景回放。
京東擁有龐大的用戶量和全品類的商品以及多種促銷活動,可以根據用戶在京東平臺上的行為記錄積累數據,如瀏覽、加購物車、關注、搜索、購買、評論等行為數據,以及商品本身的品牌、品類、描述、價格等屬性數據的積累,活動、素材等資源的數據積累。這些數據是大規模機器學習的基礎,也是更精確地進行個性化推薦的前提。
用戶行為數據收集流程一般是用戶在京東平臺(京東App、京東PC網站、微信手Q)上相關操作,都會觸發埋點請求點擊流系統(專門用于收集行為數據的平臺系統)。點擊流系統接到請求后,進行實時消息發送(用于實時計算業務消費)和落本地日志(用于離線模型計算),定時自動抽取行為日志到大數據平臺中心。算法人員在數據集市上通過機器學習訓練模型,這些算法模型應用于推薦服務,推薦服務輔助用戶決策,進一步影響用戶的購物行為,購物行為數據再發送到點擊流,從而達到數據收集閉環。
目前離線計算平臺涉及的計算內容主要有離線模型、離線特征、用戶畫像、商品畫像、用戶行為,離線計算主要在Hadoop上運行MapReduce,也有部分在Spark平臺上計算,計算的結果通過公共導數工具導入存儲庫。團隊考慮到業務種類繁多、類型復雜以及存儲類型多樣,開發了插件化導數工具,降低離線數據開發及維護的成本。數據離線計算架構如圖5所示。
目前在線計算的范圍主要有用戶實時行為、用戶實時畫像、用戶實時反饋、實時交互特征計算等。在線計算是根據業務需求,快速捕捉用戶的興趣和場景特征,從而實時反饋 到用戶的推薦結果及排序,給用戶專屬的個性化體驗。在線計算的實現消息主要來源于Kafka集群的消息訂閱和JMQ消息訂閱,通過Storm集群或Spark集群實時消費,推送到Redis集群和HBase集群存儲。數據在線計算框架如圖6所示。
推薦系統涉及的技術點比較多,考慮到篇幅有限,這里重點介紹個性化推薦中比較重要的部分。
個性化推薦系統的核心是推薦引擎,推薦引擎的一般處理過程是召回候選集,進行規則過濾,使用算法模型打分,模型融合排序,推薦結果多樣化展示。主要使用的技術是機器學習模型,結合知識圖譜,挖掘商品間的關系,按用戶場景,通過高維特征計算和海量召回,大規模排序模型,進行個性化推薦,提升排序效果,給用戶極致的購物體驗。
推薦引擎處理邏輯主要包括分配任務,執行推薦器,合并召回結果。推薦器負責召回候選集、業務規則過濾、特征計算、排序等處理。推薦引擎技術架構如圖7所示。
分配。根據推薦場景,按召回源進行任務拆分,關鍵是讓分布式任務到達負載均衡。
推薦器。推薦引擎的核心執行組件,獲取個性化推薦結果,推薦器的實現如圖8所示。
合并。歸并多個推薦器返回的推薦結果,按業務規則進行合并,考慮一定的多樣性。舉例來說,京東App首頁“猜你喜歡”的實現過程如圖9所示。首先根據用戶畫像信息和用戶的近期行為及相關反饋信息,選擇不同的召回方式,進行業務規則過濾;對滿足要求的候選商品集,提取用戶特征、商品特征、用戶和商品的交叉特征;使用算法模型根據這些特征計算候選商品的得分;根據每個商品的得分對商品進行排序,同時會豐富推薦理由,考慮用戶體驗,會對終排好序推薦結果進行微調整,如多樣性展示。
京東大數據有別于其他廠商的地方就是京東擁有長的價值鏈和全流程的數據積累。京東數據的特征非常全面,數據鏈記錄著每個用戶的每一步操作:從登錄到搜索、瀏覽、選擇商品、頁面停留時間、評論閱讀、是否關注促銷,以及加入購物車、下訂單、付款、配送方式,終是否有售后和返修,整個用戶的購物行為完整數據都被記錄下來。通過對這些用戶行為及相關場景的分析,構建了京東用戶畫像,如圖10所示。
其中不僅有用戶的年齡、性別、購物習慣,更有根據其購物行為分析出的大量數據,例如是否已婚,是否有孩子,對促銷是否敏感等。另外,實時用戶畫像可以秒級分析出用戶的購買意圖,以及實時興趣偏好。京東推薦用戶畫像技術體系如圖11所示。
用戶畫像在京東各終端的推薦產品中都有應用,618推出的智能賣場是用戶畫像的典型應用場景。智能賣場的產品包括發現好貨、個性化樓層、秒殺、活動、優惠券、分類、標簽等。以秒殺為例,推薦結果會根據當前用戶的用戶畫像中的畫像模型(性別、年齡、促銷敏感度、品類偏好、購買力)進行加權,讓用戶感興趣的商品排在前面。
用戶畫像也是場景推薦的核心基礎。以東家小院為例,根據用戶的歷史行為匯聚出很多場景標簽,按當前用戶的畫像模型,調整場景標簽的排序。如用戶選擇“包治百病”標簽,會按用戶畫像中的性別、年齡、品類、促銷敏感度等畫像模型進行推薦商品的重排序。
特征就是一種屬性的描述,特征是個性化推薦的基礎,常用的特征分為單邊特征和雙邊特征。單邊特征是指對象本身的屬性描述,如商品的顏色;雙邊特征是指兩個對象交互程度的描述,如某用戶近一小時瀏覽的品牌與候選集中品牌的匹配程度。從特征生成的場景來說,分為離線特征和實時特征。離線特征是通過算法模型提前生成,實時特征是通過實時計算的方式生成的。特征的質量直接影響推薦的效果、特征計算的性能,同時影響個性化推薦的處理能力。另外,共享和復用特征可以提高算法的迭代速度并節約人力成本。
特征服務管理平臺主要針對特征數據和特征計算,進行有效聲明和管理,進而達到特征資源的共享和復用。特征服務平臺能快速滿足針對制定不同的特征進行有效的聲明、上線、測試以及A/B實驗效果對比的需求,做到特征的可維護、可說明、可驗證。特征服務平臺的主要功能如下:離線特征的定制化使用,在線特征的定制化使用,由定制化特征產生新的特征,部分特征、模型在線申明,不同特征效果快速A/B。特征服務平臺架構如圖12所示。
推薦的一般處理邏輯是每次請求會召回一批商品,然后根據用戶的行為數據和用戶模型計算出每個商品的特征。算法模型會根據每個商品的特征計算出每個商品的得分,后選出得分高的幾個商品推薦給用戶。
線上計算特征這種行為是一次性的,不會被記錄下來。因此在線下訓練模型的時候,如果想利用上述的特征,就需要在線下機器上再次計算一遍這些特征。遺憾的是,線下計算出來的特征往往不能和線上特征完全相同,這就導致了模型訓練的效果較差。場景特征回放示意圖如圖13所示,推薦業務調用推薦引擎,推薦引擎將場景特征通過特征回放服務記錄下來,推送至大數據平臺,機器學習根據場景特征數據重新訓練算法模型,進而影響推薦引擎中的排序,形成一個場景閉環推薦,達到更準確的個性化推薦。
場景特征回放技術架構如圖14所示,場景特征回放技術實現過程如下。線上特征一般是一系列的數值,我們將這些特征按照一定的規則組裝成一個字符串,然后將特征使用HTTP的POST方法異步發送到服務端。
服務端使用Openresty接收這些HTTP請求,并把HTTP請求中的特征數據落地到本地磁盤文件中。Openresty是一種高性能的Web服務器,能夠承受很高的QPS,并且具有很高的穩定性,它的這兩點特性保障了服務的穩定。
數據抽取系統把服務器集群磁盤上的數據抽取到臨時倉庫。
數據抽取系統對數據進行壓縮和過濾處理,然后推送到Hive表中。不同類型的請求會放到不同的分區中,更加方便算法工程師使用這些數據。
個性化推薦系統是一個系統工程,依賴產品、數據、架構、算法、人機交互等進行場景推薦,本節重點從這幾個維度闡述了京東的個性化推薦系統。推薦系統隨著業務發展和社會生活方式的改變而進行不斷升級,經歷了從PC時代到移動互聯時代,從關聯推薦走向個性化推薦,從純商品推薦到多類型推薦的轉變。個性化推薦系統已經實現了千人千面。誠然,個性化的效果也有待提升,有些體驗類的問題也在逐步完善。目前正在進行或有待提高的方面包括:算法方面豐富知識圖譜、深度學習廣泛應用;推薦系統方面會更好地支持海量召回、高維特征計算、在線學習,推薦更實時,更精準;產品方面已向“滿屏皆智能推薦”方向邁進。后,希望個性化推薦系統能讓購物變得簡單,變得更人性化、更豐富、更美好。
本站文章版權歸原作者及原出處所有 。內容為作者個人觀點, 并不代表本站贊同其觀點和對其真實性負責,本站只提供參考并不構成任何投資及應用建議。本站是一個個人學習交流的平臺,網站上部分文章為轉載,并不用于任何商業目的,我們已經盡可能的對作者和來源進行了通告,但是能力有限或疏忽,造成漏登,請及時聯系我們,我們將根據著作權人的要求,立即更正或者刪除有關內容。本站擁有對此聲明的最終解釋權。