大數據驅動下的微博社會化推薦 | 人人都是產品經理

不同於搜索,「推薦」通常不是獨立的互聯網產品,而是互聯網產品的核心組件,為該產品的核心目標服務,比如電商網站的推薦是為了達成更多商品交易。微博推薦同樣如此,其存在價值就是通過梳理和優化用戶關係網路、打通內容傳播鏈條、引爆信息定向傳播,從而實現加速高價值用戶關係構建、優質內容傳播和商業化營收等微博核心目標。

明確了推薦的角色和定位后,設計一個合適的推薦系統還需要系統了解微博的數據特點。因為只有清楚數據的特點,才能更有針對性地設計推薦系統產品、架構和演算法。

微博用戶

微博數據

微博的數據特點

微博是一個以內容消費為核心的偏弱關係社交網路,關係的構建多是依託於興趣。它是半開放的,用戶看到的大部分內容,來自於2層關注構建的網路。而對社交網路而言,用戶關係網路結構、內容信息、用戶是其數據三要素,因此下文也主要會圍繞這3個要素對微博數據特點進行闡述。

用戶關係網路結構:呈現海量、社會化、興趣弱關係、半開放等4個方面的特點。微博關係網路擁有超過6億個節點、1000多億條邊,每天有海量信息通過這張網路傳輸。它就像一個虛擬社會,帶著社會化分工、去中心化、非對等性的屬性;每個用戶都有自己的真實身份和角色,比如橙V、藍V、普通用戶,承擔不同的職責並具備不同的話語權,在內容的生產、傳播、消費的過程中,扮演著不同角色。

內容信息:微博的信息是簡短、豐富而碎片化的,同時存在著UGC和媒體內容,具備極快的傳播速度。微博由點及面和Timeline的Feed流設計,使其具備極好的信息傳播能力,這是微博的優勢,但同樣也會引發問題——飛速的傳播讓舊信息很快被淹沒掉,不管其價值多寡。因此對於推薦系統來說,其主要目標就是讓優質信息沉澱下來並獲得更多的曝光機會,這也是之所以要做「錯過的微博」的原因。

用戶:微博用戶具備個性化的行為和偏好,承擔著良好的社會化分工角色。同時,微博通過基於UID的賬號體系來識別用戶,記錄歷史數據並存儲關係數據,從而精確地了解每一個用戶,也為後面個性化推薦打下良好的基礎。

微博推薦系統設計

微博推薦的設計主要包括產品、架構、演算法3個方面,下面首先了解產品的設計思路。

產品設計

微博自然推薦分為用戶和內容推薦兩個部分。

用戶推薦

用戶平台推薦

用戶推薦

用戶推薦的產品目標是優化用戶關係網路結構,在用戶推薦產品設計實踐中主要有兩點經驗值得和大家分享。

效果衡量指標。效果衡量指標是連接產品定位和演算法優化方向的橋樑,而這也是產品設計中不斷思考和摸索的方向。初始時我們直觀地認為,如果用戶喜歡推薦結果就會產生較高的點擊率,從而將CTR作為衡量指標,但隨後這個思路就被否定。用戶推薦的初衷是關係達成而不是即時愉悅用戶,於是衡量指標被調整為RPM(Relation per Thousand Impression,即千次曝光的用戶關係達成量)。在一段時間后我們開始反思一個問題:用戶關係達成的意義是什麼,用戶關係量是否是越多越好呢?答案顯然是否定的,受限於精力,推薦必須幫助用戶梳理關係網路結構,讓用戶可以簡單地構建高價值的用戶關係,從而讓用戶可以更好地消費內容以及更容易地進行社交互動,因此衡量指標衍生為關係達成后的互動率和用戶行為量。

產品設計原則。推薦是用戶預期之外的非自然流量,應該順應用戶的行為,以自然流暢的方式展現給用戶。因此,推薦必須從最有效的主動場景入手,比如微博找人頁用戶帶有明顯關注新用戶的意圖,而這裡展示用戶推薦正好滿足需求;而Feed流的瀏覽目的是內容消費,推薦新用戶會打斷內容消費的流暢性,效果很差。

內容推薦

內容推薦的產品目標是加速優質信息傳播以滿足內容消費需求,「錯過的微博、贊過的微博、正文頁相關推薦、熱點話題」則是其中具有代表性的內容推薦產品,這裡會重點介紹下「錯過的微博」的設計思路。

「錯過的微博」前身是一個叫做「智能排序「的推薦產品,主要用於解決信息過載情況下的排序問題。正常情況下,微博用戶平均每天會接收到2000+條Feed,而真正閱讀的內容不超過200條,那麼怎樣才能讓用戶看到更多高價值信息,減少低質內容曝光,從而提升內容消費體驗,這正是產品的設計目的。「智能排序」採用了簡單直接的設計思路:Feed流按價值高低整體排序,這樣做存在兩個問題:

定義及量化信息對用戶的價值。因為用戶對信息價值的理解方式千奇百怪,因此不論如何調整演算法總會讓部分用戶不滿意。

信息價值和時間順序的平衡。整體重排序會讓微博丟失Timeline的排列屬性,從而新的信息有可能排在舊的後面,而時間序是保證微博傳播能力和信息新鮮度的關鍵。

所以「智能排序」不是一個優雅的解決方案,而後通過數據分析發現:用戶錯過的90+%信息中,只有部分內容是對用戶具有極高價值且不容錯過的,所以這裡無需對未讀Feed全排序,只需要將最高價值的信息找出來並推薦給用戶,其它的Feed仍按正常時間序排列。這樣做一方面可以讓Feed流整體上符合Timeline的排序,用戶感覺自然流暢;另一方面,與用戶對最高價值的信息認知上比較接近,演算法效果比較理想。產品推出后,用戶認可度很高,互動率遠遠高於普通Feed。

架構設計

推薦系統的架構設計,包含在線服務,以及數據存儲、傳輸、計算兩個部分。

首先看數據部分,整體架構分為Online和Offline兩個部分,其中Online部分通過Kafka/Scribe把用戶的即時行為和發布內容傳輸到流式計算系統Storm中做即時處理,處理的結構化數據存儲到Redis中。而Offline的數據,主要通過Hadoop平台做基礎的存儲,然後通過Spark/MapReduce等分散式計算后,將直接應用到在線服務的數據存儲到HBase/Lushan/Redis等資料庫中,亦或是存放到在線服務的本地文件。

UAE

接下來看在線服務的架構設計,如圖所示,這裡通過UVE(Uniform Value Estimate)來分發非自然流量——廣告、運營、推薦。推薦經過應用層接入后,會進入在線服務的核心處理模塊lab_common_so,這個模塊主要實現了3項功能。

  • 流量切分:即按滿足同樣數據分佈的方式切分流量,用於演算法策略的灰度實驗。
  • 排序:通過LR模型(ctr or RPM or ctr*click_value)實現推薦結果的精選排序。
  • 演算法策略選擇:動態載入更新演算法策略庫.so文件。

微博推薦候選集非常龐大,架構設計中分為初選與精選兩個模塊,精選模塊位於lab_common_so中,而初選由獨立的功能模塊來承擔,來源於3個維度:

  1. 離線計算:如用戶推薦95%的結果來自離線計算。
  2. Storm流式計算:實時計算用戶行為觸發的推薦結果,並即時推薦給用戶。
  3. 離線計算(生成半加工品的推薦資源數據)+在線計算(通過索引IDX連接)。

用於精選排序的ctr預估模型,基於Hadoop平台數據,通過Spark來分散式訓練。

預估模型

演算法設計

微博推薦的演算法體系如圖所示,包含4層:數據挖掘、基礎演算法、核心演算法、混合演算法技術。

演算法體系

先看數據挖掘部分,這裡基於微博社交數據建模來完成用戶親密度、用戶影響力、領域關鍵節點、粉絲相似度、關注相似度、興趣協同的量化計算,從而數據化地描述微博社交網路、用戶關係、用戶興趣和能力,並將其作為在線推薦計算的中間結果數據。

基礎演算法中,都是大家比較熟知的NLP、用戶分析、傳播模型等演算法,不做過多介紹。演算法設計和實踐的重點是核心演算法和混合技術,接下來會逐個介紹:

協同過濾

協同過濾是經典的推薦演算法,在微博中廣泛應用,共使用過如下4種:

協同過濾

其中,user-based協同的應用最為廣泛。微博藉助UID賬號體系,經過多年積累,存儲了充足的用戶數據,user-based CF結果精確,且有良好的推薦理由;相對而言,微博信息的時效性很強,item-based協同效果不太理想。此外,微博具有良好的社會化屬性,擁有大量各個領域的專家和關鍵節點,從而在一些對專業知識要求較高的場景,基於keyUser-based的協同具有良好的效果。在智能排序研發時曾借鑒Facebook的經驗,實踐過Edgerank演算法(加一些公式描述),是相對經典的協同過濾,引入了時間衰減因素,來提升推薦結果的時效性。

相關性推薦content-based

Content-based演算法廣泛應用在內容推薦中,這裡將以微博正文頁相關推薦為例進行介紹,如圖所示分為在線和離線兩個部分。

相關性推薦content-based

離線部分,多種候選物料(如微博、電影)經過NLP結構化處理后選取優質候選,以關鍵詞、分類為key構建索引。其中微博、話題、長微博的候選集索引通過流式計算產生,可以做到分鐘級的實時更新。此外,由於微博內容簡短,可提取的有效關鍵詞數量有限,為了提升推薦的覆蓋率和準確度會以優質微博、長微博、話題為訓練語料,離線開展詞擴展、詞聚類計算(基於word2vec)則用於在線相關性計算的輔助。

在線計算,用戶訪問正文頁后,推薦服務會基於Storm流式計算的分類、關鍵詞向量結果查詢索引獲取推薦候選集,並計算微博正文同各個推薦候選集的相關度,選擇相關而不相似的候選集開展ctr/RPM計算,並由此排序得到推薦推薦結果呈現給用戶。

排序模型

基於機器學習的Learning to ranking是推薦中常用解決排序問題的演算法技術,微博推薦的排序模型採用經典的LR模型。

排序模型

在線計算時的feature向量會隨著推薦服務日誌記錄下來,尤其是場景相關的feature,並通過特徵工程的ETL框架將各類產品彙集和處理以生成訓練樣本,開展模型訓練。基礎feature分為用戶、item、場景3個維度,而實際應用的feature多為交叉特徵。

另外,對於多種推薦候選集共存的場景,這裡通過ctr*click_value的方式來解決綜合排序問題,click_value的計算主要考慮候選集結果對用戶產生的長遠影響,如用戶閱讀一篇長文章、關注一個新用戶的click_value要遠高於點擊一個相關微博。

時序混合

微博推薦會隨著用戶行為而實時調整推薦結果,這裡通過時序混合演算法策略來達成這一目的,在不同的階段採用不同的演算法。如圖是一個正文頁的例子。

時序混合

在實際場景中,很多用戶會先後訪問同一個正文頁,在初始曝光階段,系統會採用content-based 演算法給出推薦結果,而正文頁得到了充分曝光和足夠多可信用戶的互動行為後,會採用協同過濾的演算法計算推薦結果,並呈現給後續訪問的用戶。這個演算法思路基於一個樸素的假設:訪問同一個正文頁的用戶存在相似的即時興趣,從而這裡可以採用user-based CF並結合貝葉斯平滑來選擇點擊率最好的item做好推薦結果,計算方式如下。

計算方式

其中為用戶i的歷史點擊率,用以消除不同用戶的點擊率偏差。

模型融合

單一的演算法模型都存在局限性,為了解決複雜的社會化推薦問題,通常會採用模型融合的方法來實現模型間的優勢互補,提供最佳的推薦結果。分層模型融合和分片線性模型是微博推薦中應用較多的。

分層模型融合,即上一層模型的輸出作為下一層模型的feature輸入,通常採用多層LR或LR+GBDT的方式,如圖所示。

模型融合

分片線性模型:由於線性模型的局限性,很多時候無法學到泛化效果好的非線性關係,為了應對各類跨平台、分場景的推薦問題,我們引入了分片擬合、分而治之的分片線性模型,即多個模型解決同一個問題,每個模型應用於其效果最好的條件流量。以微博用戶推薦為例,我們從用戶類型維度將空間/流量劃分為3個局部區域——藍V、橙V和普通用戶,它們各有一個線性預測模型來分片融合給出推薦結果,取得了很好的效果。另外在微博廣告實踐中也從平台維度劃分流量空間並採用了分片線性模型,從而大幅提升了CTR預估的精準性。

分片模型

商業化設計—商業推薦

經過多年的發展,微博積累了大量高價值用戶,如明星、領域專家,他們都積累了豐富的社交資產,具有一呼百應的社交影響力。同時,微博上又有大量的企業用戶,希望通過微博平台推廣和營銷,但自身用戶關係網路狹小,從而內容缺乏自我傳播能力,希望能快速構建粉絲關係網路,藉助高價值用戶的關係網路來推廣自己的產品。另外,很多用戶都存在偶發的自我推廣訴求,希望自己的信息被所有的粉絲看到,甚至能曝光給潛在粉絲,但微博信息更新速度快,信息又很容易被淹沒掉。

推薦可以很好地解決上述問題,滿足企業和個人的推廣需求,來通過「連接」實現商業化變現。粉絲頭條和漲粉助手是兩個最有代表性的微博商業推薦產品。

商業推薦

商業化推薦

漲粉助手重點解決高價值粉絲關係網路的快速構建問題,而粉絲頭條專註於企業推廣信息的精準觸達和有效曝光,並通過將名人、關鍵節點轉化為企業的產品代言人,來達成高影響力用戶的社交資產變現和企業用戶的營銷需求,進而將名人的影響力引渡到品牌上,拉近明星、品牌、用戶的距離。在社交網路中,廣告的效果與信息發布者有著重要的關係,因為用戶影響力不同帶來的信任度也就不同。

社交平台

通過系統性的產品設計來實現特定微博信息的爆炸性定向傳播,其實現機制如圖所示。

機制

引爆過程包含兩次粉絲頭條投放:第一次將推廣內容投放給關鍵節點與核心粉絲,等他們產生轉、評、贊等行為後,再代投這些互動內容,藉助關鍵節點的粉絲資產來定向推廣自己的產品以實現二級粉絲關係網路中的擴散傳播,星火燎原。

在演算法實現維度會重點介紹最關鍵的演算法模塊:個性化定價與分包。這裡主要為客戶提供了4個檔位的粉絲頭條投放包,而演算法需要解決的是提升用戶的購買率和總體收入,並保障平台流量變現效率和客戶ROI之間的均衡。

粉絲

演算法設計的關鍵是先定價、後分包,首先通過客戶心理價格和購買力建模,計算不同用戶在面對不同價格時的購買概率,進而計算最佳的呈現價格:

  1. 第一檔:購買率>min_threshold條件下,max{price}
  2. 第二檔:max{P(購買率|用戶類型,price1)*price2}
  3. 第三擋:max{P(購買率|用戶類型,price1,pric2)*price3)
  4. 最大包:price4 = 受眾包用戶量*1000/eCPM。

而分包是在特定價格下需要推廣給多少潛在粉絲,即綜合考慮訂單復購率、客戶ROI的最優eCPM計算:max{eCPM*(1+P(復購率|eCPM,ROI))。

寫在最後

推薦技術誕生於上世紀80年代,而真正的繁榮卻源自於大數據的推動。本文從推薦的定位、微博的數據特點、數據驅動的系統(產品/架構/演算法)設計、推薦的商業化等4個方面全面闡述微博的社會化推薦實踐。在這個過程中,架構設計和數據存儲建立在成熟的大數據工具和解決方案上,產品和演算法設計則大量應用了大數據的思路和技術。通過挖掘社會化數據寶藏,量化「連接」價值,尋找高價值「連接」,為用戶呈現優質的個性化推薦結果。最後詳細描述了微博推薦商業化變現的構想和實踐,證明推薦在社交網路中依然具備良好的商業價值,而不僅僅是電商網站。微博是社會化資產變現的開拓者,希望我們的經驗能夠對讀者有所啟發和幫助,並歡迎大家為我們提出寶貴的建議。

 

來源@36大數據

作者@姜貴彬

文章鏈接:http://www.36dsj.com/archives/45725

給作者打賞,鼓勵TA抓緊創作!