推薦系統中所使用的混合技術介紹

jopen 10年前發布 | 62K 次閱讀 推薦系統 推薦引擎

文/陳運文

在推薦系統實際運用中,各種混合技術是其中一項極為重要的核心技術。在工程實踐中我們發現,混合技術對提升推薦效果、改進推薦系統的性能等都有重要意義,因此本文對該專題進行如下的一些總結和介紹。

引言

在這個信息爆炸的時代,消費者面臨眾多選擇、未知的領域、過載的信息時,往往無所適從;然而與此同時,內容的生產者(例如商家)也在苦苦尋覓合適的用戶,尋找最便捷的渠道,而解決這兩類矛盾的最好工具就是推薦系統。

推薦系統緣起于搜索系統,在底層系統上兩者有大量相通的技術,但是在相應用戶需求和產生應用的場景上,推薦系統離用戶更進一步:當用戶的需求具體而明確 時,他搜索;但當用戶需求不明確或難以表達時,他需要推薦。另一方面,當用戶需要找某個領域下公認的、熱門的內容時,他搜索;但當用戶需要找個性化的內容 時,他需要推薦。很多場景下,用戶的個性化需求是很難轉化為簡短明確的查詢詞的,例如“今天中午想找個附近的、符合我口味的、消費不貴的餐館”這樣的需 求,非常常見但很難用查詢詞來表達清楚。推薦系統恰好可以填補這個空白,根據挖掘用戶歷史行為來將個性化的需求深入挖掘清楚,實現用武之地。

目前在電商、視頻、文學、社交網絡等等各類網站或應用中,推薦系統都開始扮演起一個越來越重要的角色。但是無論應用于什么系統,歸根結底最關鍵的是必須保證高質量的推薦效果。

撇開產品、交互設計、基礎數據等方面,如果從系統和算法的角度來看,混合推薦的思路是其中最為重要的部分。毫不夸張的說,在真實世界的應用中,無論產品規 模的大或小、用戶的多與少,只要是想要追求推薦效果的高水準,那么混合推薦一定是必不可少的一門絕技。原因為何?——下面來作個解釋

為什么要有混合技術

推薦技術發展至今已經歷了十余年,這期間眾多的算法被提出并在業界運用,經過大量的實踐,人們發現似乎沒有任何一個方法可以獨領風騷、包打天下,每種推薦方法都有其局限性,下面舉些典型的例子說明:

基于物品的協同過濾(Item-based Collaborative Filtering)是推薦系統中知名度最高的方法,由亞馬遜(Amazon)公司最早提出并在電商行業內被廣泛使用。但基于物品的協同過濾在面對物品冷 啟動,以及數據稀疏的情況下效果急劇下降。同時基于物品的協同過濾傾向于推薦用戶購買過商品的類似商品,往往會出現多樣性不足、推薦驚喜度低的問題。

基于用戶的協同過濾(User-based Collaborative Filtering)方法在推薦結果的新穎性方面有一定的優勢,但是推薦結果的相關性較弱,且容易受潮流影響而傾向于推薦出大眾性物品。同時新用戶或低活 躍用戶也會遇到冷啟動(Cold-Start)的棘手問題。

在多個推薦算法競賽中,我們發現隱語義與矩陣分解模型(Latent Factor Model)及其各種改進升級方法(包括SVD++等)是推薦精度最好的單一模型方法,但當數據規模大時其運算性能會明顯降低,同時基于MF的方法依賴全 局進行計算信息,因而很難作增量更新,導致實際工程中會遇到不少困難。另外,隱語義模型還存在調整困難、可解釋性差等問題。

基于內容的推薦算法(Content-based Recommendation)是最直觀的推薦算法,這種方法實現簡單,不存在冷啟動問題,應對的場景豐富,屬于“萬金油”型打法。但在一些算法公開評測 中,基于內容的方法效果都是墊底的之一。同時該算法依賴內容的描述程度,往往受限于對文本、圖像或音視頻內容進行分析的深度。

基于統計思想的一些方法,例如Slope One,關聯規則(Association Rules),或者分類熱門推薦等,計算速度快,但是對用戶個性化偏好的描述能力弱,實際應用時也存在各種各樣的問題,在此不多贅述。

怎樣混合是個問題

解決各種推薦方法“硬傷”的一條最好的解決途徑就是混合技術——它的思路非常明確,俗稱“三個臭皮匠頂個諸葛亮”——即綜合運用各種方法的優勢、揚長避短,組合起來成為一個效果強大的系統。

道理雖然簡單,但是怎樣組合才能真正發揮威力?聯想到一個有趣的電影片段:周星馳的喜劇電影《國產零零漆》中,神志不清的特工達文西“發明”了一個“要你 命3000”的武器,這個“超級武器霸王”把一堆街頭武器——“西瓜刀、鐵鏈、火藥、硫酸、毒藥、手槍、手榴彈、殺蟲劑”——用繩子綁在一起,但是完全沒 有作用,被對手一槍擊斃。

在實際應用中,從系統、算法、結果、處理流程等不同的角度,都有一些具體的混合策略。下面依次從不同的角度來進行介紹。

多段組合混合推薦框架

推薦系統一方面要處理海量的用戶、物品的數據,一方面要實時相應線上用戶的請求,迅速的生成結果并返回。在這里存在一個矛盾是,離線數據挖掘(例如常見的 Hadoop系統)雖然擅長處理大量數據,但運算周期長(小時級或天級)、實時推薦能力差,而在線系統由于要迅速(例如幾十毫秒)計算出推薦結果,無法承 擔過于消耗資源的算法。

 推薦系統中所使用的混合技術介紹

圖1:Netflix的Online-Nearline-Offline混合推薦系統

在業界實際部署時,解決此類常見問題的流行方法是采用三段式混合系統:即Online-Nearline-Offline Recommendation(在線-近線-離線)三層混合機制。曾經舉辦過著名的國際推薦競賽的Netflix公司,在所公開的后臺推薦系統架構中,即 采用了該混合系統(如圖1)。

其中Online系統直接面向用戶,是一個高性能和高可用性的推薦服務,在這里通常會設計有緩存(Cache)系統,來處理熱門的請求(Query)重復 計算的問題。而當Cache不命中的情況下,Online推薦運行一個運算簡單可靠的算法,及時生成結果。Online系統后是Nearline系統,這 個系統部署在服務端,一方面會接收Online系統發過來的請求,將Online計算的一些緩存結果,采用更復雜的算法重新計算并更新后更新緩存。另一方 面Nearline是銜接Online和Offline系統的橋梁,因為Offline結果往往會挖掘長期的、海量的用戶行為日志,消耗的資源大、挖掘周 期長,但是Offline推薦系統計算所得的結果質量往往是最高的,這些結果會通過Nearline系統輸送到線上,發揮作用。

另外一個不可忽視的問題是用戶反饋的及時收集,并及時用于調整推薦結果。挖掘用戶的反饋對調整推薦結果有莫大的幫助,但這個調整往往越及時越好,否則用戶 很容易對結果不滿意而流失。這個點擊挖掘和反饋的功能往往由Nearline推薦系統來承擔,因為該系統收集前端反饋比較方便,又可以保證適當的處理時 長。

加權型混合推薦技術

上面介紹了從系統架構的角度如何進行混合。而從算法的角度來看,則最常用的是采用加權型的混合推薦技術,即將來自不同推薦算法生成的候選結果及結果的分數,進一步進行組合(Ensemble)加權,生成最終的推薦排序結果。

具體來看,比較原始的加權型的方法是根據推薦效果,固定賦予各個子算法輸出結果的權重,然后得到最終結果。很顯然這種方法無法靈活處理不同的上下文場景, 因為不同的算法的結果,可能在不同的場景下質量有高有低,固定加權系統無法各取所長。所以更好的思路是設置訓練樣本,然后比較用戶對推薦結果的評價、與系 統的預測是否相符,根據訓練得到的結果生成加權的模型,動態的調整權重。

 推薦系統中所使用的混合技術介紹

圖2:加權混合技術能明顯提高推薦精度

加權混合的模型有很多,除了簡單的線性模型外,常用的有回歸模型(Logistic Regression)、RBM(Restricted Boltzmann Machines)、GBDT(Gradient Boosted Decision Trees),這三種混合模型在推薦算法競賽中大放異彩,在2009年結束的Netflix百萬美元推薦競賽中,優勝隊伍將充分運用和多種加權混合模型的 優勢,組合后的算法推薦精度非常高。獲勝隊的Yehuda Koren在論文The BellKor Solution to the Netflix Grand Prize中對此有非常詳細的介紹。另外值得一提的是臺灣大學推薦團隊,他們通過混合甚至二次混合的方式(如圖2),將眾多單獨推薦算法的結果進行最合理 的加權組合,在最近幾屆的KDD Cup數據挖掘競賽中所向披靡,經常取得極為優異的推薦效果。

分級型混合推薦技術

盡管上述加權組合型混合推薦技術有非常高的精度,但系統復雜度和運算負載都較高。在工業界實際系統中,往往采用一些相對簡單的方案,其中分級型混合推薦技 術就是一類思想簡單但效果也不錯的方法。這種混合推薦技術根據不同的推薦場景,將不同的推薦算法按照效果優劣進行層次性劃分。在對應的推薦場景下,優先采 用高可信度的推薦算法生成的結果,然后依次采用后續方法生成結果。

在各種推薦場景中,Top-N推薦是最為常見的一類。這種推薦應用有時需要展示較多的推薦結果,而此時一種推薦算法的結果往往不夠豐富,通常會采用分級型 的混合技術,通過事先的數據挖掘,優先將推薦精度高的算法結果先列出,然后用依次用其他方法的結果遞補。不同的推薦算法往往在精度(Precision) 和召回(Recall)之間有所折衷,因此優先列出高精度結果,長尾部分則采用高召回的結果進行補足,能兼顧對推薦結果數量和質量的兩種需求。

交叉調和技術

交叉調和技術有些類似西方釀造威士忌(Whisky)酒的過程——將純麥威士忌、谷物威士忌、或者不同產地、口味的陳釀進行一定比例的調配后最終成品。交 叉調和推薦技術(Blending Recommendation)的主要動機是保證最終推薦結果的多樣性。因為不同用戶對同一件物品的著眼點往往各不相同,而不同的推薦算法,生成的結果往 往代表了一類不同的觀察角度所生成的結果,交叉調和技術將不同推薦算法的生成結果,按照一定的配比組合在一起,打包后集中呈現給用戶。

交叉調和技術需要注意的問題是結果組合時的沖突解決問題,通常會設置一些額外的約束條件來處理結果的組合展示問題。另外我們發現為了讓用戶更多的注意到結果的多樣性,對不同類型的推薦結果輔以展示不同的推薦理由,往往能獲得更多收益。

瀑布型混合方法

瀑布型(Waterfall Model)的混合方法采用了過濾(Filtering)的設計思想,將不同的推薦算法視為不同粒度的過濾器,尤其是面對待推薦對象(Item)和所需的推薦結果數量相差極為懸殊時,往往非常適用。

在瀑布型混合技術中,前一個推薦方法過濾的結果,將輸出給后一個推薦方法,層層遞進,候選結果在此過程中會被逐步遴選,最終得到一個高精確的結果。設計瀑 布型混合系統中,通常會將運算速度快、區分度低的算法排在前列,逐步過渡為重量級的算法,這樣的優點是充分運用不同算法的區分度,讓寶貴的運算資源集中在 少量較高候選結果的運算上。

推薦基礎特征混合技術

數據是推薦系統的基礎,一個完善的推薦系統,其數據來源也是多種多樣的。從這些數據來源中我們可以抽取出不同的基礎特征。以用戶興趣模型為例,我們既可以 從用戶的實際購買行為中,挖掘出用戶的“顯式”興趣,又可以用用戶的點擊行為中,挖掘用戶“隱式”興趣;另外從用戶分類、人口統計學分析中,也可以計算出 用戶興趣;如果有用戶的社交網絡,那么也可以了解周圍用戶對該用戶興趣的投射,等等。另一方面,從物品(Item)的角度來看,也可以挖掘出不同的特征。

不同的基礎特征可以預先進行組合或合并,為后續的推薦算法所使用。這樣處理的優點是將推薦算法切分得比較清楚,這樣將一個整體的推薦問題,分解為特征的抽取、組合、使用等各個環節的優化問題,在進行個性化推薦時較為適用。

推薦模型混合技術

和特征合并的技術不同,多模型的合并技術在模型計算階段,將整個模型作為第二種算法的輸入。這種組合方式,事實上形成了一種新的獨立的推薦模型。例如在進 行基于用戶的協同過濾計算的時候,在計算相鄰用戶的距離的基礎上,可以進一步根據用戶的屬性內容(Content)信息、采用基于內容的推薦的思想,進一 步生成相似用戶的候選結果;或者利用用戶的社交網絡信息(Social Network)來擴展相鄰用戶集合。這種在算法設計階段而不是特征利用或推薦結果合并階段的混合技術,被成為推薦模型混合技術。

這種技術往往適用于數據稀疏或質量較差時,單個推薦模型結果都比較差的情況。此時對多個較差的模型的最終結果進行合并無法獲得滿意的結果(因為候選結果都比較差),因此提前在模型計算階段進行算法思路的合并,這樣能提前召回好的結果,提升推薦效果。

整體式混合推薦框架

除了上述的系統架構、特征、算法、推薦結果等等角度的推薦融合技術,還有很多的內容是沒有包括的,例如從商業邏輯的角度來分析,商家往往有一些特定的推薦 需求或者推薦規則,需要對算法生成的結果進行調整。亦或者從交互設計的角度來看,推薦結果的展示方式等都有所不同;一些特殊的應用場景可能需要強調地域、 時間等信息,對應的推薦挖掘方法和展現都有特殊的要求,這個時候對結果的混合往往要從整個產品的角度來進行設計和處理,從而能夠滿足不同的需要,這些可以 被納入整體式的混合推薦框架中考慮。

討論和小結

推薦效果是一個推薦系統是否能獲得成功的生命線,而混合推薦技術是其中最為重要的一個環節。在各種實際應用中,廣大的研發工程師在處理很多問題時,往往都 從直覺出發在不同程度的使用各種混合推薦技術,也解決了很多實際問題,取得了很好的效果。本文從理論角度對此進行了梳理,希望能幫助大家提升對推薦系統的 領悟和理解。心中裝著進行混合的意念,并理論聯系實際,對開發一個成功的推薦系統會有莫大的幫助。

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!