原文:http://hijiangtao.github.io/2014/10/06/WeiboRecommendAlgorithm/
基礎及關聯算法
作用:為微博推薦挖掘必要的基礎資源、解決推薦時的通用技術問題、完成必要的數據分析、為推薦業務提供指導。
- 分詞技術與核心詞提取:是微博內容推薦的基礎,用於將微博內容轉化為結構化向量,包括詞語切分、詞語信息標注、內容核心詞/實體詞提取、語義依存分析等。
- 分類與anti-spam:用於微博內容推薦候選的分析,包含微博內容分類和營銷廣告/色情類微博識別;內容分類采用決策樹分類模型實現,共3級分類體系,148個類別;營銷廣告/色情類微博的識別,采用貝葉斯與最大熵的混合模型。
- 聚類技術:主要用於熱點話題挖掘,以及為內容相關推薦提供關聯資源。屬於微博自主研發的聚類技術WVT算法(word vector topic),依據微博內容特點和傳播規律設計。
- 傳播模型與用戶影響力分析:開展微博傳播模型研究和用戶網絡影響力分析(包含深度影響力、廣度影響力和領域內影響力)。
主要推薦算法
1.Graph-based 推薦算法
從graph的宏觀角度看,我們的目標是建立一個具有更高價值的用戶關系網絡,促進優質信息的快速傳播,提升feed流質量;其中的重要工作是關鍵節點挖掘、面向關鍵節點的內容推薦、用戶推薦。
對這部分的算法做相應的梳理,如下面的表格:

這里的困難點在於graph的“邊”怎樣量化與取舍,依據多個“邊”與“節點”的綜合評分計算,以及與網絡挖掘分析結果的融合。
這部分的算法研發中,產出了如下的數據附產品:

2.Content-based 推薦算法
Content-based 是微博推薦中最常用也是最基礎的推薦算法,它的主要技術環節在於候選集的內容結構化分析和相關性運算。
正文頁相關推薦是content-based 應用最廣的地方,以它為例,簡要的說一下:

其中比較重要的兩點:
-
內容質量分析,主要采用微博曝光收益+內容信息量/可讀性的方法來綜合計算。微博曝光收益是借助用戶群體行為,衡量內容優劣;內容信息量計算比較簡單,即是微博關鍵詞的idf信息迭代;對於內容可讀性的衡量,我們做了一個小的分類模型,分別以可讀性較好的新聞語料和可讀性較差的口語化語料為訓練樣本,通過提取里面的各類詞搭配信息,計算新微博具有良好可讀性的概率。
-
詞擴展,content-based的效果取決於內容分析的深度。微博的內容比較短,可提取的關鍵信息比較少,做相關運算時容易因為數據稀疏而導致推薦召回率和准確率的難以權衡;我們引入word2vec技術,優化了詞擴展效果,后面又以此為基礎開展詞聚類的工作,實現了推薦召回率和准確率的同步提升。
相關計算的技術點在於向量的量化和距離度量,微博技術組通常使用“tf*idf權重量化 + 余弦距離”或者“topic 概率 + KLD距離“的兩種方法。
3.Model-based 推薦算法
微博面臨的兩大推薦挑戰:來源融合與排序、內容動態分類和語義相關。 由於推薦的候選極大豐富,因此推薦結果呈現兩層:多種推薦算法的初選與來源融合排序的精選。這時需要引入機器學習模塊,來學習隱藏在用戶群體行為背后的規律。
另一方面,UGC的內容生產模式使得人工標注樣本不再有效,我們需要很好的聚類模型把近期的全量信息聚合成類,然后建立語義相關,完成推薦。
Model-based 算法就是為了解決上述的問題,下面是新浪微博兩塊最重要的機器學習工作:
3.1 CTR/RPM(每千次推薦關系達成率)預估模型,采用的基本算法為Logistic regression
下面是CTR預估模型整體的架構圖

這部分工作包含樣本選擇、數據清洗、特征提取與選擇、模型訓練、在線預估和排序。值得一提的是,模型訓練前的數據清洗和噪音剔除非常重要,數據質量是算法效果的上界。
Logisitic regression是一個2分類概率模型,優化的目標在於最大化“樣本正確分類概率的連乘值“。
3.2 LFM(Latent Factor Model):LDA、矩陣分解(SVD++、SVD Feature)
混合技術
1.時序混合
在推薦過程的不同時間段,采用不同的推薦算法;以正文頁相關推薦為例,在正文頁曝光的前期階段,采用content-based + ctr預估的方法生成推薦結果,待產生的足量可信的用戶點擊行為后,再采用user-based 協同過濾的方法得到推薦結果。

這樣利用content-based很好的解決了冷啟動的問題,又充分發揮了user-based CF的作用,實現1+1>2的效果。
2.分層模型混合
很多情況下,一個模型無法很好的得到想要的效果,而分層組合往往會取得比較好的效果,分層模型混合即“將上一層模型的輸出作為下層模型的特征值,來綜合訓練模型,完成推薦任務“。比如我們在做微博首頁右側的ctr預估排序時,采用分層邏輯回歸模型,解決了不同產品間特征天然缺失與樣本量差異、曝光位置帶來的效果偏差等問題。
3.瀑布型混合
這類混合技術思路非常簡單,即在推薦候選非常豐富的情況下,采用逐層過濾的方法的得到推薦結果,通常將運算快、區分度低的算法放在前面,完成大量候選集的篩選;將運算慢、區分度高的算法放在后面,精細計算剩下的小規模集合。
4.交叉混合
各類推薦算法中子技術,可以在另外的推薦算法中綜合使用,比如content-based在相關性計算中積累的距離計算方法,可以很好的應用在協同過濾的量化計算中。實際的例子,我們將研究LDA時積累的向量計算方法成功的應用到用戶推薦中。
Online與Offline

其中三類半成品為:
1)計算過程拆解的離線部分,如user-based CF中的用戶相似度,online通過數據庫讀取后在線計算完成user-based 推薦。
2)離線挖掘的優質候選集,如正文頁相關推薦的內容候選集,online通過索引獲取到數據后,再通過相關性和ctr預估排序生成推薦結果。
3)具有較高相似度的推薦結果集,如offline計算好粉絲相似高的用戶,在線對用戶行為做出實時反饋,實時補充推薦與其剛關注用戶相似的用戶。
效果評測
實際效果的評測分為3個層次:用戶滿意度、產品層指標(如ctr)、算法層指標,效果評測也會分為人工評測、線上A/B測試、離線算法效果評測3種。
新浪微博算法離線效果評測的架構圖:

常用的離線評測指標有:RMSE、召回率、AUC、用戶內多樣性、用戶間多樣性、新穎性等。對於不同的產品有不同的組合指標去衡量,比如用戶推薦中“用戶間多樣性”非常重要,而熱點話題卻可以允許用戶間有較大的結果重合度。 文章整理自《微博推薦算法簡述》
