科技

京東購物在微信等場景下的演算法應用實踐

此次分享的是以 WQ(微信手 Q)購物智慧推薦系統介紹智慧推薦演算法在實際中的應用,介紹的 WQ 購物從海量服務到簡單的個性服務到現在的個性化服務發展歷程。他從以下四個部分進行了介紹。

首先講解了 WQ 個性化推薦有哪些產品、有哪些業務;第二部分講如何構建 WQ 推薦平臺,如何支援這些業務需求;第三部分簡單介紹了使用者畫像(使用者畫像、物料畫像);最後講解 WQ 大資料平臺如何搭建。通過這次講解讓大家對推薦系統搭建流程有個初步瞭解,使大家能夠在 3-5 天時間裡通過這種開源框架搭建一個自己的小型推薦系統。

1. WQ 個性化推薦

WQ 個性化推薦在微信購物介面體現的方方面面,主要有關鍵詞推薦(新使用者主要通過上下文資訊推薦,準確度不是很高)、素材推薦(入口圖、焦點圖、品牌特賣)、商品(賣場、秒殺、拼購等)資訊(趣好貨、購物圈)以及其他如猜你喜歡、類目入口(由於手機螢幕大小原因,條目不能全部顯示,智慧通過使用者興趣選擇使用者感興趣的條目)欄目館區等,具體見下圖。

WQ 這些海量個性化推薦業務主要由 ABC(AI 人工智慧、BigData 大資料、Cloud 雲服務)技術支援,主要解決使用者體驗問題,運營效率問題、業務效果問題。如金手指(熱搜詞 + 規則 + 推薦)的下單轉化率提升為 200%-400%,隨著時間略有波動,熱搜詞采用外掛式接入(載入 js 外掛,依據你頁面上下文,類目進行熱搜詞推薦),簡單易用;智慧賣場由原先運營人員和商家談判、選品、上線,週期為兩人一週構建賣場,通過 ABC 基於演算法、基於不同規則生成不同智慧賣場只需一個人員 10 分鐘就能完成,而且程式自動維護,解決效率問題;入口圖(素材)這一方面主要解決使用者體驗問題,使使用者達到所見即所想,打造觸動內心的極致體驗。

除了 ABC 技術提高推薦轉化率,團隊發現組織聯動在推薦效果也有明顯提升,上圖是去年 8 月到 11 月的推薦效果提升,如果單純的靠演算法優化,效果只能提升 30% 達到 50-60% 就是演算法極限,但是如果和產品聯動效果由 30% 提升到 90%,因此建議在做演算法優化是加入產品運營聯動。如在穿搭推薦中先前無論如何演算法優化,轉化率一直很低,最後發現是產品素材質量太差,無法引起使用者興趣。另一方面在智慧賣場做資料探勘、爬蟲抓取關聯商品,再進行聚類確實能夠發現人的行為,但是運營能抓住使用者價值點,如果在物料上加入這些價值點,能夠明顯提升推薦效果。

2. WQ 推薦平臺

WQ 推薦系統需要知道解決那些問題:

(1)首先業務需求多,原先想的是一個一個業務對接,但是關鍵詞開發需要人員,資訊開發也需要人員,但是開發人員資源有限,開發壓力大,無法應對也無需求;

(2)平臺多,接入工作流量大,每個都去對接工作量大;

(3)跨公司問題,資料不是完全共享,安全效能要求高,只能系統對接,因此流量紅點壓力大;

(4)使用者體驗問題,只能向前不能倒退

(5)效果問題,增長放緩,只能從技術、演算法方面來提升;

(6)使用者量大,資源有限等。

推薦系統核心是“資料”、“演算法”、“系統”,有這三種推薦系統就能執行。具體工作是:首先使用者會請求我們的業務系統,之後請求推薦引擎,推薦接入實現業務分流到對應的推薦平臺,然後通過推薦演算法、模型返回使用者所需資料。除此之外還有一個數據的反向上報(行為上報),因為我們的推薦都是基於大資料,如果我們能收集使用者的行為越多,對使用者的行為就越準,推薦也就越精確。對使用者的(點選,搜尋,瀏覽)做 DMP(大資料管理平臺),讓模型訓練演算法,其響應時間一般是限度控制在 300-500 毫秒。

WQ 推薦系統平臺架構如下所示,依據架構依據相關開源軟體能夠 3-5 天搭建一個推薦系統。首先業務層,主要是有哪些業務;其次是接入層,我們有第三方接入引擎,還要做分流,都要做 A/B text;接入後要做推薦引擎,我們分為三層:為召回策略(新增條件,選擇最相關)、打分排序、重排策略;引擎打分需要模型,這一塊為計算層。再然後是資料層,這塊主要是使用者畫像和物料畫像以及資料分析等;最底層是基礎平臺,來支援我們做推薦,演算法訓練,我們的實時用的是 Spark,離線用的是 Hadoop,用 CM 做整合,用 Sklearn/TensorFlow 做離線分析,對於大賬號推送用全站資料(京東大資料平臺)比 WQ 效果要好。除此之外比較重要的一個是資料上報,最開始用的是自己研發的用 C/C++ 實現,後來需要與業界對標,採用 Flume 和 Kafka。叢集時間是分鐘級,但是使用者畫像是毫秒級,使用者畫像是基於使用者行為而不是資料庫。

在平臺接入時,需要簡單、通用、快速、開放為目標。將業務抽象為物料,統一格式,業務只需要實現物料上報、請求服務、行為上報三步。對於演算法選擇前期配置就能快速上線,選擇快速上線演算法是熱度和 IOR 演算法。智慧接入:由於平臺多,通過物料、使用者、平臺判斷哪個平臺轉化效率高,就將平臺流量多分給推薦平臺,達到整體最優,對於模型選擇各自去訓練,然後選擇、融合。

接入之後就是推薦引擎,常見的有召回策略、打分策略、重排策略。召回策略如下所示,所謂個性化召回就是畫像打上的那些標籤,是偏向某個類目還是某個品牌偏好等做召回,關聯規則前鍵召回是根據使用者前面的行為來關聯後續感興趣的商品;打分就是和模型結合;重排也有很多演算法,例如特徵加權就是使用者有什麼偏好給他提前。重排主要是基於個人,模型是基於群體特徵,重排命中也能很好提升效率,EE 策略主要改善體驗問題,我們發現如果一個人行為很少,進來之後什麼都不點,如果模型在 5-10 分鐘未更新,推薦的就是一直是這個,如果特別偏門,群體又比較小,模型就沒有影響,個人就需要推薦一些新的東西,EE 策略就是以一定概率來顯示推薦而不是單純以排名推薦,我們用的是湯姆森演算法。

接下來講一下模型,我們的推薦模型就是解決 GMV(成交)最大化、CTR * CVR 最大化、CTR 最大化(首頁、中間頁引流,最容易,點選轉化率)核心是“他點的”/“他看的”。這個模型還有一個瞬息系約束,一方面就是 EE 策略,另一個就是某一類商品在一定時間不能超過多少,保證使用者體驗。在評價推薦效果方面,如果直接做到下單,其中很多因素不可控,這時考慮 CTR * CVR 模型,提升轉化率,主要考慮物料、使用者以及上下文場景。

接下來就是機器學習過程,主要有環境搭建、收集資料、分析資料、準備資料、訓練演算法、測試演算法、應用演算法。這個過程很簡單,但是我們要解決冷啟動問題、假曝光問題(這個主要是產品預載入,在使用者還未看資料就顯示,這種就是假曝光)異常資料清洗問題(爬蟲、刷單)、正負樣本問題、資料稀疏問題等問題。在推薦過程中資料是基礎中的基礎,下面是資料處理中常用的方法。

在演算法裡面對我們比較受益的是機器學習軍規,做 C++ 或前端時有雅虎軍規、effective C++ 這些都有很規則性的東西告訴你怎麼做。在機器學中有一個機器學習軍規,其實在 ML 中首要的是工程問題,其次才是演算法問題。我們把資料做好了效果也就好了,如果大神能做 95 分,我們做好了這些也有 80 分。

而使用者體驗方面,一個是要準,另一個是要新。新就是 EE 演算法,準就是位置偏見,例如冷啟動時你把某一個商品放在前面,那麼他的轉化率一直高;這種就不能他分值高就一直在前面,這種情況就要看不同商品在此位置時的轉化率,這個就是位置偏見。

3. WQ 使用者畫像

接下來簡單介紹下使用者畫像,做推薦時你首先要知道使用者是誰,如果你只用 cookie Mapping 的話效果太差,這個我們是和微信合作,我們是拿到 open ID 的,如果有微信場景可以參考這種方式;其次使用者是什麼使用者,這就是使用者畫像;再者使用者還是那個使用者麼(可能前一秒和下一秒不是同一個使用者)因此要注意更新。畫像主要解決身份問題,還有就是 WQ 資料和自己收集資料以及全站資料,這些資料整個融合而做的一個使用者畫像。

使用者畫像的系統架構首先是一個內外部資料的融合,然後是做採集(分析、清洗、格式化然後做一些畫像計算)這裡用到很多演算法,如統計演算法等。

4. WQ 大資料平臺

大資料平臺主要解決實時問題、系統複雜問題、業務支援(支援 ML 演算法等)下面是系統需要的達到的目標。

接下來講一下大資料生態,最開始時是平行計算(最原始的那種命令列平行計算)然後就是 Hadoop(MapReduce 和 HDFS 開始也是簡單 UI)在 Hadoop V2 就有了 HBase 之後就是更快的 Spark(Hive、Flume、Kafka),下面是整個大資料生態。

最後講一下大資料採集,對於我們做賬務,事務型的資料不能丟,可以慢不能丟,所以可以異地多活(主要是做一個異地防或多級防的備份),這個需要看具體業務需求。

歡迎工作一到五年的Java工程師朋友們加入Java程式設計師開發: 721575865

群內提供免費的Java架構學習資料(裡面有高可用、高併發、高效能及分散式、Jvm效能調優、Spring原始碼,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多個知識點的架構資料)合理利用自己每一分每一秒的時間來學習提升自己,不要再用"沒有時間“來掩飾自己思想上的懶惰!趁年輕,使勁拼,給未來的自己一個交代!

Reference:科技日報

看更多!請加入我們的粉絲團

轉載請附文章網址

不可錯過的話題