多業務融合推薦策略實踐與思考

導讀: 58同城作爲分類信息網站,服務覆蓋多個領域,如房屋租售、招聘求職、二手買賣等等,不同的業務有不同的特點,這使得多業務融合推薦成爲一大挑戰。如何準確挖掘用戶的需求?如何平衡各業務之間的流量分配?如何增加多樣性提升用戶體驗?這些問題將在本次分享中解答。

01 推薦系統整體架構

58的推薦系統架構主要分成三部分:

  • 對外接口層:負責對外輸入輸出、展示功能,服務於首頁、詳情頁等等場景;
  • 業務邏輯層:包含推薦系統的主要模塊,如興趣服務、召回模塊、排序模塊等;
  • 數據算法層:負責底層數據的存儲和處理,如業務、日誌數據,提供召回源、排序模型、數據緩存等一些服務。

在推薦系統中需要持續優化的環節有召回、排序和重排。召回方面,58團隊採用用戶興趣召回和向量化召回相結合的方式,其中向量化召回是通過word2vec、深度興趣模型等多種方式構建帖子的向量化表徵;排序方面全量採用深度學習模型,同時也在探索多目標一體化深度學習模型。

02 場景介紹

58同城首頁信息流位於app的下方,其中包含多個業務門類,如招聘、租房、二手車、二手房等,在58內部把這些信息統稱爲帖子。一個帖子代表某個用戶發佈的信息,比如一個二手車帖子,包含某個用戶發佈的二手車車型、車系、公里數、價格等等信息。

特點與挑戰

本文主要優化的是58同城的首頁信息流,這個業務場景的特點有:

  • 強興趣:大部分用戶都是帶着自己的需求進入app;不同的興趣週期有所差異,比如租房週期短,買房週期長。
  • 多業務:首頁的訪問量較大(千萬級別pv),如何把流量分配給不同的業務就很關鍵。
  • 推薦感知:雖然用戶的目標單一,但是如何做到推薦結果的多樣性就需要對其優化。

58app首頁推薦業務 ( 多品類推薦 ) 主要面臨的挑戰在於:

  • 如何滿足用戶對於不同品類的興趣?( 用戶興趣問題 )
  • 推薦的業務比例如何和平臺的業務比例進行匹配?( 流量分配 )
  • 是推薦單一品類效果好,還是推薦不同品類的混排?( 混排策略 )
  • 如何平衡CTR和多樣性?( 動態刷新機制 )

03 重排優化

1. 興趣策略

這個優化主要針對第一個挑戰:強興趣下的多業務融合。

常見的推薦系統,如新聞推薦、視頻推薦、商品推薦等都是要先建立用戶和商品之間的聯繫,然後通過適當的算法進行匹配。在58同城中,用戶既有買家也有賣家,所以不僅要構建用戶和商品的聯繫,還要構建買家和賣家之間的聯繫。這就需要分別爲用戶和商品打標籤,這也是興趣策略的重點。

以圖中租房用戶爲例,先分別提取租客尋找房子的標籤和房東在帖子中提供的標籤,然後在兩者之間建立聯繫形成匹配。

然而,如果直接利用原始的標籤進行推薦,那麼效果肯定是不理想的。爲了改善推薦效果,還要通過一定的策略挖掘出用戶當前最迫切的需求。

在對原始策略進行優化時需要考慮以下幾個方向:

  • 實時性。用戶的興趣會隨時間而變化,要突出用戶新的興趣,就需要把時間較長的歷史興趣和實時興趣分開處理,給予不同的重要性。
  • 興趣分層。在推薦時,不同匹配程度的興趣往往會混合在一起推薦,這時候就需要對興趣加以區分。
  • 興趣去噪。權重比較低的或者比較久遠的興趣會影響推薦結果,需要對興趣進行去噪。
  • 向量化興趣。從標籤的興趣逐漸過渡到向量化的興趣,逐漸與向量化召回相結合。

那麼具體如何操作呢?下面結合優化的方向,介紹打標籤的具體步驟:

第一步:數據抽取

通過埋點數據獲取用戶的行爲,典型的方法有兩種:

  • 通過點擊行爲抽取對應的標籤組。如上圖通過租房點擊抽取出地域、價格等標籤;
  • 使用轉化行爲。即利用點擊後有的進一步的操作行爲,如打電話、提交簡歷、實際成交等,這些行爲信息量更大,會被賦予更高的權重。

第二步:數據清洗

對重複或錯誤的埋點、缺失或錯誤的字段進行修正。

第三步:興趣分類

太久遠的標籤可能不符合當前用戶的需求,比如以下幾種經典情況:

  • 興趣消失:某用戶幾周前找保潔,現在很可能沒有這個需求了;
  • 興趣轉移:某用戶兩週前找工作,現在找到工作需要找房子,那麼興趣就由找工作轉移到租房。

考慮到以上情況,58把用戶興趣分成歷史興趣和實時興趣兩大類。

第四步:興趣計算

通過兩個獨立的流程分別處理歷史興趣和實時興趣,這裏還要考慮兩種興趣的存儲系統是否分開,信息結構是否保持一致。

  • 歷史興趣一般就是每天例行的召回形成
  • 實時興趣主要由實時流式服務提供

第五步:興趣衰減

58採用的這個衰減公式簡單直觀,經過相同的時間衰減的程度是一致的。具體的參數可以通過abtest來檢驗,上面的表格是對比不做時間衰減情況下的檢驗結果,其中參數選擇7天的效果最好。

經過時間衰減後,用戶近期興趣的權重會上升,而太久遠的興趣的權重會下降,這樣可以解決以下幾個問題:

  • 同一業務內的興趣轉移:比如用戶在A小區找房子後來轉去B小區找房子
  • 不同業務之間的興趣轉移:比如用戶前幾周找工作,現在找房子
  • 興趣消失:比如用戶在一個月前找保潔,現在已經沒有這個需求了

與此同時,還要考慮不同業務之間的差異,並根據差異設置不同的係數。比如二手房的成交週期很長,租房的成交週期就比較短,那麼這兩者的衰減速度就可以設置不同的值。

第六步:興趣合併

這裏分爲時間和品類兩個維度

  • 時間維度:把用戶不同時間的興趣合併在一起,形成一個時間段內用戶興趣變化的序列,可以用於排序召回的分析;
  • 品類維度:把不同品類的興趣合併在一起,形成用戶在不同領域的畫像,可以用於類似興趣轉移分析、新內容試探等多樣性優化的嘗試。

這些興趣彙總以後最終形成一個用戶所有時間段內所有業務的基礎數據

第七步:興趣合併

有的標籤之間可能會有衝突,比如在正常情況下,真正有購車需求的人不會同時關注經濟實惠的平價車和昂貴奢侈的豪華車。然而在實際的數據中,會發現一個用戶同時存在40萬以上和5萬以下這種衝突的標籤,如果同時採用這些有衝突的標籤計算推薦結果,那麼會造成很糟糕的用戶體驗。

58用戶在二手車價格標籤上的分佈,可以看到也就是說大多數用戶只會關注1-2組價格區間,如果同一用戶關注的價格區間超過幾個,那麼這種用戶可能就是車商。

通過聚合策略可以避免同一類目的興趣過於分散,這樣更容易貼近用戶的需求。58採用了優勢組直選和長尾組淘汰兩種方式:

  • 優勢組直選:直接保留權重最大的價格組,淘汰剩下的其他價格組。一般權重比較集中的情況下使用這種策略,比如上圖的第一個例子中,關注5-8萬價格區間的佔比70%,那麼僅保留該區間,淘汰剩下的其他區間。
  • 長尾組淘汰:淘汰佔比很小的價格組,保留剩下的其他價格組。一般權重比較分散的情況採用這種策略,比如上圖第二個例子中,前面兩個價格區間雖然佔比較大但優勢不明顯,而最後一個價格區間權重小,那麼就淘汰最後那個價格區間,保留前面兩個價格區間。

第八步:興趣去噪

這一步的目的是除去相關性低的興趣,主要有以下幾類:

  • 由於時間久遠導致興趣降低
  • 誤點擊或日誌錯誤導致記錄的興趣有誤

根據我們的數據調研,權重比較小的興趣佔比不會高於15%,淘汰這些興趣會有一定的效果改善,比如上圖中把位於6%和4%這樣的興趣刪除以後效果會得到改善。

第九步:興趣擴展

  • 相關擴展:在用戶原有的興趣基礎上進行小範圍的修正或拓展
  • 泛擴展:用戶原有的興趣非常少導致召回通道產生的候選集不夠,需要更大範圍地對這個用戶的興趣進行擴展。

從表格中可以看出不同類型的興趣效果不同,擴展出來的興趣的效果遠低於原始興趣,而泛擴展的效果會更差。所以在展示的時候,需要對它們進行分層並設定優先級,原始興趣的優先級比較高,相關擴展和泛擴展的優先級比較低。

另外,興趣擴展的方法可以分爲品類內部標籤的縱向擴展和跨品類的遷移擴展。

  • 品類內部標籤的縱向擴展:在原始標籤的基礎上對標籤的取值範圍和枚舉值進行擴展,比如上圖中租房的地域可以擴大其範圍;價格上可以進行上下調整。具體調整的參數需要根據實驗或者業務的經驗來確定。
  • 跨品類的遷移擴展:在相關品類之間進行跨品類擴展,比如從合租擴展到整租、品牌公寓;找工作的類別從物流擴展到倉庫管理、供應鏈管理。這種興趣的遷移和擴展也可以應用在多樣性的優化上。

經過這些擴展,每個用戶的標籤可能就會擴展成幾十個或者上百個。

第十步:興趣排序

最後一步是把興趣按照順序排序,因爲在召回、過濾、排序重排、分配流量上都會根據這些排序類分配優先級。

2. 業務流量分配策略

這個優化主要針對第二個挑戰:多業務之間的流量均衡

實際業務需求

由於58首頁信息流是多品類混合推薦的場景,推薦的結果既要滿足用戶個性化需求,又要滿足在整體上各業務的佔比與58實際業務流量比例相符合,比如在58平臺上,整租房的用戶要多於合租房的用戶,那麼就要求推薦的帖子中整租房的比例要高於合租房的比例。

原始策略

  • 直接採用精排後的結果:直接採用精排以後得到的序列作爲最終展示。由於精排的結果主要是以預估ctr作爲評價指標,這會導致熱門貼或熱門品類始終佔有比較大的比例,效果不理想。
  • 採用統一的分配比例:假設58平臺在招聘、租房、二手車與本地服務的流量比例爲40:30:20:10,那麼所有用戶的推薦結果都按同樣的比例分配。雖然這種策略滿足總流量分配需求,但並不滿足用戶個性化需求。

以上兩種策略均與千人千面的目標是不一致。爲了解決這個問題,58調整了方案,使其既能滿足個性化需求,又能保證流量分配對各業務線相對合理。

按興趣權重分配流量

第一步:計算用戶的興趣權重,下圖爲某用戶在招聘、租房、黃頁上的比例,分別是60%、20%和20%

第二步:經過召回、過濾、排序等環節後得到帖子的候選集,候選集中有照片、租房、黃頁帖子,組成比例分別爲65%、25%、10%。

注:這個比例可能跟用戶興趣比例偏差不大甚至一致,但也有可能差異很大。

第三步:優先以興趣權重分配帖子,當帖子數量不足時再由其他品類補充。用戶對黃頁的興趣佔比是20%,但候選集中黃頁佔比只有10%,也就是說即便推出候選集中所有的黃頁貼子,也不能滿足黃頁帖子的佔比要求,這種情況就用其他品類的帖子進行補足。

  • 滿足個性化需求:每個用戶的帖子分配是按照該用戶的興趣權重進行組合的,所可以滿足個性化的需要
  • 滿足流量分配需求:由於用戶的興趣組成主要來源點擊行爲,而各品類的流量也是通過點擊反映,所以按照用戶興趣進行流量分配在整體上是符合業務線之間的比例的。

這樣的策略既滿足了個性化需求又滿足了流量分配需求,點擊效果提升了1.1%,推薦業務帖的流量分配比例與58平臺整體流量佔比基本一致。

品類之間打散

通過以上的步驟得到最終進行展示的帖子後,有可能還會出現一種情況——連續多個帖子都屬於同一個業務,甚至出現雷同帖子。爲了避免這個情況,58對最終進行展示的帖子進行業務打散,比如從排序靠後的其他品類的帖子中抽出一部分插到前面 ( 見上圖 ),打散後不僅避免上述問題,還使每個業務有更公平的展示機會,且在視覺上增加了多樣性。這個打散策略使點擊率提升0.4%左右。

突出實時興趣

第一推薦位根據用戶的最新實時行爲直選,比如上圖中用戶最新的實時行爲是招聘,捕捉到這個信息後在短時間內集中推薦招聘帖。該策略強調了實時興趣,點擊效果提升0.7%。

綜合前面介紹的兩大塊內容:業務分配策略和興趣策略,點擊效果比基準效果提升1.1%。

3. 動態刷新機制

這個優化主要針對第三個挑戰:推薦結果的多樣性。

算法模型挖掘出來的特徵會促使推薦結果越來越聚焦,這就導致用戶使用越頻繁,多樣性就越差。如果想試探新的用戶興趣或者試探新的內容,往往又會犧牲CTR。通過協同過濾、向量化召回等多路召回的辦法可以增加多樣性,但在用戶興趣不變的情況下召回集合基本不變,此時需要考慮在召回集合內部的排序上進行動態調整。

降權排序

在排序的時候把曝光次數較多的帖子進行降權和後移,比如上圖中帖子2和帖子5曝光次數過多,在後續展示的時候就適當調低其排序位置。經過降權排序後,點擊效果比未動態化基準累計提升4.1%。

引入時間衰減

在降權排序的時引入時間衰減——近期曝光的帖子更快後移,遠期曝光的帖子迴歸到正常序列,這樣在點擊效果和多樣性之間就取得一定平衡。引入時間衰減後,點擊效果比未動態化基準累計提升6.5%。

引入服務端的曝光日誌

引入服務端的曝光日誌作爲補充,這樣可以進一步提升多樣性,帖子序列的變化也會進一步加快。考慮到曝光真實性的問題,58只選取服務端頭部的帖子補充補充道集合中。引入服務端的曝光日誌後點擊效果比未動態化基準累計提升7.0%。

經過上述三步操作,點擊率比基準提高7%,且在多樣性上也有明顯的改善,取得雙贏的結果。

04 心得體會

回顧下實踐過程中的一些教訓與思考:

  • 理解業務:要做好策略上的優化並最終提升用戶體驗,最關鍵的切入點是業務。文章中提到的幾個策略都來源對業務的深入理解,雖然看起來比較簡單直觀,但是整體效果很可觀;
  • 策略之間的平衡:不同的優化策略之間可能存在內在的矛盾衝突和效果疊加,這時候需要進行策略之間的平衡;
  • 多目標之間的平衡:不同的場景有不同的目標,整體目標可能是提升CTR,但是某些具體場景可能是提升用戶體驗,也可能是增加停留時長,多個目標之間的平衡也是優化過程中需要持續解決的問題;
  • 算法和策略之間的關係:從解決問題和取得實際效果的角度來看,策略和算法一樣重要,沒必要厚此薄彼。從工程實踐角度看,兩者結合時更要做到高內聚低耦合,減少依賴,加快各自的迭代速度。

05 問題解答

1. 冷啓動優化問題

  • 對全新的用戶 ( 用戶的基礎數據完全缺失 ),簡單的方案是推全局熱門或者地域熱門,複雜一點的方案是進行興趣試探:嘗試給用戶打一些標籤並通過標籤推出內容,或者新內容試探:嘗試把新的內容推給全新的用戶。
  • 對於有一定的數據積累但是不足以提供好的推薦結果的用戶,可以對用戶進行興趣遷移或對標籤進行擴展,在召回上也可以採用多路召回來解決這類問題。

2. 負反饋的優化問題

這討論顯性負反饋。當用戶反饋對帖子不感興趣的理由後,相當於提供了一個顯性的負反饋。典型的方案有這幾個:

  • 直接屏蔽:屏蔽帖子——對這個用戶不再展示該帖子,屏蔽標籤——不再展示類似標籤的帖子,比如用戶多次提供租房帖子的負反饋,那麼就對該用戶屏蔽所有有租房類標籤的帖子。由於這種方案比較生硬,所以往往達不到好的效果;
  • 建立策略:挖掘用戶對哪一類標籤不感興趣,在推薦時對這一類標籤的權重進行修正,不會直接屏蔽此類帖子;
  • 建立算法模型:通過算法把負反饋的結果映射成獨立的特徵,在排序時使用這些特徵便會影響最終的結果,從而減少這類物品的推薦。

3. 多樣性的優化問題

多樣性的目標是減少馬太效應,有以下集中方法:

  • 多個通道召回的結果增強用戶看到的多樣性,包括協同過濾、向量化召回、地域召回等等
  • 全局熱門內容的降權
  • 興趣試探、新內容試探

作者介紹

王煒,58同城 TEG 推薦技術部架構師。目前負責 APP 首頁業務信息流推薦,致力於通過融合多業務、多策略推薦系統的迭代升級,支持流量分發,優化連接效率,提升用戶體驗。

本文來自 DataFunTalk

原文鏈接

https://mp.weixin.qq.com/s?__biz=MzU1NTMyOTI4Mw==&mid=2247504377&idx=1&sn=7ca002dd3bfd00a14c93a519b3765a04&chksm=fbd76395cca0ea83b55807543fde6e8fd7879af67d5a4079365493669752cdff06fac5d632c5&scene=27#wechat_redirect

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