如何從 0 到 1 構建個性化推薦?

文章作者:曾欽榜 58同城 高級技術經理

編輯整理:周曉俠

內容來源:58技術沙龍

出品社區:DataFun

注:歡迎轉載,轉載請在留言區內留言。

導讀:隨着科學技術的飛速發展,互聯網被廣泛應用於各個領域,而以互聯網爲基礎的招聘模式也越來越受到企業的青睞。互聯網招聘具有不受地域限制、覆蓋面廣、招聘成本低、針對性強、方便快捷、時效性強等優點,現已得到廣泛應用,其中,58招聘是互聯網招聘行業中規模最大的平臺。今天主要跟大家分享下58招聘如何通過個性化推薦技術服務大規模求職者和招聘企業。分享題目是從零到一構建58招聘個性化推薦,主要通過以下三方面進行介紹:

招聘業務介紹

個性化推薦實踐

心得分享與規劃

——招聘業務介紹——

  1. 58招聘業務簡介

2018年我國全國總人口13.9億多,其中就業人口7.7億,招聘基數龐大。三大產業就業人口占比分別26.11%,27.57%,46.32%,其中第三大產業佔比最大,部分發達國家第三大產業佔比已達到70%~80%,隨着經濟的發展,我國未來就業市場和就業分佈將發生大的變化。2019年8月城鎮調查顯示我國失業率爲5.2%,其中25~59歲失業率4.5%,同時每年有800多萬的應屆生加入就職市場。58招聘作爲我國互聯網招聘行業之首,每天服務於千萬級求職者和大中小企業,平臺每天生成千萬級連接,促成大量求職者求職成功。

58招聘平臺主要服務於求職者和招聘方,接下來主要通過求職者的角度介紹用戶在整個平臺流轉的大致流程,具體如下:

基於求職偏好搜索職位並點擊查看詳情。

投遞有意向職位,或通過平臺在線微聊工具、電話與招聘方做進一步溝通。

雙方達成共識後,進行面試與入職。

相比傳統推薦系統,58招聘的業務漏斗更長更深,並且有一部分轉化平臺無法完全捕捉,形成了58招聘個性化推薦開展的難點及挑戰。

  1. 58招聘推薦場景類型

58招聘推薦場景主要面向 C 端求職者和 B 端企業,推薦內容主要包括:職位推薦、標籤推薦、企業推薦、簡歷推薦。

C 端求職者的典型推薦場景包括:

App 首頁招聘大類頁:主要包括職位專區聚合、職位 Feed 流。

類目推薦: 用戶點擊某個類目後,進行相關職位推薦。

相似推薦: 用戶點擊某個具體職位後,在下方展現相似職位。

  1. 58招聘推薦主要問題

58招聘推薦相對其它行業主要存在以下典型問題:

海量數據計算:大多數公司都存在,此處不做詳細說明。

冷啓動問題: 58同城服務於多業務,包括招聘、房產、黃頁、二手等,求職者進入招聘板塊使用招聘功能,由於當前不強制用戶填寫簡歷,導致無簡歷用戶冷啓動問題。

稀疏性&實時性:58招聘的一部分羣體爲藍領用戶,他們在平臺產生的行爲是短時間的、連續的以及稀疏的,可能活躍兩天找到工作後就不再活躍。其次,有些用戶回到平臺,求職意願可能會發生變化,一部分可能想找別的工作(如之前是服務員,現在想找快遞),另一部分可能是因爲傳統職業存在職位進階的過程,這些都需要系統思考。

資源分配問題:第一,如何有效識別(企業,求職者)的真實意圖,進而合理分配資源產生有效連接,針對不良意圖進行差異化對待。第二,招聘對於 C 端和 B 端都是有限的資源,招聘方招聘職位有限,求職者與招聘方交互有限,很大程度上不同於淘寶推薦,因爲後者的商品是無限供應的。

——招聘個性化推薦實現——

  1. 58招聘個性化推薦實現

58招聘個性化推薦的實現過程與大多數公司推薦模塊基本相似,包括用戶意圖理解、內容召回、內容排序、內容展示四個核心模塊。下面將結合業務特性,介紹每個模塊實現的關鍵點。

  1. 如何理解用戶?

58招聘用戶理解主要通過“言”和“行”識別用戶真實意圖,重點關注的屬性主要包括招聘領域求職意向、用戶個人屬性以及外在形象(如上圖左邊)。圍繞求職者與招聘方在平臺產生的內容及行爲,我們構建了相應的知識圖譜和用戶畫像。

2.1 無誠意用戶識別

在理解用戶之前,我們首先需要識別出無真實招聘/求職意圖的用戶,並進行差異對待。如頻繁發佈包含聯繫方式的導流信息、發佈高薪誘惑等惡意虛假信息等,將用戶引導至平臺外進行轉化。針對以上業務我們總結了一些特點,主要表現爲:

暴露聯繫方式

內容不成句

高薪誘惑

在平臺很“活躍”

針對以上業務特點,我們主要的識別方法包括:

傳統的關鍵詞+正則識別方法,如針對"微信"、"QQ"這類聯繫方式的相關關鍵詞等。

針對變形聯繫方式,基於拼音+滑動窗口進行識別。

採用命名實體 NER 識別進行挖掘,如 BiLSTM+CRF。

採用相關分類算法進行識別,如 fastText,CNN。

在無誠意用戶識別過程中,我們總結了以下心得:

舉一反三:問題用戶識別是典型的對抗場景,策略構建時需要更多思考對抗能力的刻畫,將一些強對抗能力的特徵加入到模型中(如文字變形、文字轉拼音)。

剛柔並濟:差異化懲處不同問題類型的用戶。對平臺其他用戶傷害巨大的羣體,結合法律手段嚴厲懲處;處於問題邊界的,則主要通過較柔和的方式處理(如內容展示降權),減少劇烈對抗現象的產生。

2.2 知識圖譜構建

知識圖譜是一個非常複雜的系統,包括多元異構數據蒐集->知識獲取->知識融合表示->知識推理->知識管理多個部分,主題及時間因素,我們重點介紹下在 NER 方面的探索。招聘業務場景含有大量的文本內容,通過 NER 技術能夠有效提取文本中的關鍵信息,進一步提高系統的結構化理解能力。

NER 開展經歷了兩個階段:

第一階段:基於平臺已有的部分結構化實體詞,以及不少半結構化組織的職位描述基礎,我們採用 bootstrap 方法,快速迭代進行挖掘,並結合半人工標註,爲深度學習構建更完整的樣本數據集。

第二階段:將第一階段的內容作爲 input,核心採用 BiLSTM+CRF 構建實體識別深度網絡,有兩個優化點取得了較好效果。第一個是輸入層基於字到詞的優化,構建招聘領域的專有詞庫。第二個是採用訓練樣本增強技術,將相近實體詞和同類實體詞進行替換擴大樣本集,並將模型識別的結果有選擇的放回訓練集重新進行迭代訓練,減弱對標註數據集的依賴。目前命名實體識別仍在不斷優化,識別準確率平均達到0.75+,部分準確率可達到0.9+。

2.3 構建用戶畫像

用戶畫像是個性化推薦系統的基礎模塊,決定了對用戶意圖理解的準確與否。基於標籤傳遞思想,我們通過統計規則、傳統分類模型和深度模型多種算法結合捕獲用戶行爲的興趣表達,構建長短期用戶畫像。

基於統計規則:通過窗口形式,近實時對用戶畫像進行計算更新,計算時加入時間衰減因子、行爲權重因子及標籤置信度權重。深刻理解業務場景,進行合理數學設計是關鍵。如信息列表頁的點擊數據,在使用時要差異化處理列表頁直接展示的顯性標籤及隱藏在詳情頁的興趣標籤,避免人爲引入噪音。

基於傳統分類預測:採用分類算法,應用到用戶屬性填充、異常用戶/行爲識別及用戶分類多個方面。並非所有的求職用戶都會留下較詳盡的簡歷,我們藉助歷史的招聘簡歷與用戶行爲組織樣本,可有效預測性別、年齡段、期望工作崗位等用戶信息,優化簡歷缺失或不完善的冷啓動問題。同時,針對用戶行爲的聚焦情況,通過模型能夠有效識別出一些異常數據、識別求職目的明確型及發散型兩類求職用戶,進而剔除掉部分噪音數據提高樣本精度,對不同用戶定製差異化策略,提升推薦整體刻畫能力。

基於行爲序列預測:藉助統計規則及傳統分類,基本建設出一個可用畫像,但對用戶多個行爲之間的信息捕獲有限。我們將用戶搜索瀏覽、簡歷投遞、在線溝通等行爲組織成行爲事件序列,採用 LSTM、GRU、Attention 等訓練模型預測用戶興趣,當前還在探索評估階段。

  1. 召回模塊

58招聘推薦圍繞個體、羣體、全局三個召回不斷細化演進,不同召回滿足不同需要,三者結合服務於各類場景。從2016年到現在,我們先後主要經歷了基於上下文內容、協同過濾、精細畫像、深度召回幾個階段,演變成當前以上下文與用戶畫像結合的精準召回、協同過濾召回及深度向量化召回爲核心策略的召回模塊。

3.1 基於上下文+用戶畫像的精準召回

該策略是業內十分常用的召回方法之一,核心在於結合用戶畫像對請求進行豐富改寫。絕大部分場景,用戶主動搜索或點選的條件有限,藉助用戶畫像中的歷史興趣及知識圖譜組織的實體關係,我們對崗位、工作地、薪資、行業等多個維度進行條件擴充或必要改寫,多路召回匹配用戶的職位內容。

該策略的主要優點:可解釋性好、實現時間成本低,缺點和難點是過度依賴標籤挖掘的準確性。

3.2 基於業務特殊性的協同過濾算法改進

協同過濾是推薦系統經典的召回方法,通過用戶與物品的行爲挖掘用戶與用戶、物品與物品之間的關聯關係。招聘業務的求職者數量巨大,且是短時間的稀疏行爲場景,我們採用基於物品的協同過濾,同時希望能近實時的將實時行爲信息組織進服務。

在技術實現過程中,我們參考了騰訊2015年發表的Paper《TencentRec: Real-time Stream Recommendation in Practice》,賦予職位點擊、投遞、在線溝通等不同的行爲權重進行多行爲融合,基於用戶行爲序列的長度以及用戶質量設計用戶懲罰因子,同時通過時間衰減因子增強近期行爲的表達,這三個因子的設計與 Paper 基本一致。另外針對業務特殊性,我們改進了職位相似度的計算,加入了職位相似度控制,避免求職目標發散的用戶影響職位關係的組織。算法上線後,在點擊率、投遞率方面都取得了正向收益,其中詳情頁的相關職位推薦提升超過25%。

3.3 Embedding 深度召回探索

協同過濾雖然取得了不錯的業務收益,但其依賴於用戶與物品的行爲矩陣,對於行爲稀疏的場景天然表達有限。而恰好,58招聘業務的流量構成中,有一部分是三四五線城市,城市越下沉數據稀疏的情況也越凸顯。針對這類問題,我們希望進一步挖掘行爲數據的信息,很自然的想到基於深度學習的向量化 Embedding 召回。我們核心參考了 Youtube 的 DNN 召回思想,基於業務現狀做了調整優化。

職位向量化:我們將求職者對職位的行爲序列看作一系列上下文,利用 word2vector 思想進行向量化表達。Input 部分,包括職位特徵、職位所屬的企業特徵和求職者反饋特徵。Output 構建,業務漏斗越深的行爲選擇的窗口越大,並基於用戶平均的行爲長度作爲窗口設定的參考值。針對無歷史用戶行爲的新職位,使用職位的文本結構化信息,通過歷史訓練所得的標籤向量表達經過 average-pooling 作爲初始向量,解決冷啓動。

用戶向量化:構建一個多分類 NN 網絡,Embedding 層將用戶發生行爲的職位向量化直接遷移過來使用,輸入用戶的簡歷及畫像信息進行向量訓練。最上層理想情況是一個極限分類,以用戶真實發生行爲的數據作爲正樣本,未發生行爲的數據作爲負樣本,構建損失函數進行最優化訓練。58招聘場景有千萬級別的職位,極限分類需要巨大的計算消耗,當前資源無法滿足。因此在負樣本選擇上,我們使用降採樣機制,隨機從求職者關注的城市及崗位下未發生行爲的職位中按一定比例抽取負樣本。線上會實時的採集用戶行爲,以窗口形式對用戶向量進行更新。

線上服務:借鑑 Facebook 的 FAISS 實現,線上用戶發起請求時,通過求職者的向量表達,去獲取與其最相似的 TopN 職位,返回給推薦系統。

Embedding 向量化召回,還處於初期探索,仍需要在樣本、輸入特徵及網絡參數調優開展大量工作,期待有更顯著的業務收益進一步與大家分享。

  1. 排序迭代歷史

相比其他推薦場景,58招聘的漏斗更深,並且是典型的雙邊業務。系統不斷優化提升求職者點擊、投遞職位的同時,還需要關注職位背後的招聘方是否反饋形成了有效雙邊連接,進而達到更接近求職鏈條的預測目的。結合不同時期的業務目標,我們先後經歷了幾個主要階段。

第一階段:以提升點擊規模爲主要目標,從零到一構建點擊率預估模型,開發模型建設的基本框架,包括特徵工程、AB 實驗框架及線上 CTR 服務。該階段在較少人員的情況下,建立了排序模型及服務的大體框架,在點擊層面支撐業務增長。

第二階段:業務目標深入,從點擊過度到單邊連接直至雙邊連接,在 CTR 預估模型的基礎上,增加了 CVR 預估及 ROR 雙邊連接預估。同時在工具上開展了針對性建設,包括特徵生產 Pipeline、AB 實驗框架升級爲可配置化中心及特徵模型的可視化分析監控等,解耦算法和工程依賴,支持更多算法和工程人員的並行高效迭代。

第三階段:圍繞深度學習的算法探索,wide&deep、DeepFM、多任務學習、強化學習等,不斷提升算法對高維特徵的表達能力,提高預估模型的刻畫能力。預計在2020年全面落地業務,達到更爲理想的迭代狀態。

4.1 連接轉化預估模型

58招聘轉化預估模型是多目標學習,設計實現如上圖,底層共建樣本及特徵,使用不同算法對 CTR 點擊率預估、CVR 單邊連接預估、ROR 雙邊連接預估進行建模,最後對多個模型進行融合支撐線上排序。

整體排序實現是業務常見的方法,總結開展過程中比較關鍵的點:

樣本處理:圍繞減少樣本噪音,我們開展了多個優化。去除異常用戶及異常數據,包括非招聘意圖的用戶數據、誤點擊數據;增加真實曝光及停留時長埋點,去除用戶下拉信息流過程中非真正看見的數據,將停留時長作爲樣本置信權重加入到模型訓練中;基於求職者維度進行採樣,去除對同一職位多次正負樣本的矛盾可能。

特徵工程:關注及監測特徵顯隱性的變化,尤其是信息列表展示樣式的產品調整,需及時進行特徵調整及模型迭代。58招聘業務的特殊性,實時類特徵很重要,需要關注特徵一致性方面的保障機制,避免發生特徵穿越現象或線上線下特徵不一致問題。

模型:重視模型認知,並不是簡單的關注離線 AUC 或者線上轉化率 AB 對比,在特徵表達上多些分析,迭代過程中重視前後模型的特徵比較,能夠有效提高模型實驗迭代的有效性。

4.2 特徵生產實現

特徵 Pipeline 的構建,減少了大量特徵工程重複工作,顯著提高模型迭代效率。其核心功能是實現配置化的方式,集成了樣本採樣、特徵變換、特徵組合、特徵離散化,整合後得到訓練樣本,一方面輸送給模型進行訓練評估,另一方面也輸出到分析平臺支持可視化分析。

4.3 模型 serving 實現

線上模型服務有定期更新及大量 AB 實驗的要求,隨着服務演進構建了當前的模型 Serving 框架,實現了對模型的定期自動更新以及模型的自動加卸載功能,同時也具備了更強的擴展性,可接入不同算法的模型實現。離線部分,樣本經過特徵 Pipeline 構建增量訓練數據,模型訓練模塊會獲取 Base 模型文件初始化並進行增量模型訓練,模型評估無異常,系統會將模型存儲至模型倉庫及 HDFS 文件。線上部分,模型倉庫增刪改模型後,會發起模型熱加載或卸載指令更新至線上服務內存;對於線上的排序請求,實時修改相應使用模型的存儲生命週期,對於長期無用的模型,模型倉庫將自動刪除。

模型 Serving 能夠自動化管理線上模型,但我們也不能完全託管系統,依然需要關注模型變化。一方面在離線部分的模型評估環節,除了對 AUC 等評估指標的自動監測,也將模型內存大小、模型特徵表達作爲監測的一部分;另一方面線上監測業務轉化指標的變化,當指標發生較大波動時發出警報,人工進行模型檢查。

4.4 重排序機制

由於業務的特殊性,以 CTR 預估、CVR 單邊連接預估、ROR 雙邊連接預估支撐排序仍然存在刻畫能力不足的問題,體現在以下幾個方面:

招聘關係到個人生計及國家民生,是件極爲嚴肅的事情,內容質量是基礎保障。但連接預估模型無法有效刻畫質量問題,存在一些職位連接效率很不錯但屬於問題職位,因此推薦系統需要增加質量相關的因子。

轉化率高不等同於雙邊匹配。線上招聘,無法很好追蹤到面試及入職環節,求職者與招聘方形成的雙邊連接,可能是出於其他原因(如對自己或對方的錯誤判斷)。因此,系統需要考慮匹配方面的控制。

資源浪費問題,對於絕大部分用戶,求職及招聘都是週期性行爲,一個已經招滿人的職位可能依然在線上展示。系統還需要增加職位活躍度或週期方面的刻畫,減少相應的資源浪費。

針對這些需要,系統增加了重排序機制,通過分段處理手段,在粗排階段打壓甚至過濾掉低質量內容,在重排序對不活躍/不匹配內容進行降權,達到保障平臺質量生態、提高有效連接規模的目的。

  1. 列表展示內容控制

內容展示方面,我們也結合算法做了一些工作,來提高內容的可解釋性、提供更多有價值的信息來輔助用戶決策。結合個性化模型挖掘亮點標籤,將更深預估模型的核心特徵包裝成標籤形式展示在列表頁,如距離多遠、職位的福利標籤、職位的熱門情況等;使用 NLG 文本生成技術,自動生成簡短描述進行展示,彌補標題及其簡單職位的文本信息不足。

  1. AB 實驗配置中心

推薦系統包括召回、過濾、排序、展示幾個核心模塊,且每個模塊都有長期進行實驗迭代的訴求。我們搭建了 AB 實驗配置中心,實現可視化配置,與線上服務及數據分析平臺聯動,更靈活高效地開展實驗迭代工作。

  1. 整體技術框架

58招聘個性化推薦經過不斷演進,最終形成了如上圖的技術框架。離線部分包含數據倉庫層,知識圖譜、用戶畫像、預測模型的挖掘層,知識數據存儲層;線上部分包含數據服務及推薦引擎。線上產生的行爲數據,實時流轉至離線的計算挖掘模塊,反饋到線上達到個性化體驗效果。

——心得分享及規劃——

58招聘推薦系統最近四年優化收益整理如上圖,貢獻大小依次是召回、特徵、數據、算法、樣式、工程。深入理解業務及算法、注重細節積累是做好算法工作的保證;前期在樣本及特徵上多下功夫,不僅能獲得不錯的業務增長,也是之後算法深入的基礎;工具性建設儘可能先行,能夠提高整體迭代效率。

未來的核心工作:

多任務學習、強化學習等的全面探索落地。

集公司內外資源,豐富招聘數據源,提高用戶畫像的覆蓋率,更好的支持千人千面。

分享嘉賓

曾欽榜

58同城 | 高級技術經理
——END——
歡迎關注DataFunTalk同名公衆號,收看第一原創技術文章。

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