WOT講師馮揚:體系變化與用戶建模角度探索微博推薦
原創互聯網,特別是移動互聯網的到來,用戶可以在任何時間、任何地方,任何環境下生產、傳播和接收信息,這使得原本相對集中的行為和興趣變得碎片化和離散。在這樣的背景下,微博經歷了六年的發展,其系統的架構是怎樣演變的?微博中用戶的模型、維度、建模又是怎樣考慮的?今天由【WOT2015"互聯網+"時代大數據技術峰會】特邀講師、微博推薦開發技術專家馮揚帶著我們從體系變化與用戶建模角度切入探索微博推薦。
馮揚,微博推薦開發技術專家。目前,負責新浪微博搭建微博推薦平臺與建立針對推薦的用戶模型兩方面工作。前者是指在微博現有的技術基礎和分層架構上,設計微博的標準化推薦架構,搭建推薦平臺,解決推薦業務中物料和特征數據接入、推薦計算、模型訓練、橫向對比等方面的問題;后者是針對微博推薦業務中所需的基礎數據,尤其是用戶相關的基礎數據挖掘,為推薦服務。
【職場經歷】
2010年底從北京理工大學博士畢業,專業是信息安全與對抗。
2011年4月走上工作崗位,第一家公司就是新浪微博,從這個時候開始接社交媒體和推薦系統,在這段時間中建立了對微博的業務形態、數據特性、社交媒體的推薦特點和主要技術手段的認識;
2013年的5月離開新浪微博,加入騰訊TEG下的社區搜索部,這個部門是屬于騰訊SOSO業務。在這期間主要從事問答社區的推薦系統構建;同年11月,騰訊注資搜狗,并將SOSO業務和技術人員輸送給搜狗,隨之進入搜狗公司,業務方向保持不變;
2014年9月,在老同事的邀請下,回到新浪微博,加入微博的商業平臺及產品部至今。
51CTO:微博推薦發展的過程中遇到過那些體系方向的變化?在微博推薦系統的架構上又經歷了怎樣的演變?
馮揚:其實微博推薦的發展過程也是一個不斷迭代和試錯的過程,并且是隨著微博自身的發展而演變的。
在初期,大概從2009年微博上線到2011年左右,微博主要集中在用戶擴充和業務擴展,無論是從用戶數量、UGC內容的產生、用戶互動行為、內容傳播等方面都處于一個高速的增長階段。這個時期里面,推薦對于微博來說重要性并不高,推薦也主要是集中在基礎數據挖掘和提供方面,這個時候微博推薦還談不上體系,是作為一個支撐性的團隊存在。這個階段產生了很多的分析方法和基礎數據,例如這個階段已經開始的用戶興趣分析、分類體系構建、二度關系計算、親密度計算、后來作為Lab_common內核基礎的woo,還有解決各種動靜態存儲問題的db……這個時期可以稱作微博推薦的工具型產品時期。
2011年以后到2012年,對于微博來說很特別,因為之前微博一直在社交網絡和社交媒體的定位之間搖擺,但是2011年微信出現,并且在隨后的9個月內飛速發展,對比微信和微博,最大的區別在于微信是一個對等的兩兩互相認證的關系網絡,而微博則是一個非對等的無相互認證的關系網絡,這個區別導致了微信中用戶之間的信任度更強,而微博中信息的傳播效率更高,很顯然微博的媒體屬性更強,定位為社交媒體更適合。而對于一個社交媒體而言,用戶接收和傳播信息更偏向于興趣而不是信任,推薦的作用顯現出來。此時微博推薦的場景也逐漸豐富,出現了許多推薦產品,例如:正文頁推薦、話題推薦、感興趣的人、電影推薦、音樂推薦、熱門推薦……甚至在這個時期還嘗試了對feed流的改造。推薦技術體系基本形成了“推薦挖掘 + 推薦計算”兩個層面:推薦挖掘負責從微博平臺中挖掘目標用戶和優質物料,包括用戶質量評價、傳播力計算、親密度計算、二度關系計算、標簽傳播、熱門微博挖掘、精品微博挖掘……;推薦計算負責物料的推薦和投放,包括構建線上推薦系統、數據存儲及訪問方案、反饋和效果監控……這個時期可以稱作微博推薦的產品群時期。特點是業務和數據多樣,推薦系統和產品豐富,但是系統規模都不大,通用性不強。
從2013年到現在,微博進入了一個相對穩定的時期,以前的爆發式增長放緩,忠實用戶也沉淀下來,對微博的使用以及在微博平臺上的行為有了相對固定的模式,并且微博從2013年開始提出了商業化的目標,這個時候對微博推薦效率和效果上的要求提高了。在此背景下,如何充分利用現有的流量和用戶資源,讓信息更高效地傳播和讓關系更多的締結成為了微博推薦需要解決的問題。這個時候,我們之前構建的單點分散的推薦產品群就顯得不那么合適了,有三個理由:(1)因為分散,有些優質的資源無法充分利用;(2)不同場景不同物料的效果無法比較;(3)系統通用性差,重復性開發任務過多。
首先,我們想到的是分層,先解決第三個問題,誕生了微博推薦系統的三層結構,即:負責數據存儲和訪問以及基礎資源挖掘的數據層,負責在線推薦計算的計算層,負責對外提供接口的應用層。處于各層的研發人員只需要關心各自的任務。例如應用層采用Lua + Ngix架構,開發者只需要關系接口適配就ok了;計算層利用Lab_commom為開發框架,所有的功能都so化,邏輯在各自的模塊中完成;數據層基于Redis和Lushan提供動、靜態數據存儲和訪問,并且通過Rin和R9-interface分別解決流式數據的接入和與集群的對接。分層相當于是微博推薦系統的縱向抽象,解決了第三個問題,但是還需要解決前兩個。那么我們在分層的基礎上對推薦本身進行抽象,將推薦這件事情抽象成 “候選”“排序”“接口”三個部分,在推薦系統的架構設計上,考慮對這三個部分的標準化,令分散的推薦業務接入到標準化的推薦系統中,物料在不同場景下互相競爭,既可以互相比較,也充分利用資源。基于這種思路,我們在分層的基礎上設計了新的微博推薦系統架構,由負責候選的Artemis、排序計算的Eros、負責統一推薦接口的Hestia構成。在層次上,Hestia處于應用層,Artemis和Eros處于計算層和數據層,充分利用分層結構的已有技術成果,同時提供標準化的推薦計算和輸入輸出。目前微博的推薦系統架構已經有了標準化平臺化的概念,可以說現在處于平臺化階段。
51CTO:新浪微博中通過屬性、興趣、社交、行為等維度給用戶建模,具體是如何做的
馮揚:首先我們來看看微博用戶模型的維度劃分。屬性維度和興趣維度屬于用戶畫像范疇,區別在于前者刻畫用戶的靜態屬性特征,例如想性別、年齡、受教育程度、學校、工作單位……等身份和人口信息,后者用于刻畫用戶在信息篩選方面的傾向,通常指興趣標簽,這兩個維度主要是針對用戶的個體角度而言,體現的是用戶個性特征;社交維度則是從關系和信息傳播的角度來刻畫用戶,在社交媒體里面用戶以及用戶之間的社交關系構成了一張網絡,信息在這張網絡中高速流動,但是這種流動并不是無差別的,信息的起始點,所經歷的關鍵節點以及這些節點構成的關系圈都是影響信息流動的重要因素,社交維度就是要量化這些因素以及其影響程度;行為維度則是通過發現影響用戶屬性、信息變化的行為因素,分析典型用戶群體的行為模式,是一種對用戶群體行為的刻畫。可以說這么來劃分維度,基本上涵蓋了從“個體表達”到“關系描述”以及“群體刻畫”。
用戶屬性指相對靜態和穩定,用戶屬性信息的收集和建立主要依靠產品本身的引導、調查、第三方提供等。微博本身就有比較完整的用戶注冊引導、用戶信息完善任務、認證用戶審核、以及大量的合作對象等,在收集和清洗用戶屬性的過程中,需要注意的主要是標簽的規范化以及不同來源信息的交叉驗證。
用戶興趣則是更加動態和易變化的特征,受到人群、環境、熱點事件、行業……等方面的影響,一旦這些因素發生變化,用戶的興趣容易產生遷移,并且,用戶的行為(特指在互聯網上的行為)多樣且碎片化,不同行為反映出來的興趣差異較大,并且用戶具有某方面的興趣只代表了他愿意接受這方面的信息,并不能代表他具有產生相關內容的能力。那么在興趣維度,我們主要集中解決四個方面的問題:(1)用戶興趣標簽收集:包括從用戶自標簽、達人或認證標簽、公司、學校、微群標簽、星座、微博關鍵詞等各個與用戶相關的地方收集用戶興趣標簽,此外,還利用標簽傳播去收集用戶標簽;(2)興趣標簽的權重計算:考慮了不同標簽來源的用戶質量,標簽的傳遞路徑,轉發關系,標簽的本身是否長尾,以及標簽與用戶之間的共現關系等等,不同的因素會賦予不同的權重,最后融合為標簽權重;(3)時效性:有兩個方面的考慮,一個是興趣隨時間衰減,標簽權重會疊加上時間衰減,另一個是考慮長短期興趣,通過設定不同的時間窗口來提取長期興趣和短期興趣;(4)從用戶興趣到用戶能力:主要采用類似于HITS的方法,將微博中的關注關系當作一種認證,那么被具有某個興趣標簽的用戶認證得最多的用戶,被認為在這個興趣標簽上具有最強能力。
關系維度上的模型比較多,微博中非對等的社交關系導致微博的關系網絡實際上構成了一個有向圖,我們遵循著“個體”“關聯”“相似”“群體”的思路逐步深入地建立用戶關系模型,全面刻畫這個關系網絡。在“個體”角度,通過PageRank的思想計算用戶的傳播力,衡量不同用戶個體在信息傳播過程中的不同重要性;在“關聯”角度,利用用戶行為和關系類型計算用戶之間的親密度,衡量具有直接關系的用戶之間的關系遠近程度,相當于計算了有向圖上邊的權重,并且利用二度關系去拓展用戶關系,讓本身不存在直接關系的用戶間產生關聯;在“相似”的角度,主要是基于協同的思想,構建用戶關系矩陣,計算用戶關注相似性和粉絲相似性,類似于協同過濾中的User-based和Item-based,在不引入用戶屬性的基礎上,僅僅通過用戶之間的關系認證來推測用戶之間的相似性;在“群體”方面,主要是識別用戶關系圈,基于關系網絡內部自身的結構,采用圖切分的方法,將具有某種緊密關聯但不一定兩兩存在關系的用戶劃分到一起,形成關系圈。
在行為維度上,一個是針對典型個體行為進行時序分析,另一個是針對典型群體進行統計分析。針對典型個體,追蹤該個體在不同成長階段的行為,分析用戶成長的主要影響因素和關鍵行為;針對群體則是根據用戶當前所處的成長階段將用戶按成長程度劃分成不同的群體,分析這些群體的行為特征,構成群體行為模式。
51CTO:上述的用戶模型應用場景和方式有哪些?做精準推送的時候從那幾個角度出發?
馮揚:用戶模型主要解決推薦中的“候選”問題,即在什么場景下可以給哪個用戶推薦什么物料,應用的方式和場景非常豐富。這里舉幾個典型的例子:
同公司、同學校、同地區、異性等用戶推薦就利用了屬性維度的用戶模型;將與你具有相同興趣,或者將具有你興趣方面能力的用戶推薦給你,將你可能感興趣的微博推薦給你,這些是利用了興趣維度的用戶模型;將你關注的用戶的關注推薦給你(關注的關注),是利用了關系維度上的二度關系模型;熱門推薦本質上是利用傳播力模型去計算微博的熱度;將與你具有相似粉絲的用戶發布的微博推薦給你,是利用了關系協同里面的粉絲相似性;推薦好友贊過的微博、你錯過的微博、以及用戶推薦中實時反饋等推薦等,則是由于通過用戶行為挖掘,發現活躍用戶具有贊同好友觀點,閱讀過往錯過微博,以及下一行為為與上一步行為極其相似的行為模式,基于這些行為模式而設計的推薦場景。
可以看到用戶模型在推薦中非常重要,在運用這些維度的模型時,很關鍵一點是解決不同模型的競爭和融合。先說競爭,在一個推薦場景下,基于不同的用戶模型是可以產生不同的候選物料,那么究竟采用哪些候選物料,這就是競爭;此外,對于同一個候選物料,基于各種模型得到的評價可能不一樣,在某個模型下評價分值較高,而在另一個模型下評價分值較低,如何對這節評價值進行綜合計算,這就是融合。那么無論是競爭還是融合,都可以將其視作一種排序計算,或者作為排序模型的特征。在做精準推薦的時候,出發點還是效果,用轉換率評價,就是通常說的CTR(點擊率)或RPM(千次達成)。不同的競爭策略和融合方法通過線下的日志回放,線上的AB-Test進行比較,選取效果最優的。
51CTO:新浪微博推薦技術的目標是什么?目前達到了怎樣的效果?
馮揚:微博推薦技術的短期目標分為系統和挖掘兩個層面,系統方面的目標是平臺化,我們正處于這個時期。所謂平臺化是指設計泛化的推薦架構體系,抽象推薦中業務無關的步驟,采用通用的模塊進行實現,而對于業務相關的步驟,提供標準的數據和業務接入規范、工具和流程,減少業務開發人員的工作量,為算法研究人員提供標準訓練集和線上對比環境,為產品人員提供快速直觀的效果追蹤和策略調整條件;挖掘層面的目標是構建完整的用戶模型,搭建自動規范的挖掘計算流程。從推薦效果出發,提升微博的用戶價值。
采訪最后,馮老師表示,微博推薦技術當前處于平臺化時期,已經完成的Artemis、Eros、Hestia都是平臺化目標的落地,并正逐漸將已有的微博推薦業務接入到由這三個系統構成的微博推薦平臺,用戶模型的構建大部分也進入了自動流程搭建的階段。后續的工作主要在于為適應更多的推薦業務對平臺進行完善,用戶模型的持續更新和基于模型的二次挖掘,模型的應用以及與平臺的結合,技術輸出等方面。