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