互聯(lián)網(wǎng)時代也是信息爆炸的時代,內(nèi)容太多,而用戶的時間太少,如何選擇成了難題。電商平臺里的商品、媒體網(wǎng)站里的新聞、小說網(wǎng)站里的作品、招聘網(wǎng)站里的職位……當(dāng)數(shù)量超過用戶可以遍歷的上限時,用戶就無所適從了。
對海量信息進行篩選、過濾,將用戶最關(guān)注最感興趣的信息展現(xiàn)在用戶面前,能大大增加這些內(nèi)容的轉(zhuǎn)化率,對各類應(yīng)用系統(tǒng)都有非常巨大的價值。
搜索引擎的出現(xiàn)在一定程度上解決了信息篩選問題,但還遠遠不夠,其存在的兩個主要弊端是:第一搜索引擎需要用戶主動提供關(guān)鍵詞來對海量信息進行篩選。當(dāng)用戶無法準(zhǔn)確描述自己的需求時,搜索引擎的篩選效果將大打折扣,而用戶將自己的需求和意圖轉(zhuǎn)化成關(guān)鍵詞的過程有時非常困難(例如“找家附近步行不太遠就可以到的餐廳,別太辣的”)。更何況用戶是懶惰的,很多時候都不愿意打字。第二是搜索結(jié)果往往會照顧大多數(shù)用戶的點擊習(xí)慣,以熱門結(jié)果為主,很難充分體現(xiàn)出個性化需求。
解決這個問題的最好工具就是——推薦系統(tǒng)(Recommendation System)。
推薦系統(tǒng)的效果好壞,體現(xiàn)在推薦結(jié)果的用戶滿意度上,按不同的應(yīng)用場景,其量化的評價指標(biāo)包括點擊率、成交轉(zhuǎn)化率、停留時間增幅等。為了實現(xiàn)優(yōu)秀的推薦效果,眾多的推薦算法被提出,并在業(yè)界使用。但是其中一類方法非常特殊,我們稱為多模型融合算法。融合算法的意思是,將多個推薦算法通過特定的方式組合的方法。融合在推薦系統(tǒng)中扮演著極為重要的作用,本文結(jié)合達觀數(shù)據(jù)的實踐經(jīng)驗為大家進行系統(tǒng)性的介紹。
推薦系統(tǒng)需要面對的應(yīng)用場景往往存在非常大的差異,例如熱門/冷門的內(nèi)容、新/老用戶,時效性強/弱的結(jié)果等,這些不同的上下文環(huán)境中,不同推薦算法往往都存在不同的適用場景。不存在一個推薦算法,在所有情況下都勝過其他的算法。而融合方法的思想就自然而然出現(xiàn)了,就是充分運用不同分類算法各種的優(yōu)勢,取長補短,組合形成一個強大的推薦框架。俗話說就叫“三個臭皮匠頂個諸葛亮”。
基于物品的協(xié)同過濾(Item-based Collaborative Filtering)是推薦系統(tǒng)中知名度最高的方法,由亞馬遜(Amazon)公司最早提出并在電商行業(yè)內(nèi)被廣泛使用。
基于物品的協(xié)同過濾在面對物品冷啟動(例如新上架物品),或行為數(shù)據(jù)稀疏的情況下效果急劇下降。另外,基于物品的協(xié)同過濾傾向于為用戶推薦曾購買過的類似商品,通常會出現(xiàn)多樣性不足、推薦驚喜度低的問題。
而另一類協(xié)同過濾方法,基于用戶的協(xié)同過濾(User-based Collaborative Filtering)方法,其公式略有不同:
基于用戶的協(xié)同過濾在推薦結(jié)果的新穎性方面有一定的優(yōu)勢,但是推薦結(jié)果的相關(guān)性較弱,而且容易受潮流影響,推薦大眾熱門物品。同時新用戶或低活躍用戶也會遇到用戶冷啟動的棘手問題。
還有一類方法稱為基于模型的方法。常見的有隱語義與矩陣分解模型(Latent Factor Model),LFM對評分矩陣通過迭代的方法進行矩陣分解,原來評分矩陣中的missing value可以通過分解后的矩陣求得。
在達觀數(shù)據(jù)的實踐經(jīng)驗里,LFM通常是推薦精度較好的一類計算模型。但當(dāng)數(shù)據(jù)規(guī)模大時其運算性能會明顯降低,同時計算依賴全局信息,因而很難作增量更新,導(dǎo)致實際工程中會遇到不少困難。而且隱語義模型還存在調(diào)整困難、可解釋性差等問題。
基于內(nèi)容的推薦算法(Content-based Recommendation)是最直觀的推薦算法,這個方法實現(xiàn)簡單方便,不存在冷啟動問題,應(yīng)對的場景豐富,屬于“萬金油”型打法。例如按同類別、同標(biāo)簽等進行推薦。但在一些算法公開評測中,基于內(nèi)容的方法效果都是效果較差的。原因時基于內(nèi)容的方法缺少用戶行為的分析,存在“結(jié)果相關(guān)但是不是用戶想要的”這樣難以克服的問題。同時該算法往往受限于對文本、圖像或音視頻內(nèi)容分析的技術(shù)深度,很難準(zhǔn)確把握住用戶真正關(guān)注的“內(nèi)容點”。
基于統(tǒng)計思想的一些方法,例如Slope One,關(guān)聯(lián)規(guī)則(Association Rules),或者分類熱門推薦等,計算速度快,但是對用戶個性化偏好的描述能力弱,實際應(yīng)用時也存在各種各樣的問題,在此不多贅述。
即使相同的算法,當(dāng)使用不同數(shù)據(jù)源時也會產(chǎn)生不同的推薦結(jié)果。比如協(xié)同過濾,使用瀏覽數(shù)據(jù)和使用交易數(shù)據(jù)得到的結(jié)果就不一樣。使用瀏覽數(shù)據(jù)的覆蓋面比較廣,而使用交易數(shù)據(jù)的偏好精度比較高。
達觀數(shù)據(jù)的眾多實踐發(fā)現(xiàn),多模型融合算法可以比單一模型算法有極為明顯的效果提升。但是怎樣進行有效的融合,充分發(fā)揮各個算法的長處?這里總結(jié)一些常見的融合方法:
1)線性加權(quán)融合法
線性加權(quán)是最簡單易用的融合算法,工程實現(xiàn)非常方便,只需要匯總單一模型的結(jié)果,然后按不同算法賦予不同的權(quán)重,將多個推薦算法的結(jié)果進行加權(quán),即可得到結(jié)果:
是給用戶(user)推薦商品(item)的得分, 是算法K的權(quán)重,是算法k得到的用戶(user)對商品item的推薦得分。這種融合方式實現(xiàn)簡單,但效果較差。因為線性加權(quán)的參數(shù)是固定的,實踐中參數(shù)的選取通常依賴對全局結(jié)果升降的總結(jié),一旦設(shè)定后,無法靈活的按照不同的推薦場景來自動變換。比如如果某個場景用算法A效果較好,另外一種場景用算法B效果較好,線性融合的方式在這種情況下不能取得好的效果。為了解決這個問題,達觀數(shù)據(jù)進行了改進,通過引入動態(tài)參數(shù)的機制,通過訓(xùn)練用戶對推薦結(jié)果的評價、與系統(tǒng)的預(yù)測是否相符生成加權(quán)模型,動態(tài)的調(diào)整權(quán)重使得效果大幅提升。
2) 交叉融合法
交叉融合常被稱為Blending方法,其思路是在推薦結(jié)果中,穿插不同推薦模型的結(jié)果,以確保結(jié)果的多樣性。
這種方式將不同算法的結(jié)果組合在一起推薦給用戶
交叉融合法的思路是“各花入各眼”,不同算法的結(jié)果著眼點不同,能滿足不同用戶的需求,直接穿插在一起進行展示。這種融合方式適用于同時能夠展示較多條結(jié)果的推薦場景,并且往往用于算法間區(qū)別較大,如分別基于用戶長期興趣和短期興趣計算獲得的結(jié)果。
3)瀑布融合法
瀑布型(Waterfall Model)融合方法采用了將多個模型串聯(lián)的方法。每個推薦算法被視為一個過濾器,通過將不同粒度的過濾器前后銜接的方法來進行:
在瀑布型混合技術(shù)中,前一個推薦方法過濾的結(jié)果,將作為后一個推薦方法的候選集合輸入,層層遞進,候選結(jié)果在此過程中會被逐步遴選,最終得到一個量少質(zhì)高的結(jié)果集合。這樣設(shè)計通常用于存在大量候選集合的推薦場景上。
設(shè)計瀑布型混合系統(tǒng)中,通常會將運算速度快、區(qū)分度低的算法排在前列,逐步過渡為重量級的算法,讓寶貴的運算資源集中在少量較高候選結(jié)果的運算上。在面對候選推薦對象(Item)數(shù)量龐大,而可曝光的推薦結(jié)果較少,要求精度較高、且運算時間有限的場景下,往往非常適用。
4)特征融合法
不同的原始數(shù)據(jù)質(zhì)量,對推薦計算的結(jié)果有很大的影響。以用戶興趣模型為例,我們既可以從用戶的實際購買行為中,挖掘出用戶的“顯式”興趣,又可以用用戶的點擊行為中,挖掘用戶“隱式”興趣;另外從用戶分類、人口統(tǒng)計學(xué)分析中,也可以推測用戶偏好;如果有用戶的社交網(wǎng)絡(luò),那么也可以了解周圍用戶對該用戶興趣的影響。
所以通過使用不同的數(shù)據(jù)來源,抽取不同的特征,輸入到推薦模型中進行訓(xùn)練,然后將結(jié)果合并。這種思路能解決現(xiàn)實中經(jīng)常遇到的數(shù)據(jù)缺失的問題,因為并非所有用戶都有齊全的各類數(shù)據(jù),例如有些用戶就缺少交易信息,有些則沒有社交關(guān)系數(shù)據(jù)等。通過特征融合的方法能確保模型不挑食,擴大適用面。
5)預(yù)測融合法
推薦算法也可以被視為一種“預(yù)測算法”,即我們?yōu)槊總€用戶來預(yù)測他接下來最有可能喜歡的商品。而預(yù)測融合法的思想是,我們可以對每個預(yù)測算法再進行一次預(yù)測,即不同的算法的預(yù)測結(jié)果,我們可以訓(xùn)練第二層的預(yù)測算法去再次進行預(yù)測,并生成最終的預(yù)測結(jié)果。
如下圖所示,我們把各個推薦算法的預(yù)測結(jié)果作為特征,將用戶對商品的反饋數(shù)據(jù)作為訓(xùn)練樣本,形成了第二層預(yù)測模型的訓(xùn)練集合,具體流程如下
圖中的二層預(yù)測模型可以使用常用的分類算法,如SVM、隨機森林、最大熵等,但達觀實踐中,融合效果較好的是GBDT(Gradient Boosting Decision Tree)方法。
6)分類器Boosting思想
推薦問題有時也可以轉(zhuǎn)化為模式分類(Pattern Classification)問題去看待,我們將候選集合是否值得推薦劃分為幾個不同的集合,然后通過設(shè)計分類器的方法去解決。這樣一來我們就可以用到分類算法中的Boosting思想,即將若干個弱分類器,組合成一個強分類器的方法。Boosting的核心思想是每輪訓(xùn)練后對預(yù)測錯誤的樣本賦以較大的權(quán)重,加入后續(xù)訓(xùn)練集合,也就是讓學(xué)習(xí)算法在后續(xù)的訓(xùn)練集中對較難的判例進行強化學(xué)習(xí),從而得到一個帶權(quán)重的預(yù)測函數(shù)序列h,預(yù)測效果好的預(yù)測函數(shù)權(quán)重較大,反之較小。最終的預(yù)測函數(shù)H對分類問題采用有權(quán)重的投票方式,對回歸問題采用加權(quán)平均的方法對新示例進行判別。算法的流程如下:(參考自treeBoost論文)
通過模型進行融合往往效果最好,但實現(xiàn)代價和計算開銷也比較大。
在達觀數(shù)據(jù)(http://datagrand.com)的實踐中,采用的多級融合架構(gòu)如下:
Online系統(tǒng)
直接面向用戶,是一個高性能和高可用性的推薦服務(wù),其中的Online Ensemble模塊會融合Nearline計算的推薦結(jié)果以及基于content Base的推薦結(jié)果。Online系統(tǒng)往往請求壓力比較大,需要在較短的時間內(nèi)返回結(jié)果,所以這里往往使用最簡單的優(yōu)先級融合算法。
Nearline系統(tǒng)
這個系統(tǒng)部署在服務(wù)端,一方面會接收User Behavior Log,根據(jù)用戶最新的動作行為,生成推薦結(jié)果,并且和Offline Model進行融合,達觀這邊使用通過點擊反饋進行調(diào)整的線性融合方法,具體方法如下,
是更新后的權(quán)重,是展現(xiàn)位置i的平均點擊率,是算法K對該item的得分。是該item的總得分。是位置點擊率的衰減常數(shù)、是算法點擊率的衰減常數(shù),可以根據(jù)具體的業(yè)務(wù)場景設(shè)置不同的值。
是更新后的權(quán)重,是算法K對該item的得分,是該item的總得分,是點擊衰減常數(shù)
通過這種融合方式,會為每個用戶生成一個加權(quán)線性融合算法的Model,根據(jù)這個Model計算出對應(yīng)的推薦結(jié)果。
Offline系統(tǒng)
挖掘長期的、海量的用戶行為日志。以優(yōu)化點擊率為例,我們可以把用戶的展現(xiàn)過的item,以及是否點擊形成訓(xùn)練數(shù)據(jù),我們就需要生成一個是否點擊的分類模型。我們的分類器分為兩個Level: L1層和L2層。L1層是基礎(chǔ)分類器,可以使用協(xié)同過濾、矩陣分解、contentbase等基礎(chǔ)算法;L2層基于L1層,將L1層的分類結(jié)果形成特征向量,再組合一些其他的特征后,形成L2層分類器(如GBDT)的輸入。
Ensemble的訓(xùn)練過程稍微復(fù)雜,因為L1層模型和L2層模型要分別進行訓(xùn)練后再組合。實踐中我們將訓(xùn)練樣本按照特定比例切分開,分別簡稱為Train pig和Test Pig?;趧澐趾蟮臉颖?,整個訓(xùn)練過程步驟如下:
達觀在使用過程中的一些心得如下
1)算法融合的特征除了算法預(yù)測值之外,也可以加入場景特征。比如在場景1算法A效果較好,場景2中算法B效果較好,當(dāng)我們把場景也作為特征進行融合,就可以學(xué)習(xí)出這種特征
2)數(shù)據(jù)切分一定要干凈。往往容易犯的錯誤是基礎(chǔ)算法用的一些詞典使用了全部的數(shù)據(jù),這會使得融合算法效果大打折扣,因為相當(dāng)于基礎(chǔ)算法已經(jīng)提前獲知了融合算法的測試數(shù)據(jù)
3)基礎(chǔ)算法的區(qū)分度越好,融合算法的效果越好,比較不容易出現(xiàn)過擬合
4)L2層也一樣可能出現(xiàn)過擬合(Overfitting),所以也可以加交叉驗證,L2層示意圖如下圖所示
推薦系統(tǒng)中的融合技術(shù)是非常重要的一個環(huán)節(jié),在實戰(zhàn)中,靈活運用融合技術(shù)可以發(fā)揮各個算法的長處,滿足多樣的用戶需求,大大提升推薦結(jié)果的質(zhì)量,達觀數(shù)據(jù)在此方面將不懈努力,探索出更多更好的應(yīng)用。
紀(jì)達麒,達觀數(shù)據(jù)聯(lián)合創(chuàng)始人&CTO,國際計算機學(xué)會(ACM)會員。曾服務(wù)于搜狗、盛大、騰訊幾家公司,任騰訊文學(xué)數(shù)據(jù)中心高級研究員、盛大文學(xué)技術(shù)總監(jiān)等職務(wù),主要負責(zé)數(shù)據(jù)挖掘與分析團隊。在推薦系統(tǒng)、用戶建模、計算廣告等領(lǐng)域有較深入的理解和多年的實戰(zhàn)經(jīng)驗,有6項推薦系統(tǒng)、數(shù)據(jù)挖掘相關(guān)的國家發(fā)明專利,多次圓滿完成公司重大緊急項目的開發(fā)工作,所開發(fā)的智能推薦系統(tǒng)曾創(chuàng)造了上線后點擊率提升300%的記錄。曾帶領(lǐng)團隊多次獲得國際數(shù)據(jù)挖掘競賽的大獎。如2012年ACM KDD-Cup國際大數(shù)據(jù)競賽亞軍、2014年ACM CIKM-Competition世界冠軍、EMI Hackathon音樂推薦算法競賽世界冠軍等。擁有北京郵電大學(xué)計算機碩士學(xué)位。