近年來,機器學習在搜索、廣告、推薦等領域取得了非常突出的成果,成為最引人注目的技術熱點之一。微博也在機器學習方面做了廣泛的探索,其中在推薦領域,將機器學習技術應用于微博最主要的產品之一——熱門微博,并取得了顯著的效果提升。
熱門微博推薦系統介紹
熱門微博業務場景
熱門微博是基于微博原生內容的個性化興趣閱讀產品。提供最新最熱優質內容閱讀服務,更好地保障用戶閱讀效率和質量,同時達到激勵微博上內容作者更好的創作和推廣內容。
熱門微博的推薦系統主要面臨以下兩點挑戰。
大規模:需要處理微博上的海量用戶和海量內容;
時效性:微博內容的生產周期短,變化較快。
熱門微博推薦系統算法流程
我們定制了一套完善的推薦系統框架,包括基于機器學習的多路召回與排序策略,以及從海量大數據的離線計算到高并發在線服務的推薦引擎。推薦系統主要分為三層,基礎層、推薦(召回)和排序三個部分,推薦(召回)主要負責生成推薦的候選集,排序負責將多個算法策略的結果進行個性化排序。
整體的推薦技術框架如圖1。
圖1 熱門微博推薦技術框架
基礎層:分為內容建模和用戶建模兩部分。內容建模主要是微博內容的語義識別,包括主題模型、實體詞識別、文本分類和圖片分類。用戶建模對用戶建立完整的畫像,包括用戶自然屬性(性別/年齡)、用戶興趣、用戶聚類和用戶之間的關系(親密度等)。
推薦層:我們通過用戶行為、微博內容等進行實時判斷,通過多個召回算法獲取不同候選集。再對召回的候選集進行融合。具體的召回算法如下:
User-based協同推薦:找出與當前User X最相似的N個User,并根據N個User對某Item的打分估計X對該Item的打分。
Item-based協同推薦:我們計算不同mid的共現概率,取出滿足一定閾值且排在top的mid作為協同mid的候選。
Content-based推薦:通過自然語言處理、圖像識別等算法,對微博文本、圖片、視頻等內容打標簽;通過用戶行為和微博內容標簽,挖掘用戶的興趣標簽。基于內容標簽和興趣標簽的匹配,提供基于內容的推薦候選。
排序層:每類召回策略都會召回一定的候選微博,這些候選微博去重后需要統一做排序。排序使用的模型包括邏輯回歸、GBDT/FM、DNN等。排序框架大致可以分為三部分:
特征工程:特征的預處理、離散化、歸一化、特征組合等,生成訓練模型需要的樣本數據。
模型工具:基于樣本數據,使用不同的模型做訓練、評估,生成模型訓練結果。
排序引擎:在線模型LOAD,提取出相對應的特征并且做特征映射,并利用機器學習排序算法,對多策略召回的推薦候選進行融合和打分重排。
熱門微博的機器學習推薦
協同過濾推薦是目前業界常用的推薦算法之一。協同過濾推薦是利用users和items的關系矩陣來對user和item進行建模,從而進行推薦的一類算法。其主要分為兩種:基于user的協同過濾推薦和基于item的協同過濾推薦。在熱門微博業務場景下,一個item是指一條微博。下面介紹基于用戶的協同過濾推薦和基于微博的協同過濾推薦兩方面的實踐。
表1 User-Item關系矩陣
大規模user-based協同推薦
基于用戶的系統過濾推薦的基本原理是:某用戶的相似用戶群喜歡什么,就給該用戶推薦什么。
實踐中,基于用戶的系統過濾推薦過程就是以下步驟:
為當前用戶找到他的相似用戶群;
獲取該用戶群在歷史一段時間內喜好的若干微博作為候選;
計算該用戶群對各個候選微博的喜好程度;
將喜好程度最高的N條微博推薦給當前用戶。
上述步驟中,最關鍵的是a。用戶的相似度刻畫,直接影響推薦的準確度;用戶的相似用戶群的規模,直接影響推薦的個性化程度。相似用戶群的方案有很多,常見的有聚類、K近鄰。它們的優劣對比如下。
表2 聚類、K近鄰方案對比
最終,根據我們的業務場景,選擇了聚類方案。鑒于業務的特性,我們還要對聚類結果有額外的要求:每個類別內包含的優質用戶數量要盡量相近。我們的解決方案是只用優質用戶做訓練同時保證聚類均勻,全部用戶做預測。所以接下來要解決的問題是選擇聚類算法、用戶的向量表征、控制聚類均勻。
盡管聚類算法有很多,但它們依然基本上都還是在K-Means算法的框架下,因此我們直接選用K-Means算法。關于用數學向量表示用戶。值得注意的是,當解決實際聚類問題時,一般情況下,問題對象的向量表征比聚類算法本身對最終效果影響更大。
首先,我們考慮直接用關系矩陣的行向量作為用戶的向量表示。在微博推薦的場景下,item的數量是快速增長的,因此只能使用歷史上一段時間內的用戶-微博關系矩陣。同時,矩陣是集群稀疏的,當我們用較短歷史數據訓練聚類時,效果表現不好。所以,我們盡可能拉長歷史來保證用戶向量中包含充足的信息,然而,K-Means對高維數據的訓練效率極低。我們盡量平衡訓練效率和聚類效果,但效果很差,各個類別規模極其不均勻,不能滿足需求。
所以,我們考慮了三個降維方案:LDA、Word2Vec、Doc2Vec。
LDA:雖然LDA訓練出來的主題分布可以作為特征向量,但是LDA本身不強調向量間距離的概念,可與后面K-Means算法的訓練過程不相匹配,所以效果不佳,淘汰。
Word2Vec:強調向量間的距離,適合K-means。但是當使用Word2Vec時我們要微博ID當成句子ID,微博的閱讀者序列作為句子內容,用戶ID作為詞。按照微博的特性,這么處理的話,語料里“句子”長度的分布會非常不均勻。所以最終也沒有選用。
Doc2Vec:強調向量間的距離,適合K-means。把用戶ID當成句子ID、用戶的閱讀序列作為句子內容,微博ID作為詞進行訓練時,語料里“句子”長度的分布會均勻很多,效果較好。
所以最終選擇了Doc2Vec對用戶向量進行降維。然后使用低維向量進行聚類,結果明顯改善,類別規模變得很均勻,符合我們的需求。
在線部分,在線部分只需要記錄幾小時內每個聚類下的用戶群體對各個微博的行為,經過簡單的加權計算、排序、取Top。當為某用戶推薦時,只需查到相應的聚類ID對應的推薦列表。在線計算開銷極小。
大規模item-based協同推薦
基于微博的協同過濾推薦的基本原理是:如果看了微博A的用戶很大比例都去看了微博B,那么應該給只看了微博A的用戶推薦微博B。這個原理的實現就是計算任意兩個微博的相關性。關鍵點時設計相關性公式。我們迭代了三個版本的相關性公式。
第一版,我們將相關性抽象為:
具體實現是按上述公式計算兩兩微博的相關性后,為每個微博按預設閾值節選可推薦相關微博。這個可以推薦相關微博列表,用于即時推薦模塊。當用戶點擊某條微博后,在下次刷新時候會推薦該條微博的相關微博。由于微博內容實效性比較強,這種推薦方式可以捕捉用戶很及時的閱讀需求,所以推薦的準確率很高。然而,上述方法的召回率比較低。
第二版重點提升召回率。通過分析發現,召回率低的原因是用戶-微博矩陣特別稀疏,兩條微博在一個用戶瀏覽時的共現次數特別少。所以設計了新的公式:
在公式中我們加入了變量expo(B),表示B在用戶的頁面里曝光了。按新公式實現后,召回大幅度提升。
第三版,我們試圖解決關系矩陣稀疏的問題。在微博場景中,很多微博是相似的,但是它們擁有不同的微博ID。這會天然地造成矩陣稀疏,從而相關性計算不準確。舉個例子:
假設Bi和Bj是描述的同一個內容,且RABi和RABj都略低于閾值,那么Bi和Bj是不能作為A的協同推薦微博的,這顯然是不合理的。
為了解決這個問題,我們改進了算法。首先將相似微博Bi和Bj聚合成B,然后計算相關性。流程如下:
改進后,覆蓋率有得到了進一步的提升。
熱門微博的機器學習排序
機器學習排序是搜索、廣告、推薦等業務場景的核心算法,對業務效果有著極大的影響。通常的做法,是基于曝光日志、點擊日志等采集各種特征,建模用戶點擊率。在熱門微博業務中,以下是我們在排序算法方面的一些有效的實踐。
大規模特征組合
影響機器學習排序效果的一個核心因素就是特征。特別是當使用線性模型時(如邏輯回歸),對模型效果影響較大的,是特征組合,也就是特征的表達能力。
圖2 排序模型的特征空間
如圖2所示,排序模型可被認為是建立在物料、用戶、環境的三維特征空間。每個維度上,從零點向外的方向代表從具體到泛化。例如,物料軸從零點開始,分別為物料按mid(微博id)、細粒度標簽、粗粒度標簽、作者、形式劃分等。
根據熱門微博中的實踐,總結出了特征組合的一些設計經驗和原則:
越逼近零點的特征越有效,但是要考慮稀疏性。
跨軸的特征組合,會產出更加個性化的特征,特別是用戶和物料的組合。
多目標機器學習排序
通常的ctr預估排序,只以點擊率為目標。而熱門微博業務會有多個目標,所以需要考慮多目標的排序。實踐表明,多個目標之間往往沒有很強的正相關關系。因此,如何在排序模型中兼顧多個目標,使得每個目標都有增長,就非常重要。在熱門微博的機器學習排序中,我們實驗了兩種方法:
每個目標各自使用一個模型,做模型融合。例如熱門微博需要考慮轉發、評論和贊,分別訓練預估轉發率模型、預估評論率、預估贊率的模型,以這三個模型的預測結果,做加權后,做為排序分數。
圖3 多目標機器學習模型的融合
模型融合后,以提升所有正向行為的概率為總目標,給各個模型分配以不同的權重。該方法的優點在于,分別建模不同的目標,以快速的多組實驗來調整權重,以找到權重參數的更優解。缺點在于需要同時訓練多個模型,開發成本高。
所有目標使用一個模型,在標注正樣本時,考慮多個目標。例如對于轉發和贊,在標注正樣本時,給予不同的權重,使它們綜合體現在模型目標中。如表3,每行為一條訓練樣本,根據業務需要,把轉發、評論、贊的權重分別設置為1、2、5。
表3 通過樣本標注不同權重,一個模型兼顧多個目標
該方法通過對不同正向行為給予不同權重,將多目標問題轉化為單目標問題。它的優點在于,一個模型同時兼顧了多個目標,使不同目標的權重體現在損失函數中,參與模型優化求解,便于平衡多個目標的效果。
分片線性模型
互聯網行業的機器學習算法,廣泛使用了線性模型。線性模型的缺點,在于無法充分利用數據中的非線性規律。
熱門微博下,不同用戶的點擊率以及行為偏好是有差異的,不同物料領域下的點擊率也是有差異的,因此我們考慮使用基于用戶、基于領域的先驗知識,構造分片的線性模型。
另外,熱門微博的分片線性模型結合了多目標的優化。根據不同人群的行為偏好,在分片時設置不同的多目標權重。
分片線性模型:
其中πi為分片的作用范圍,對應分片內為1,其他為0。
在熱門微博業務中,分片為不同的人群(80 / 90后、男 / 女)。
分片的多目標模型(以指數加權為例):
其中πi為分片的作用范圍,ωij為i個分片內第j個目標模型的參數,δij為第i個分片內第j個目標模型的指數權重。
機器學習效果評估
對于協同過濾推薦,我們設計了一個量度m,來模擬估計上線后實際效果。假設有N+1天的歷史行為日志。首先,用1-N天的用戶-微博矩陣,為每一個用戶計算出第N+1天協同推薦的候選微博集合C。然后將第N+1天的真實曝光微博集合E與C做交集,得到集合Ec;將第N+1天的真實點擊微博集合A與C做交集,得到集合Ac。最后計算Ac/Ec作為量度。
對于排序算法,采用了離線AUC評估和線上的ABTest評估。
機器學習應用于熱門微博推薦系統后,業務指標和用戶體驗都得到了顯著提高。
總結和展望
我們將機器學習相關技術應用于熱門微博業務,并結合業務特色對算法做了進一步的拓展。
推薦算法方面,基于用戶的協同過濾推薦我們使用user embedding+Kmeans方案來平衡算法效果、離線計算規模和線上響應速度?;谖⒉┑膮f同過濾推薦我們升級了兩次相關度計算公式,來解決行為稀疏和重復內容的導致的數據稀疏的問題。
排序算法方面,大規模特征組合在特征工程實踐中總結的一些規律和原則,多目標機器學習排序是為了兼顧多個業務目標而做的嘗試和探索,分片線性模型是結合熱門微博業務知識完善線性模型的結構和效果。
-
算法
+關注
關注
23文章
4599瀏覽量
92638 -
機器學習
+關注
關注
66文章
8377瀏覽量
132405
原文標題:機器學習在熱門微博推薦系統的應用
文章出處:【微信號:AI_Thinker,微信公眾號:人工智能頭條】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論