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

文/陳運文html

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

引言

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

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

目前在電商、視頻、文學、社交網絡等等各種網站或應用中,推薦系統都開始扮演起一個愈來愈重要的角色。可是不管應用於什麼系統,歸根結底最關鍵的是必須保證高質量的推薦效果。緩存

撇開產品、交互設計、基礎數據等方面,若是從系統和算法的角度來看,混合推薦的思路是其中最爲重要的部分。絕不誇張的說,在真實世界的應用中,不管產品規模的大或小、用戶的多與少,只要是想要追求推薦效果的高水準,那麼混合推薦必定是必不可少的一門絕技。緣由爲什麼?——下面來做個解釋網絡

爲何要有混合技術

推薦技術發展至今已經歷了十餘年,這期間衆多的算法被提出並在業界運用,通過大量的實踐,人們發現彷佛沒有任何一個方法能夠獨領風騷、包打天下,每種推薦方法都有其侷限性,下面舉些典型的例子說明:架構

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

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

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

基於內容的推薦算法(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)來擴展相鄰用戶集合。這種在算法設計階段而不是特徵利用或推薦結果合併階段的混合技術,被成爲推薦模型混合技術。

這種技術每每適用於數據稀疏或質量較差時,單個推薦模型結果都比較差的狀況。此時對多個較差的模型的最終結果進行合併沒有法得到滿意的結果(由於候選結果都比較差),所以提早在模型計算階段進行算法思路的合併,這樣能提早召回好的結果,提高推薦效果。

總體式混合推薦框架

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

討論和小結

推薦效果是一個推薦系統是否能得到成功的生命線,而混合推薦技術是其中最爲重要的一個環節。在各類實際應用中,廣大的研發工程師在處理不少問題時,每每都從直覺出發在不一樣程度的使用各類混合推薦技術,也解決了不少實際問題,取得了很好的效果。本文從理論角度對此進行了梳理,但願能幫助你們提高對推薦系統的領悟和理解。心中裝着進行混合的意念,並理論聯繫實際,對開發一個成功的推薦系統會有莫大的幫助。


轉載自:推薦系統中所使用的混合技術介紹 | Resys China

相關文章
相關標籤/搜索