Linkedin協同過濾推薦平臺Browsemap賞析

Linkedin 推薦技術 Hadoop 科技 58招聘技術 2017-06-13

原創作者 : 朝立@招聘技術 58招聘技術團隊

Linkedin協同過濾推薦平臺Browsemap賞析

隨著數據過載越來越嚴重和為用戶個性化的需求越來越緊迫,推薦的作用會越來越大,本文結合Linkedin論文《The Browsemaps: Collaborative Filtering at LinkedIn》[1],主要談一下Linkedin的Browsemap平臺的設計與實現,同時在介紹一些具體的推薦場景或推薦算法時,會結合自己的一些工作經驗一起敘述。

1. Browsemap平臺的功能

Browsemap是Linkedin開發的一個實現了物品協同過濾推薦算法的泛化平臺,該平臺可支持Linkedin中所有實體(entity)的推薦(實體包括求職者、招聘貼[2]、企業、社會群體(如學校等)、搜索詞等),支持快速開發和部署,並且支持超大型數據集、提供了監控系統和線上統一的調用API。

通過Browsemap平臺,基於業務需要,若要實現某個新的實體協同過濾推薦,開發者要做的工作僅僅包括:相關行為日誌的接入、編寫Browsemap DSL配置文件(該部分後續會詳細介紹)和調整相關過期參數等簡單工作。一般只需要一兩天的開發時間。

2. Browsemap平臺的架構

如圖1所示,Browsemap是一個同時提供線上和線下服務的系統。主要流程如下:在線下,基於hadoop實現Browsemap Engine,Browsemap Engine會根據Browsemap DSL生成推薦結果,並將推薦結果存儲在支持線上高併發讀寫的分佈式KV數據庫Voldemort中,最後通過統一的API供線上檢索讀取,需要指出的是該API是實體無關的(entity-agnostic),並支持A/B測試。

Linkedin協同過濾推薦平臺Browsemap賞析

圖1 Browsemap平臺架構

下面主要介紹一下Browsemap系統的一個創新性的設計——Browsemap DSL(Domain-Specific Language)。Browsemap DSL是構建一個推薦場景(原論文中稱為browsemap)工作流(workflow)的描述語言,當然可以簡單的把它看成一個workflow配置文件,如圖2所示。

Linkedin協同過濾推薦平臺Browsemap賞析

圖2 基於Browsemap DSL編寫的workflow實例

開發者可通過Browsemap DSL定義工作流(workflow)的各個模塊,包括模塊間的執行流程、模塊間的依賴關係、每個模塊的輸入輸出路徑、以及相關參數的配置(如特定實體過期時間)等。Browsemap engine通過解析Browsemap DSL就可以完成整個線下推薦算法的實現。Browsemap DSL的設計不僅加快了推薦模塊的開發速度,同時還促進了模塊共享(如過濾噪聲用戶模塊等),降低了開發成本。

另外需要注意兩點:

  • 每個browsemap(推薦場景)可對應一個或多個workflow。

  • 在工作流中的每個模塊會對應一個或多個hadoop job,由workflow manager(Linkedin的一個hadoop調度平臺)統一管理和調度;其中包括一些基於Hourglass實現的增量計算job。(因為這篇論文介紹的是Linkedin大概五六年前的工作,所以大部分計算還是基於MR的。)

3. Browsemap平臺的應用

原論文中介紹了Browsemap平臺在Linkedin的7個方面的應用,在此基於58招聘的推薦場景主要介紹其中的4個:給求職者推薦公司(Companies You May Want To Follow)、相似公司推薦(Similar Companies)、相似簡歷推薦(Similar Profiles)和搜索詞推薦(Related Searches)。

  • 給求職者推薦公司(Companies You May Want To Follow)

  1. 通過Browsemap實現item-cf,計算用戶和潛在follow公司的相似度值,得到related-companies feature;

  2. 將related-companies feature和用戶/公司內容特徵一起通過LR訓練,得到最終的偏好分值(propensity score)。其中,內容相關特徵包括:用戶畫像特徵的industry, location和experience等;企業畫像特徵的industry, location和description等,具體屬性對應關係如圖3所示。

Linkedin協同過濾推薦平臺Browsemap賞析

  1. 圖3 用戶畫像特徵和企業畫像特徵的對應關係

  • 相似公司推薦(Similar Companies)

    與給求職者推薦公司有兩點不同:

  1. 內容特徵相似度變為公司畫像之間的相似度;

  2. 使用的用戶行為不僅僅是follow行為,還有view和 employed-at等行為(即基於多行為構建browsemap)。

  • 相似簡歷(用戶)推薦(Similar Profiles)

    通過公司詳情頁瀏覽行為(Company-view)和用戶畫像特徵實現該部分推薦。同時將相似簡歷的屬性用於補足簡歷的缺失屬性,得到該用戶的虛擬簡歷(virtual profile)。

  • 搜索詞推薦(Related Searches)

    提供了四種關聯方式:

    針對這四種方式分別實驗,線上線下結果均表明協同過濾的結果最好,甚至也好於將這四種方式綜合(unified)的結果。

  1. 協同過濾:在計算搜索詞(item)間相關性時會加入時間和空間因素(但論文中沒有具體說明如何加入的)

  2. 基於推薦搜索詞搜索結果的點擊率

  3. 基於搜索詞之間的重合度

  4. 基於推薦搜索詞的點擊率

4. 招聘推薦的一些經驗

本節主要介紹原論文中提出的做推薦系統時的一些經驗教訓:

  • 不要重複造輪子:Browsemap平臺規範並實現了協同過濾算法的整個workflow,而且整個workflow是基於Browsemap DSL可配置的,如前所述,這種方式使得當需要搭建一個新對象(entity)的browsemap或者添加新的用戶行為browsemap時都十分方便。進而可使開發人員集中精力去深入理解產品需求、花更多的精力去優化處理輸入的數據和支持更多精細的垂直產品需求。

  • 一圖勝千言:樣式和展現方式是第一生產力,能帶來最大的roi,其次是底層數據建設的質量,最後才是推薦算法。以論文中的例子為例,在簡歷(用戶)推薦場景中,展示用戶圖片的樣式比不展示的CTR提升高達50%,這幾乎是任何推薦算法都難以企及的提升。

  • 不同的推薦位可同頁共存:不同的推薦算法可用滿足不同的用戶需求,而且通過A/B實驗表明:在同一頁面的基於不同算法實現的推薦位幾乎是相互獨立、互不影響的,並且可共同提升推薦轉化效果。

  • 協同過濾解決不了所有的問題:冷啟動問題是協同過濾類算法的軟肋,解決冷啟動問題只能通過實體的畫像(屬性)或該實體的社交關係等策略。此外,原論文還提到了一種利用用戶行為來豐富冷啟動實體或低頻操作實體畫像的策略。

最後,然後簡單談一點個人的思考:

  • 不同的推薦場景需要使用不同的用戶行為,如加入一些不恰當的用戶行為未必會帶來轉化率的提升;

  • 需要對每一種行為(behavior event)實現一個推薦工作流,這樣才能單獨實驗每種行為帶來的收益,當然也需要基於多種行為實現一些推薦工作流,因為基於多行為協同過濾算法可關聯更多的item。

5. 總結

本文首先分析了Browsemap平臺的功能和架構,然後主要介紹了Browsemap平臺在Linkedin四個主要推薦場景的應用,最後介紹了招聘推薦時的一些經驗。如有疑問,歡迎留言交流。

參考文獻:

  1. Lili Wu, Sam Shah, Sean Choi, Mitul Tiwari, Christian Posse: The Browsemaps: Collaborative Filtering at LinkedIn. RSWeb@RecSys 2014.

  2. https://engineering.linkedin.com/recommender-systems/browsemap-collaborative-filtering-linkedin

原文鏈接地址:

https://mp.weixin.qq.com/s?__biz=MzIzNzQzNjEwMw==&mid=2247484710&idx=1&sn=7fae840fa86e7c8f17c45fc5117ddec9&chksm=e8c9e88edfbe61989bd6a7d1812694ebc022e0542d11660aa10437aed4fc5ccc795146ebf5ac&scene=0#rd

Linkedin協同過濾推薦平臺Browsemap賞析

相關推薦

推薦中...