大數據驅動下的微博社會化推薦
不同于搜索,“推薦”通常不是獨立的互聯網產品,而是互聯網產品的核心組件,為該產品的核心目標服務,比如電商網站的推薦是為了達成更多商品交易。微博推薦同樣如此,其存在價值就是通過梳理和優化用戶關系網絡、打通內容傳播鏈條、引爆信息定向傳播,從而實現加速高價值用戶關系構建、優質內容傳播和商業化營收等微博核心目標。
明確了推薦的角色和定位后,設計一個合適的推薦系統還需要系統了解微博的數據特點。因為只有清楚數據的特點,才能更有針對性地設計推薦系統產品、架構和算法。
微博的數據特點
微博是一個以內容消費為核心的偏弱關系社交網絡,關系的構建多是依托于興趣。它是半開放的,用戶看到的大部分內容,來自于2層關注構建的網絡。而對社交網絡而言,用戶關系網絡結構、內容信息、用戶是其數據三要素,因此下文也主要會圍繞這3個要素對微博數據特點進行闡述。
用戶關系網絡結構:呈現海量、社會化、興趣弱關系、半開放等4個方面的特點。微博關系網絡擁有超過6億個節點、1000多億條邊,每天有海量信息通過這張網絡傳輸。它就像一個虛擬社會,帶著社會化分工、去中心化、非對等性的屬性;每個用戶都有自己的真實身份和角色,比如橙V、藍V、普通用戶,承擔不同的職責并具備不同的話語權,在內容的生產、傳播、消費的過程中,扮演著不同角色。
內容信息:微博的信息是簡短、豐富而碎片化的,同時存在著UGC和媒體內容,具備極快的傳播速度。微博由點及面和Timeline的Feed流設計,使其具備極好的信息傳播能力,這是微博的優勢,但同樣也會引發問題——飛速的傳播讓舊信息很快被淹沒掉,不管其價值多寡。因此對于推薦系統來說,其主要目標就是讓優質信息沉淀下來并獲得更多的曝光機會,這也是之所以要做“錯過的微博”的原因。
用戶:微博用戶具備個性化的行為和偏好,承擔著良好的社會化分工角色。同時,微博通過基于UID的賬號體系來識別用戶,記錄歷史數據并存儲關系數據,從而精確地了解每一個用戶,也為后面個性化推薦打下良好的基礎。
微博推薦系統設計
微博推薦的設計主要包括產品、架構、算法3個方面,下面首先了解產品的設計思路。
產品設計
微博自然推薦分為用戶和內容推薦兩個部分。
用戶推薦
用戶推薦的產品目標是優化用戶關系網絡結構,在用戶推薦產品設計實踐中主要有兩點經驗值得和大家分享。
效果衡量指標。效果衡量指標是連接產品定位和算法優化方向的橋梁,而這也是產品設計中不斷思考和摸索的方向。初始時我們直觀地認為,如果用戶喜歡推薦結果就會產生較高的點擊率,從而將CTR作為衡量指標,但隨后這個思路就被否定。用戶推薦的初衷是關系達成而不是即時愉悅用戶,于是衡量指標被調整為RPM(Relation per Thousand Impression,即千次曝光的用戶關系達成量)。在一段時間后我們開始反思一個問題:用戶關系達成的意義是什么,用戶關系量是否是越多越好呢?答案顯然是否定的,受限于精力,推薦必須幫助用戶梳理關系網絡結構,讓用戶可以簡單地構建高價值的用戶關系,從而讓用戶可以更好地消費內容以及更容易地進行社交互動,因此衡量指標衍生為關系達成后的互動率和用戶行為量。
產品設計原則。推薦是用戶預期之外的非自然流量,應該順應用戶的行為,以自然流暢的方式展現給用戶。因此,推薦必須從最有效的主動場景入手,比如微博找人頁用戶帶有明顯關注新用戶的意圖,而這里展示用戶推薦正好滿足需求;而Feed流的瀏覽目的是內容消費,推薦新用戶會打斷內容消費的流暢性,效果很差。
內容推薦
內容推薦的產品目標是加速優質信息傳播以滿足內容消費需求,“錯過的微博、贊過的微博、正文頁相關推薦、熱點話題”則是其中具有代表性的內容推薦產品,這里會重點介紹下“錯過的微博”的設計思路。
“錯過的微博”前身是一個叫做“智能排序“的推薦產品,主要用于解決信息過載情況下的排序問題。正常情況下,微博用戶平均每天會接收到2000+條Feed,而真正閱讀的內容不超過200條,那么怎樣才能讓用戶看到更多高價值信息,減少低質內容曝光,從而提升內容消費體驗,這正是產品的設計目的?!爸悄芘判颉辈捎昧撕唵沃苯拥脑O計思路:Feed流按價值高低整體排序,這樣做存在兩個問題:
定義及量化信息對用戶的價值。因為用戶對信息價值的理解方式千奇百怪,因此不論如何調整算法總會讓部分用戶不滿意。
信息價值和時間順序的平衡。整體重排序會讓微博丟失Timeline的排列屬性,從而新的信息有可能排在舊的后面,而時間序是保證微博傳播能力和信息新鮮度的關鍵。
所以“智能排序”不是一個優雅的解決方案,而后通過數據分析發現:用戶錯過的90+%信息中,只有部分內容是對用戶具有極高價值且不容錯過的,所以這里無需對未讀Feed全排序,只需要將最高價值的信息找出來并推薦給用戶,其它的Feed仍按正常時間序排列。這樣做一方面可以讓Feed流整體上符合Timeline的排序,用戶感覺自然流暢;另一方面,與用戶對最高價值的信息認知上比較接近,算法效果比較理想。產品推出后,用戶認可度很高,互動率遠遠高于普通Feed。
架構設計
推薦系統的架構設計,包含在線服務,以及數據存儲、傳輸、計算兩個部分。
首先看數據部分,整體架構分為Online和Offline兩個部分,其中Online部分通過Kafka/Scribe把用戶的即時行為和發布內容傳輸到流式計算系統Storm中做即時處理,處理的結構化數據存儲到Redis中。而Offline的數據,主要通過Hadoop平臺做基礎的存儲,然后通過Spark/MapReduce等分布式計算后,將直接應用到在線服務的數據存儲到HBase/Lushan/Redis等數據庫中,亦或是存放到在線服務的本地文件。
接下來看在線服務的架構設計,如圖所示,這里通過UVE(Uniform Value Estimate)來分發非自然流量——廣告、運營、推薦。推薦經過應用層接入后,會進入在線服務的核心處理模塊lab_common_so,這個模塊主要實現了3項功能。
- 流量切分:即按滿足同樣數據分布的方式切分流量,用于算法策略的灰度實驗。
- 排序:通過LR模型(ctr or RPM or ctr*click_value)實現推薦結果的精選排序。
- 算法策略選擇:動態加載更新算法策略庫.so文件。
微博推薦候選集非常龐大,架構設計中分為初選與精選兩個模塊,精選模塊位于lab_common_so中,而初選由獨立的功能模塊來承擔,來源于3個維度:
- 離線計算:如用戶推薦95%的結果來自離線計算。
- Storm流式計算:實時計算用戶行為觸發的推薦結果,并即時推薦給用戶。
- 離線計算(生成半加工品的推薦資源數據)+在線計算(通過索引IDX連接)。
用于精選排序的ctr預估模型,基于Hadoop平臺數據,通過Spark來分布式訓練。
算法設計
微博推薦的算法體系如圖所示,包含4層:數據挖掘、基礎算法、核心算法、混合算法技術。
先看數據挖掘部分,這里基于微博社交數據建模來完成用戶親密度、用戶影響力、領域關鍵節點、粉絲相似度、關注相似度、興趣協同的量化計算,從而數據化地描述微博社交網絡、用戶關系、用戶興趣和能力,并將其作為在線推薦計算的中間結果數據。
基礎算法中,都是大家比較熟知的NLP、用戶分析、傳播模型等算法,不做過多介紹。算法設計和實踐的重點是核心算法和混合技術,接下來會逐個介紹:
協同過濾
協同過濾是經典的推薦算法,在微博中廣泛應用,共使用過如下4種:
其中,user-based協同的應用最為廣泛。微博借助UID賬號體系,經過多年積累,存儲了充足的用戶數據,user-based CF結果精確,且有良好的推薦理由;相對而言,微博信息的時效性很強,item-based協同效果不太理想。此外,微博具有良好的社會化屬性,擁有大量各個領域的專家和關鍵節點,從而在一些對專業知識要求較高的場景,基于keyUser-based的協同具有良好的效果。在智能排序研發時曾借鑒Facebook的經驗,實踐過Edgerank算法(加一些公式描述),是相對經典的協同過濾,引入了時間衰減因素,來提升推薦結果的時效性。
相關性推薦content-based
Content-based算法廣泛應用在內容推薦中,這里將以微博正文頁相關推薦為例進行介紹,如圖所示分為在線和離線兩個部分。
離線部分,多種候選物料(如微博、電影)經過NLP結構化處理后選取優質候選,以關鍵詞、分類為key構建索引。其中微博、話題、長微博的候選集索引通過流式計算產生,可以做到分鐘級的實時更新。此外,由于微博內容簡短,可提取的有效關鍵詞數量有限,為了提升推薦的覆蓋率和準確度會以優質微博、長微博、話題為訓練語料,離線開展詞擴展、詞聚類計算(基于word2vec)則用于在線相關性計算的輔助。
在線計算,用戶訪問正文頁后,推薦服務會基于Storm流式計算的分類、關鍵詞向量結果查詢索引獲取推薦候選集,并計算微博正文同各個推薦候選集的相關度,選擇相關而不相似的候選集開展ctr/RPM計算,并由此排序得到推薦推薦結果呈現給用戶。
排序模型
基于機器學習的Learning to ranking是推薦中常用解決排序問題的算法技術,微博推薦的排序模型采用經典的LR模型。
在線計算時的feature向量會隨著推薦服務日志記錄下來,尤其是場景相關的feature,并通過特征工程的ETL框架將各類產品匯集和處理以生成訓練樣本,開展模型訓練?;Afeature分為用戶、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之間的均衡。
算法設計的關鍵是先定價、后分包,首先通過客戶心理價格和購買力建模,計算不同用戶在面對不同價格時的購買概率,進而計算最佳的呈現價格:
- 第一檔:購買率>min_threshold條件下,max{price}
- 第二檔:max{P(購買率|用戶類型,price1)*price2}
- 第三擋:max{P(購買率|用戶類型,price1,pric2)*price3)
- 最大包:price4 = 受眾包用戶量*1000/eCPM。
而分包是在特定價格下需要推廣給多少潛在粉絲,即綜合考慮訂單復購率、客戶ROI的最優eCPM計算:max{eCPM*(1+P(復購率|eCPM,ROI))。
寫在最后
推薦技術誕生于上世紀80年代,而真正的繁榮卻源自于大數據的推動。本文從推薦的定位、微博的數據特點、數據驅動的系統(產品/架構/算法)設計、推薦的商業化等4個方面全面闡述微博的社會化推薦實踐。在這個過程中,架構設計和數據存儲建立在成熟的大數據工具和解決方案上,產品和算法設計則大量應用了大數據的思路和技術。通過挖掘社會化數據寶藏,量化“連接”價值,尋找高價值“連接”,為用戶呈現優質的個性化推薦結果。最后詳細描述了微博推薦商業化變現的構想和實踐,證明推薦在社交網絡中依然具備良好的商業價值,而不僅僅是電商網站。微博是社會化資產變現的開拓者,希望我們的經驗能夠對讀者有所啟發和幫助,并歡迎大家為我們提出寶貴的建議。
來源@36大數據
作者@姜貴彬
文章鏈接:http://www.36dsj.com/archives/45725
懂技術, 會運營, 還搞產品的全棧, 可怕~
沙發