精品国产一级在线观看,国产成人综合久久精品亚洲,免费一级欧美大片在线观看

當前位置:大數據業界動態 → 正文

信息過載的大數據時代,大數據推薦系統如何搭建,趨勢何方

責任編輯:editor004 |來源:企業網D1Net  2016-01-20 10:39:21 本文摘自:199IT網

05

同比增長隨著大數據時代的來臨,網絡中的信息量呈現指數式增長,隨之帶來了信息過載問題。推薦系統是解決信息過載最有效的方式之一,大數據推薦系統已經逐漸成為信息領域的研究熱點。介紹了推薦系統的產生及其在大數據時代的發展現狀、推薦系統的領域需求和系統架構、大數據環境下推薦系統的挑戰及其關鍵技術、開源的大數據推薦軟件、大數據推薦系統研究面臨的問題,最后探討了大數據推薦系統的未來發展趨勢。

1 推薦系統與網絡大數據

隨著科技與信息技術的迅猛發展,社會進入了一個全新的高度信息化的時代,互聯網無處不在,影響了人類生活的方方面面,并徹底改變了人們的生活方式。尤其是進入Web 2.0時代以來,隨著社會化網絡媒體的異軍突起,互聯網用戶既是網絡信息的消費者,也是網絡內容的生產者,互聯網中的信息量呈指數級增長。由于用戶的辨別能力有限,在面對龐大且復雜的互聯網信息時往往感到無從下手,使得在互聯網中找尋有用信息的成本巨大,產生了所謂的“信息過載”問題。

搜索引擎和推薦系統的產生為解決“信息過載”問題提供了非常重要的技術手段。對于搜索引擎來說,用戶在搜索互聯網中的信息時,需要在搜索引擎中輸入“查詢關鍵詞”,搜索引擎根據用戶的輸入,在系統后臺進行信息匹配,將與用戶查詢相關的信息展示給用戶。但是,如果用戶無法想到準確描述自己需求的關鍵詞,此時搜索引擎就無能為力了。和搜索引擎不同,推薦系統不需要用戶提供明確的需求,而是通過分析用戶的歷史行為來對用戶的興趣進行建模,從而主動給用戶推薦可能滿足他們興趣和需求的信息。因此,搜索引擎和推薦系統對用戶來說是兩個互補的工具,前者是主動的,而后者是被動的。

近幾年,電子商務蓬勃發展,推薦系統在互聯網中的優勢地位也越來越明顯。在國際方面,比較著名的電子商務網站有Amazon和eBay,其中Amazon平臺中采用的推薦算法被認為是非常成功的。在國內,比較大型的電子商務平臺網站有淘寶網(包括天貓商城)、京東商城、當當網、蘇寧易購等。在這些電子商務平臺中,網站提供的商品數量不計其數,網站中的用戶規模也非常巨大。據不完全統計,天貓商城中的商品數量已經超過了4 000萬。在如此龐大的電商網站中,用戶根據自己的購買意圖輸入關鍵字查詢后,會得到很多相似的結果,用戶在這些結果中也很難區分異同,用戶也難于選擇合適的物品。于是,推薦系統作為能夠根據用戶興趣為用戶推薦一些用戶感興趣的商品,從而為用戶在購物的選擇中提供建議的需求非常明顯。目前比較成功的電子商務網站中,都不同程度地利用推薦系統在用戶購物的同時,為用戶推薦一些商品,從而提高網站的銷售額。

另一方面,智能手機的發展推動了移動互聯網的發展。在用戶使用移動互聯網的過程中,其所處的地理位置等信息可以非常準確地被獲取。基于此,國內外出現了大量的基于用戶位置信息的網站。國外比較著名的有Meetup和Flickr。國內著名的有豆瓣網和大眾點評網。例如,在大眾點評這種基于位置服務的網站中,用戶可以根據自己的當前位置搜索餐館、酒店、影院、旅游景點等信息服務。同時,可以對當前位置下的各類信息進行點評,為自己在現實世界中的體驗打分,分享自己的經驗與感受。當用戶使用這類基于位置的網站服務時,同樣會遭遇“信息過載”問題。推薦系統可以根據用戶的位置信息為用戶推薦當前位置下用戶感興趣的內容,為用戶提供符合其真正需要的內容,提升用戶對網站的滿意度。

隨著社交網絡的興起,用戶在互聯網中的行為不再限于獲取信息,更多的是與網絡上的其他用戶進行互動。國外著名的社交網絡有Facebook、 LinkedIn、 Twitter等,國內的社交網絡有新浪微博、人人網、騰訊微博等。在社交網站中,用戶不再是單個的個體,而是與網絡中的很多人具有了錯綜復雜的關系。社交網絡中最重要的資源就是用戶與用戶之間的這種關系數據。在社交網絡中,用戶間的關系是不同的,建立關系的因素可能是現實世界中的親人、同學、同事、朋友關系,也可能是網絡中的虛擬朋友,比如都是有著共同愛好的社交網絡成員。在社交網絡中,用戶與用戶之間的聯系反映了用戶之間的信任關系,用戶不單單是一個個體,用戶在社交網絡中的行為或多或少地會受到這些用戶關系的影響。因此,推薦系統在這類社交網站中的研究與應用,應該考慮用戶社交關系的影響。

2 推薦系統的產生與發展

“推薦系統”這個概念是1995年在美國人工智能協會(AAAI)上提出的。當時CMU大學的教授Robert Armstrong提出了這個概念,并推出了推薦系統的原型系統——Web Watcher。在同一個會議上,美國斯坦福大學的Marko Balabanovic等人推出了個性化推薦系統LIRA1。隨后推薦系統的研究工作開始慢慢壯大。1996年, Yahoo網站推出了個性化入口MyYahoo,可以看作第一個正式商用的推薦系統。21世紀以來,推薦系統的研究與應用隨著電子商務的快速發展而異軍突起,各大電子商務網站都部署了推薦系統,其中Amazon網站的推薦系統比較著名。有報告稱, Amazon網站中35%的營業額來自于自身的推薦系統。2006年,美國的DVD租賃公司Netflix在網上公開設立了一個推薦算法競賽——Netflix Prize。 Netflix公開了真實網站中的一部分數據,包含用戶對電影的評分[2]。Netflix競賽有效地推動了學術界和產業界對推薦算法的研究,期間提出了很多有效的算法。近幾年,隨著社會化網絡的發展,推薦系統在工業界廣泛應用并且取得了顯著進步。比較著名的推薦系統應用有:Amazon和淘寶網的電子商務推薦系統、Netflix和MovieLens的電影推薦系統、Youtube的視頻推薦系統、豆瓣和Last.fm的音樂推薦系統、Google的新聞推薦系統以及Facebook和Twitter的好友推薦系統。

推薦系統誕生后,學術界對其關注也越來越多。從1999年開始,美國計算機學會每年召開電子商務研討會(ACM Conference on Electronic Commerce,ACM EC),越來越多的與推薦系統相關的論文發表在ACM EC上。ACM信息檢索專業組(ACM Special Interest Group of Information Retrieval, ACM SIGIR)在2001年開始把推薦系統作為該會議的一個獨立研究主題。同年召開的人工智能聯合大會(The 17th International Joint Conference on Artificial Intelligence)也將推薦系統作為一個單獨的主題。最近的10年間,學術界對推薦系統越來越重視。目前為止,數據庫、數據挖掘、人工智能、機器學習方面的重要國際會議(如SIGMOD、VLDB、ICDE、KDD、AAAI、SIGIR、ICDM、WWW、ICML等)都有大量與推薦系統相關的研究成果發表。同時,第一個以推薦系統命名的國際會議ACM Recommender Systems Conference(ACM RecSys)于2007年首次舉辦。在近幾年的數據挖掘及知識發現國際會議(KDD)舉辦的KDD CUP競賽中,連續兩年的競賽主題都是推薦系統。在KDD CUP 2011年的競賽中,兩個競賽題目分別為“音樂評分預測”和“識別音樂是否被用戶評分”。在KDD CUP 2012年的競賽中,兩個競賽題目分別為“騰訊微博中的好友推薦”和“計算廣告中的點擊率預測”。

3 推薦系統的領域需求和系統架構

如上所述,推薦系統在很多領域得到了廣泛的應用,如新聞推薦、微博推薦、圖書推薦、電影推薦、產品推薦、音樂推薦、餐館推薦、視頻推薦等。不同領域的推薦系統具有不同的數據稀疏性,對推薦系統的可擴展性以及推薦結果的相關性、流行性、新鮮性、多樣性和新穎性具有不同的需求。不同領域推薦系統的需求對比見表1。

盡管需求不盡相同,一個完整的推薦系統通常都包括數據建模、用戶建模、推薦引擎和用戶接口4個部分,如圖1所示。數據建模模塊負責對擬推薦的物品數據進行準備,將其表示成有利于分析的數據形式,確定要推薦給用戶的候選物品,并對物品進行分類、聚類等預處理。用戶建模模塊負責對用戶的行為信息進行分析,從而獲得用戶的潛在喜好。用戶的行為信息包括問答、評分、購買、下載、瀏覽、收藏、停留時間等。推薦引擎模塊利用后臺的推薦算法,實時地從候選物品集合中篩選出用戶感興趣的物品,排序后以列表的形式向用戶推薦。推薦引擎是推薦系統的核心部分,也是最耗系統資源和時間的部分。用戶接口模塊承擔展示推薦結果、收集用戶反饋等功能。用戶接口除了應具有布局合理、界面美觀、使用方便等基本要求外,還應有助于用戶主動提供反饋。主要有兩種類型的接口:Web端(Web-based)和移動端(mobile-based)。受篇幅限制,僅對用戶建模和推薦引擎這兩個重要模塊進行詳細介紹。

3.1 用戶建模

用戶模型反映用戶的興趣偏好。用戶興趣的反饋可分為顯性反饋和隱性反饋。顯性反饋包含兩種方式:用戶定制和用戶評分。用戶定制是指用戶對系統所列問題的回答,如年齡、性別、職業等。評分又分為兩級評分和多級評分。例如,在YahooNews中采用兩級評分:喜歡(more like this)和不喜歡(less like this)。多級評分可以更詳細地描述對某個產品的喜歡程度,如GroupLens中用戶對新聞的喜好程度可評價為1~5分。 News Dude支持用戶的4級反饋:感興趣、不感興趣、已知道、想了解更多,然后進行歸一化處理。

很多時候用戶不能夠準確地提供個人偏好或者不愿意顯性提供個人偏好,更不愿意經常維護個人的偏好。所以,隱性反饋往往能夠正確地體現用戶的偏好以及偏好的變化。常用的隱性反饋信息有:是否點擊、停留時間、點擊時間、點擊地點、是否加入收藏、評論內容(可推測用戶的心情)、用戶的搜索內容、社交網絡、流行趨勢、點擊順序等。在協同過濾推薦方法中,常常把用戶的隱性反饋轉化為用戶對產品的評分。例如, Google News中用戶閱讀過的新聞記為喜歡,評分為1;沒有閱讀過的評分為0。Daily Learner系統中用戶點擊了新聞標題評分為0.8分,閱讀完全文則評分上升到1分;若用戶跳過了系統推薦的新聞,則從系統預測評分中減去0.2分作為最終評分。

用戶的興趣可分為長期興趣和短期興趣。長期興趣反映用戶的真實興趣;短期興趣常與熱點話題相關聯且經常改變,從最近的歷史行為中學習到的短期興趣模型可快速反映用戶興趣的變化。常用的模型有向量空間模型、語義網絡模型、基于分類器的模型等。由于用戶的興趣常受物品本身周期性、熱點事件、突發事件的影響,變化性很大。所以,需要經常更新用戶模型。

3.2 推薦引擎

推薦引擎的基本推薦方法可分為基于內容的推薦和基于協同過濾的推薦。

基于內容的推薦方法的基本原理是,根據用戶以往喜歡的物品,選擇其他類似的物品作為推薦結果[2]。例如,現在有一部新電影與用戶過去看過的某部電影有相同演員或者題材類似,則用戶可能就喜歡這部新電影。通常使用用戶模型的向量特征來描述用戶的興趣愛好,同樣對于每個物品進行特征提取,作為物品模型的內容特征。然后計算用戶模型的向量特征和候選物品模型的向量特征兩者之間的匹配度,匹配度較高的候選物品就可作為推薦結果推送給目標用戶。

協同過濾技術是由David Goldberg在1992年提出的,是目前個性化推薦系統中應用最為成功和廣泛的技術。國外著名的商業網站Amazon,國內比較著名的豆瓣網、蝦米網等網站,都采用了協同過濾的方法。其本質是基于關聯分析的技術,即利用用戶所在群體的共同喜好來向用戶進行推薦。協同過濾利用了用戶的歷史行為(偏好、習慣等)將用戶聚類成簇,這種推薦通過計算相似用戶,假設被其他相似用戶喜好的物品當前用戶也感興趣。協同過濾的推薦方法通常包括兩個步驟:根據用戶行為數據找到和目標用戶興趣相似的用戶集合(用戶所在的群體或簇);找到這個集合中用戶喜歡的且目標用戶沒有購買過的物品推薦給目標用戶。

在實際使用中,協同過濾技術面臨兩大制約:一是數據稀疏問題,二是冷啟動問題。協同過濾需要利用用戶和用戶或者物品與物品之間的關聯性進行推薦。最流行的基于內存的協同過濾方法是基于鄰居關系的方法。該方法首先找出與指定用戶評價歷史相近的該用戶的鄰居,根據這些鄰居的行為來預測結果或者找出與查詢物品類似的物品。這樣做的前提假設是,如果兩個用戶在一組物品上有相似的評價,那么他們對其他的物品也將會有相似的評價;或者如果兩物品在一組用戶上有相似的評價,那么他們對于其他的用戶也將會有相似的評價。

協同過濾算法的關鍵是找尋用戶(物品)的最近鄰居。當數據稀疏時,用戶購買過的物品很難重疊,協同推薦的效果就不好。改進辦法之一是,除了直接鄰居之外,間接鄰居的行為也可以對當前用戶的決策行為構成影響。另外一些解決稀疏問題的方法是可以添加一些缺省值,人為地將數據變得稠密一些,或者采用迭代補全的方法,先補充部分數值,在此基礎上再進一步補充其他數值。此外,還有利用遷移學習的方法來彌補數據稀疏的問題。但這些方法只能在某種程度上部分解決數據稀疏的問題,并不能完全克服。在真實應用中,由于數據規模很大,數據稀疏的問題更加突出。數據稀疏性使協同過濾方法的有效性受到制約。甄別出與數據稀疏程度相匹配的算法,以便能根據具體應用情況做出正確選擇,是非常有價值的研究課題。常用的協同過濾方法有兩類:基于內存的方法和基于模型的方法。前者主要是內存算法,通過用戶與物品之間的關系來導出結果;后者需要找到一個合適的參數化的模型,然后通過這個模型來導出結果。

基于用戶的協同過濾[4]鑒別出與查詢用戶相似的用戶,然后將這些用戶對物品評分的均值作為該用戶評分結果的估計值。與此類似,基于物品的協同過濾鑒別出與查詢物品類似的物品,然后將這些物品的評分均值作為該物品預測結果的估計值。基于鄰居的方法隨著計算加權平均值方法的不同而不同。常用的計算加權平均值的算法有皮爾遜系數、矢量余弦、MSD。

基于模型的方法通過適合訓練集的參數化模型來預測結果。它包括基于聚類的CF[5~7]、貝葉斯分類器[8,9]、基于回歸的方法[10]。基于聚類方法的基本思想是將相似的用戶(或物品)組成聚類,這種技術有助于解決數據稀疏性和計算復雜性問題。貝葉斯的基本思想是給定用戶A其他的評分和其他用戶評分情況下,計算每個可能評分值(比如電影推薦中的1~5分)的條件概率,然后選擇一個最大概率值的評分作為預測值。基于回歸方法的基本思想是先利用線性回歸模型學習物品之間評分的關系,然后根據這些關系預測用戶對物品的評分。Slop-one算法[13]在評價矩陣上使用了線性模型,使之能夠快速計算出具有相對較好精確度的結果。

最近一類成功的基于模型的方法是基于低秩矩陣分解的方法。例如,SVD[11]和SVD++[12] 將評價矩陣分解為3個低秩的矩陣,這3個矩陣的乘積能對原始矩陣進行某種程度的復原,從而可以評估出缺失值。另一種方法是非負矩陣分解[13],其不同之處在于,矩陣分解的結果不得出現負值。基于低秩矩陣分解的方法從評分矩陣中抽取一組潛在的(隱藏的)因子,并通過這些因子向量描述用戶和物品。在電影領域,這些自動識別的因子可能對應一部電影的常見標簽,比如風格或者類型(戲劇片或者動作片),也可能是無法解釋的。

矩陣分解能夠對兩類變量進行交互關系的預測。 Tensor分解模型則能夠將這種不同類變量的交互預測擴展到更高的維度。然而,如果將因子分解模型應用到一個新的任務,針對新問題往往需要在原有因子分解基礎上推導演化,實現新的模型和學習算法。例如SVD++、 STE、 FPMC、timeSVD++、 BPTF等模型,都是針對特定問題在原有因子分解模型基礎上做的改進。因此,普通的因子分解模型具有較差的泛化能力。在模型優化學習算法方面,雖然對基本矩陣分解模型的學習已經有很多算法,如(隨機)梯度下降、交替最小二乘法、變分貝葉斯和MCMC(Markov chain Monto Carlo),但是對于更多的復雜分解模型而言,最多且最常用的方法是梯度下降算法。

因子分解機(factorization machine)是Steffen Rendle于2010年提出的一個通用的模型[3]。憑借該模型,Rendle在KDD Cup 2012中分別取得Track1第2名和Track2第3名的成績。與原有的因子分解模型相比,該模型將特征工程的一般性與分解模型的優越性融合。它能夠通過特征工程來模擬絕大多數的因子分解模型。LibFM是因子分解機的開源實現,簡單易用,不需要太多專業知識,其中包括3類優化學習算法:隨機梯度下降、交替最小二乘法和MCMC。

這里提到的Tensor分解模型和因子分解機都屬于上下文感知推薦算法的范疇。上下文感知的推薦算法將二維協同擴展到多維協同。從學科淵源來看,上下文感知推薦系統既是一種推薦系統,也是一種上下文感知應用系統。Adomavicius和Tuzhilin等人較早指出,把上下文信息融入推薦系統將有利于提高推薦精確度,并提出被廣泛引用的“上下文感知推薦系統(context-aware recommender systems, CARS)”的概念。他們將傳統的“用戶—項目”二維評分效用模型擴展為包含多種上下文信息的多維評分效用模型。Sun等人首先將HOSVD的方法用于網頁搜索,提出了CubeSVD算法[14],算法將用戶的位置信息作為上下文信息,用于搜索引擎的結果排序,取得了比較好的結果。Renle等人提出RTF算法[15],與HOSVD不同, RTF算法根據用戶的排序進行優化,可以獲得比較好的準確度。

基于內容的推薦方法和基于協同過濾的推薦方法各有其優缺點。現有的系統大部分是一種混合系統,它結合不同算法和模型的優點,克服它們的缺點,從而得到了較好的推薦準確度。

4 大數據環境下的推薦系統

4.1 特點與挑戰

雖然推薦系統己經被成功運用于很多大型系統及網站,但是在當前大數據的時代背景下,推薦系統的應用場景越來越多樣,推薦系統不僅面臨數據稀疏、冷啟動、興趣偏見等傳統難題,還面臨由大數據引發的更多、更復雜的實際問題。例如,用戶數目越來越多,海量用戶同時訪問推薦系統所造成的性能壓力,使傳統的基于單節點 LVS 架構的推薦系統不再適用。同時Web 服務器處理系統請求在大數據集下變得越來越多, Web服務器響應速度緩慢制約了當前推薦系統為大數據集提供推薦。另外,基于實時模式的推薦在大數據集下面臨著嚴峻考驗,用戶難以忍受超過秒級的推薦結果返回時間。傳統推薦系統的單一數據庫存儲技術在大數據集下變得不再適用,急需一種對外提供統一接口、對內采用多種混合模式存儲的存儲架構來滿足大數據集下各種數據文件的存儲。并且,傳統推薦系統在推薦算法上采取的是單機節點的計算方式,不能滿足大數據集下海量用戶產生的大數據集上的計算需求[16]。大數據本身具有的復雜性、不確定性和涌現性也給推薦系統帶來諸多新的挑戰,傳統推薦系統的時間效率、空間效率和推薦準確度都遇到嚴重的瓶頸。

4.2 關鍵技術

4.2.1 采用分布式文件系統管理數據

傳統的推薦系統技術主要處理小文件存儲和少量數據計算,大多是面向服務器的架構,中心服務器需要收集用戶的瀏覽記錄、購買記錄、評分記錄等大量的交互信息來為單個用戶定制個性化推薦。當數據規模過大,數據無法全部載入服務器內存時,就算采用外存置換算法和多線程技術,依然會出現I/O上的性能瓶頸,致使任務執行效率過低,產生推薦結果的時間過長。對于面向海量用戶和海量數據的推薦系統,基于集中式的中心服務器的推薦系統在時間和空間復雜性上無法滿足大數據背景下推薦系統快速變化的需求[16]。

大數據推薦系統采用基于集群技術的分布式文件系統管理數據。建立一種高并發、可擴展、能處理海量數據的大數據推薦系統架構是非常關鍵的,它能為大數據集的處理提供強有力的支持。 Hadoop 的分布式文件系統(Hadoop distributed file system, HDFS)架構是其中的典型。與傳統的文件系統不同,數據文件并非存儲在本地單一節點上,而是通過網絡存儲在多臺節點上。并且文件的位置索引管理一般都由一臺或幾臺中心節點負責[16]。客戶端從集群中讀寫數據時,首先通過中心節點獲取文件的位置,然后與集群中的節點通信,客戶端通過網絡從節點讀取數據到本地或把數據從本地寫入節點。在這個過程中由 HDFS 來管理數據冗余存儲、大文件的切分、中間網絡通信、數據出錯恢復等,客戶端根據 HDFS 提供的接口進行調用即可,非常方便。

4.2.2 采用基于集群技術的分布式計算框架

集群上實現分布式計算的框架很多,Hadoop中的MapReduce 作為推薦算法并行化的依托平臺,既是一種分布式的計算框架,也是一種新型的分布式并行計算編程模型,應用于大規模數據的并行處理,是一種常見的開源計算框架。 MapReduce算法的核心思想是“分而治之”,把對大規模數據集的操作,分發給一個主節點管理下的各個分節點共同完成,然后通過整合各個節點的中間結果,得到最終結果。MapReduce 框架負責處理并行編程中分布式存儲、工作調度、負載均衡、容錯均衡、容錯處理以及網絡通信等復雜問題,把處理過程高度抽象為兩個函數: map和reduce。map負責把任務分解成多個任務, reduce負責把分解后多任務處理的結果匯總起來[16]。例如,2010 年,Zhao等人針對協同過濾算法的計算復雜性在大規模推薦系統下的局限性,在 Hadoop平臺上實現了基于物品的協同過濾算法。2011年,針對推薦系統無法在每秒內給大量用戶進行推薦的問題, Jiang等人將基于物品的協同過濾推薦算法的3個主要計算階段切分成4個MapReduce階段,切分后各階段可以并行運行在集群的各個節點上。同時他們還提出了一種 Hadoop平臺下的數據分區策略,減少了節點間的通信開銷,提高了推薦系統的推薦效率。

4.2.3 推薦算法并行化

很多大型企業所需的推薦算法要處理的數據量非常龐大,從TB級別到PB級甚至更高,例如騰訊Peacock主題模型分析系統需要進行高達十億文檔、百萬詞匯、百萬主題的主題模型訓練,僅一個百萬詞匯乘以百萬主題的矩陣,其數據存儲量已達3 TB,如果再考慮十億文檔乘以百萬主題的矩陣,其數據量則高達3 PB[17]。面對如此龐大的數據,若采用傳統串行推薦算法,時間開銷太大。當數據量較小時,時間復雜度高的串行算法能有效運作,但數據量極速增加后,這些串行推薦算法的計算性能過低,無法應用于實際的推薦系統中。因此,面向大數據集的推薦系統從設計上就應考慮到算法的分布式并行化技術,使得推薦算法能夠在海量的、分布式、異構數據環境下得以高效實現。

5 開源大數據典型推薦軟件

5.1 Mahout

Mahout是 Apache Software Foundation(ASF)旗下的一個全新的開源項目,其主要目標是提供一些可伸縮的機器學習領域經典算法的實現,供開發人員在 Apache 許可下免費使用,旨在幫助開發人員更加方便、快捷地開發大規模數據上的應用程序。除了常見的分類、聚類等數據挖掘算法外,還包括協同過濾(CF)、維縮減(dimensionality reduction)、主題模型(topic models)等。Mahout集成了基于Java的推薦系統引擎“Taste”,用于生成個性化推薦“Taste”支持基于用戶的、基于物品的以及基于slope-one的推薦系統。在Mahout的推薦類算法中,主要有基于用戶的協同過濾(user-based CF)、基于物品的協同過濾(item-based CF)、交替最小二乘法(ALS)、具有隱含反饋的ALS(ALS on implicit feedback)、加權矩陣分解(weighted MF)、SVD++、并行的隨機梯度下降(parallel SGD)等。

5.2 Spark MLlib

Spark MLlib對常用的機器學習算法進行了實現,包括邏輯回歸、支持向量機、樸素貝葉斯等分類預測算法, K-means聚類算法,各種梯度下降優化算法以及協同過濾推薦算法。MLlib當前支持的是基于矩陣分解的協同過濾方法,其函數優化過程可采用其提供的交替最小二乘法或者梯度下降法來實現,同時支持顯性反饋和隱性反饋信息。

5.3 EasyRec

EasyRec是SourceForge的一個開源項目。它針對個人用戶,提供低門檻的易集成、易擴展、好管理的推薦系統。該開源產品包括了數據錄入、數據管理、推薦挖掘、離線分析等功能。它可以同時給多個不同的網站提供推薦服務。需要推薦服務的網站用戶只需配合著發送一些用戶行為數據到EasyRec, EasyRec則會進行后臺的推薦分析,并將推薦結果以XML或JSON的格式發送回網站。用戶行為數據包括用戶看了哪些商品、買了哪些商品、對哪些商品進行了評分等。 EasyRec為網站用戶提供了訪問EasyRec全部功能的接口,可通過調用這些接口來實現推薦業務。

5.4 Graphlab

Graphlab始于2009年,是由美國卡內基梅隆大學開發的一個項目。它基于C++語言,主要功能是提供一個基于圖的高性能分布式計算框架。GraphLab能夠高效地執行與機器學習相關的數據依賴性強的迭代型算法,為Boosted決策樹、深度學習、文本分析等提供了可擴展的機器學習算法模塊,能對分類和推薦模型中的參數進行自動調優,和SPARK、 Hadoop、 Apache Avro、 OBDCconnectors等進行了集成。由于功能獨特,GraphLab在業界很有名氣。針對大規模的數據集,采用GraphLab來進行隨機游走(random walk)或基于圖的推薦算法非常有效。另外, GraphLab還實現了交替最小二乘法ALS、隨機梯度下降法 SGD、SVD++、 Weighted-ALS、 Sparse-ALS、非負矩陣分解(non-negative matrix factorization)等算法。

5.5 Duine

Duine框架是一套以Java語言編寫的軟件庫,可以幫助開發者建立預測引擎。Duine提供混合算法配置,即算法可根據數據情況,在基于內容的推薦和協同過濾中動態轉換。例如在冷啟動(比如尚無任何評價的時候)條件下,它側重基于內容的分析法,推薦模塊主要通過算法,從用戶資料和商品信息中提取信息、計算預測值,主要包括以下幾種方法:協同過濾法、基于實例的推理(用戶給出相似評分的商品)和GenreLMS(對分類的推理)。 Duine具有一個反饋處理器模塊,它以增強預測為目標,利用程序學習和獲取用戶的顯性和隱性反饋,用算法進行處理后用以更新用戶的資料[18]。

6 大數據推薦系統研究面臨的問題

6.1 特征提取問題

推薦系統的推薦對象種類豐富,例如新聞、博客等文本類對象,視頻、圖片、音樂等多媒體對象以及可以用文本描述的一些實體對象等。如何對這些推薦對象進行特征提取一直是學術界和工業界的熱門研究課題。對于文本類對象,可以借助信息檢索領域己經成熟的文本特征提取技術來提取特征。對于多媒體對象,由于需要結合多媒體內容分析領域的相關技術來提取特征,而多媒體內容分析技術目前在學術界和工業界還有待完善,因此多媒體對象的特征提取是推薦系統目前面臨的一大難題[19]。此外,推薦對象特征的區分度對推薦系統的性能有非常重要的影響。目前還缺乏特別有效的提高特征區分度的方法。

6.2 數據稀疏問題

現有的大多數推薦算法都是基于用戶—物品評分矩陣數據,數據的稀疏性問題主要是指用戶—物品評分矩陣的稀疏性,即用戶與物品的交互行為太少。一個大型網站可能擁有上億數量級的用戶和物品,飆升的用戶評分數據總量在面對增長更快的“用戶—物品評價矩陣”時,仍然只占極少的一部分,推薦系統研究中的經典數據集MovieLens的稀疏度僅4.5%, Netflix百萬大賽中提供的音樂數據集的稀疏度是1.2%。這些都是已經處理過的數據集,實際上真實數據集的稀疏度都遠遠低于1%。例如, Bibsonomy的稀疏度是0.35%,Delicious的稀疏度是0.046%,淘寶網數據的稀疏度甚至僅在0.01%左右[19]。根據經驗,數據集中用戶行為數據越多,推薦算法的精準度越高,性能也越好。若數據集非常稀疏,只包含極少量的用戶行為數據,推薦算法的準確度會大打折扣,極容易導致推薦算法的過擬合,影響算法的性能。

6.3 冷啟動問題

冷啟動問題是推薦系統所面臨的最大問題之一。冷啟動問題總的來說可以分為3類:系統冷啟動問題、新用戶問題和新物品問題。系統冷啟動問題指的是由于數據過于稀疏,“用戶—物品評分矩陣”的密度太低,導致推薦系統得到的推薦結果準確性極低。新物品問題是由于新的物品缺少用戶對該物品的評分,這類物品很難通過推薦系統被推薦給用戶,用戶難以對這些物品評分,從而形成惡性循環,導致一些新物品始終無法有效推薦。新物品問題對不同的推薦系統影響程度不同:對于用戶可以通過多種方式查找物品的網站,新物品問題并沒有太大影響,如電影推薦系統等,因為用戶可以有多種途徑找到電影觀看并評分;而對于一些推薦是主要獲取物品途徑的網站,新物品問題會對推薦系統造成嚴重影響。通常解決這個問題的途徑是激勵或者雇傭少量用戶對每一個新物品進行評分。新用戶問題是目前對現實推薦系統挑戰最大的冷啟動問題:當一個新的用戶使用推薦系統時,他沒有對任何項目進行評分,因此系統無法對其進行個性化推薦;即使當新用戶開始對少量項目進行評分時,由于評分太少,系統依然無法給出精確的推薦,這甚至會導致用戶因為推薦體驗不佳而停止使用推薦系統[20]。當前解決新用戶問題主要是通過結合基于內容和基于用戶特征的方法,掌握用戶的統計特征和興趣特征,在用戶只有少量評分甚至沒有評分時做出比較準確的推薦。

6.4 可擴展性問題

擴展性問題是推薦系統面臨的又一難題,特別是隨著大數據時代的到來,用戶數與物品數飛漲,傳統推薦系統會隨著問題規模的擴大而效率大大降低。花費大量時間才能得到推薦結果是難以接受的,特別是對于一些實時性要求較高的在線推薦系統。使用基于內存的推薦系統,用戶或者物品間的相似度計算會耗費大量時間;使用基于模型的推薦系統,利用機器學習算法學習模型參數同樣會耗費大量時間,這里學習時間主要用在求解全局最優問題上。解決擴展性問題,工業界一般采取的方法是線下學習、線上使用:先通過離線數據事先算好用戶/物品間相似度或者模型參數,然后線上只需要利用這些算好的數值進行推薦[20]。但是這并沒有從根本上提高推薦算法的效率, Sarwar等人2002年提出了一種增量SVD協同過濾算法,當評分矩陣中增加若干新分值時,系統不用對整個矩陣重新計算,而只需要進行少量計算對原模型進行調整,因此大大加快了模型的更新速度。同時,若干文獻提出使用聚類的方式解決擴展性問題,通過聚類能有效減少用戶和物品規模,但是這樣會一定程度地降低推薦精度。在求解模型全局優化問題上,學者也做了大量工作,希望能加快收斂速度,例如人們提出了并行的隨機梯度下降法和交替最小二乘法等。

7 總結與展望

隨著互聯網的飛速發展,人們對于個性化的信息需求已經非常急切,推薦系統的出現可以很好地解決用戶在使用互聯網和電子商務網站時的“信息爆炸”問題。本文主要針對互聯網大數據時代推薦系統的產生和發展現狀、領域需求和系統架構、用戶建模和推薦引擎、大數據時代推薦系統的特點挑戰和關鍵技術、開源的大數據推薦軟件、大數據推薦系統研究面臨的問題等進行了介紹。

大數據推薦系統的未來研究方向主要在以下幾個方面。

從系統推薦到社會推薦,即在推薦的過程中,除了考慮用戶的歷史行為信息,還需要利用用戶的社會網絡信息來增強推薦的效果;同時,在進行社會網絡上的人與人之間的推薦時,也要綜合利用用戶的歷史行為信息,做到社會網絡和歷史行為信息的互相利用和推薦效果的相互增強。

從以精確性為中心到綜合考慮精確性、多樣性和新穎性的評估體系。

從單一數據源到交叉融合數據平臺,比如依據用戶的跨網站行為數據,解決某一網站上的冷啟動推薦問題。

從高速服務器到并行處理到云計算。

從靜態算法到動態增量算法、自適應算法,從脆弱算法到頑健算法。

關鍵字:推薦系統個性化推薦

本文摘自:199IT網

x 信息過載的大數據時代,大數據推薦系統如何搭建,趨勢何方 掃一掃
分享本文到朋友圈
當前位置:大數據業界動態 → 正文

信息過載的大數據時代,大數據推薦系統如何搭建,趨勢何方

責任編輯:editor004 |來源:企業網D1Net  2016-01-20 10:39:21 本文摘自:199IT網

05

同比增長隨著大數據時代的來臨,網絡中的信息量呈現指數式增長,隨之帶來了信息過載問題。推薦系統是解決信息過載最有效的方式之一,大數據推薦系統已經逐漸成為信息領域的研究熱點。介紹了推薦系統的產生及其在大數據時代的發展現狀、推薦系統的領域需求和系統架構、大數據環境下推薦系統的挑戰及其關鍵技術、開源的大數據推薦軟件、大數據推薦系統研究面臨的問題,最后探討了大數據推薦系統的未來發展趨勢。

1 推薦系統與網絡大數據

隨著科技與信息技術的迅猛發展,社會進入了一個全新的高度信息化的時代,互聯網無處不在,影響了人類生活的方方面面,并徹底改變了人們的生活方式。尤其是進入Web 2.0時代以來,隨著社會化網絡媒體的異軍突起,互聯網用戶既是網絡信息的消費者,也是網絡內容的生產者,互聯網中的信息量呈指數級增長。由于用戶的辨別能力有限,在面對龐大且復雜的互聯網信息時往往感到無從下手,使得在互聯網中找尋有用信息的成本巨大,產生了所謂的“信息過載”問題。

搜索引擎和推薦系統的產生為解決“信息過載”問題提供了非常重要的技術手段。對于搜索引擎來說,用戶在搜索互聯網中的信息時,需要在搜索引擎中輸入“查詢關鍵詞”,搜索引擎根據用戶的輸入,在系統后臺進行信息匹配,將與用戶查詢相關的信息展示給用戶。但是,如果用戶無法想到準確描述自己需求的關鍵詞,此時搜索引擎就無能為力了。和搜索引擎不同,推薦系統不需要用戶提供明確的需求,而是通過分析用戶的歷史行為來對用戶的興趣進行建模,從而主動給用戶推薦可能滿足他們興趣和需求的信息。因此,搜索引擎和推薦系統對用戶來說是兩個互補的工具,前者是主動的,而后者是被動的。

近幾年,電子商務蓬勃發展,推薦系統在互聯網中的優勢地位也越來越明顯。在國際方面,比較著名的電子商務網站有Amazon和eBay,其中Amazon平臺中采用的推薦算法被認為是非常成功的。在國內,比較大型的電子商務平臺網站有淘寶網(包括天貓商城)、京東商城、當當網、蘇寧易購等。在這些電子商務平臺中,網站提供的商品數量不計其數,網站中的用戶規模也非常巨大。據不完全統計,天貓商城中的商品數量已經超過了4 000萬。在如此龐大的電商網站中,用戶根據自己的購買意圖輸入關鍵字查詢后,會得到很多相似的結果,用戶在這些結果中也很難區分異同,用戶也難于選擇合適的物品。于是,推薦系統作為能夠根據用戶興趣為用戶推薦一些用戶感興趣的商品,從而為用戶在購物的選擇中提供建議的需求非常明顯。目前比較成功的電子商務網站中,都不同程度地利用推薦系統在用戶購物的同時,為用戶推薦一些商品,從而提高網站的銷售額。

另一方面,智能手機的發展推動了移動互聯網的發展。在用戶使用移動互聯網的過程中,其所處的地理位置等信息可以非常準確地被獲取。基于此,國內外出現了大量的基于用戶位置信息的網站。國外比較著名的有Meetup和Flickr。國內著名的有豆瓣網和大眾點評網。例如,在大眾點評這種基于位置服務的網站中,用戶可以根據自己的當前位置搜索餐館、酒店、影院、旅游景點等信息服務。同時,可以對當前位置下的各類信息進行點評,為自己在現實世界中的體驗打分,分享自己的經驗與感受。當用戶使用這類基于位置的網站服務時,同樣會遭遇“信息過載”問題。推薦系統可以根據用戶的位置信息為用戶推薦當前位置下用戶感興趣的內容,為用戶提供符合其真正需要的內容,提升用戶對網站的滿意度。

隨著社交網絡的興起,用戶在互聯網中的行為不再限于獲取信息,更多的是與網絡上的其他用戶進行互動。國外著名的社交網絡有Facebook、 LinkedIn、 Twitter等,國內的社交網絡有新浪微博、人人網、騰訊微博等。在社交網站中,用戶不再是單個的個體,而是與網絡中的很多人具有了錯綜復雜的關系。社交網絡中最重要的資源就是用戶與用戶之間的這種關系數據。在社交網絡中,用戶間的關系是不同的,建立關系的因素可能是現實世界中的親人、同學、同事、朋友關系,也可能是網絡中的虛擬朋友,比如都是有著共同愛好的社交網絡成員。在社交網絡中,用戶與用戶之間的聯系反映了用戶之間的信任關系,用戶不單單是一個個體,用戶在社交網絡中的行為或多或少地會受到這些用戶關系的影響。因此,推薦系統在這類社交網站中的研究與應用,應該考慮用戶社交關系的影響。

2 推薦系統的產生與發展

“推薦系統”這個概念是1995年在美國人工智能協會(AAAI)上提出的。當時CMU大學的教授Robert Armstrong提出了這個概念,并推出了推薦系統的原型系統——Web Watcher。在同一個會議上,美國斯坦福大學的Marko Balabanovic等人推出了個性化推薦系統LIRA1。隨后推薦系統的研究工作開始慢慢壯大。1996年, Yahoo網站推出了個性化入口MyYahoo,可以看作第一個正式商用的推薦系統。21世紀以來,推薦系統的研究與應用隨著電子商務的快速發展而異軍突起,各大電子商務網站都部署了推薦系統,其中Amazon網站的推薦系統比較著名。有報告稱, Amazon網站中35%的營業額來自于自身的推薦系統。2006年,美國的DVD租賃公司Netflix在網上公開設立了一個推薦算法競賽——Netflix Prize。 Netflix公開了真實網站中的一部分數據,包含用戶對電影的評分[2]。Netflix競賽有效地推動了學術界和產業界對推薦算法的研究,期間提出了很多有效的算法。近幾年,隨著社會化網絡的發展,推薦系統在工業界廣泛應用并且取得了顯著進步。比較著名的推薦系統應用有:Amazon和淘寶網的電子商務推薦系統、Netflix和MovieLens的電影推薦系統、Youtube的視頻推薦系統、豆瓣和Last.fm的音樂推薦系統、Google的新聞推薦系統以及Facebook和Twitter的好友推薦系統。

推薦系統誕生后,學術界對其關注也越來越多。從1999年開始,美國計算機學會每年召開電子商務研討會(ACM Conference on Electronic Commerce,ACM EC),越來越多的與推薦系統相關的論文發表在ACM EC上。ACM信息檢索專業組(ACM Special Interest Group of Information Retrieval, ACM SIGIR)在2001年開始把推薦系統作為該會議的一個獨立研究主題。同年召開的人工智能聯合大會(The 17th International Joint Conference on Artificial Intelligence)也將推薦系統作為一個單獨的主題。最近的10年間,學術界對推薦系統越來越重視。目前為止,數據庫、數據挖掘、人工智能、機器學習方面的重要國際會議(如SIGMOD、VLDB、ICDE、KDD、AAAI、SIGIR、ICDM、WWW、ICML等)都有大量與推薦系統相關的研究成果發表。同時,第一個以推薦系統命名的國際會議ACM Recommender Systems Conference(ACM RecSys)于2007年首次舉辦。在近幾年的數據挖掘及知識發現國際會議(KDD)舉辦的KDD CUP競賽中,連續兩年的競賽主題都是推薦系統。在KDD CUP 2011年的競賽中,兩個競賽題目分別為“音樂評分預測”和“識別音樂是否被用戶評分”。在KDD CUP 2012年的競賽中,兩個競賽題目分別為“騰訊微博中的好友推薦”和“計算廣告中的點擊率預測”。

3 推薦系統的領域需求和系統架構

如上所述,推薦系統在很多領域得到了廣泛的應用,如新聞推薦、微博推薦、圖書推薦、電影推薦、產品推薦、音樂推薦、餐館推薦、視頻推薦等。不同領域的推薦系統具有不同的數據稀疏性,對推薦系統的可擴展性以及推薦結果的相關性、流行性、新鮮性、多樣性和新穎性具有不同的需求。不同領域推薦系統的需求對比見表1。

盡管需求不盡相同,一個完整的推薦系統通常都包括數據建模、用戶建模、推薦引擎和用戶接口4個部分,如圖1所示。數據建模模塊負責對擬推薦的物品數據進行準備,將其表示成有利于分析的數據形式,確定要推薦給用戶的候選物品,并對物品進行分類、聚類等預處理。用戶建模模塊負責對用戶的行為信息進行分析,從而獲得用戶的潛在喜好。用戶的行為信息包括問答、評分、購買、下載、瀏覽、收藏、停留時間等。推薦引擎模塊利用后臺的推薦算法,實時地從候選物品集合中篩選出用戶感興趣的物品,排序后以列表的形式向用戶推薦。推薦引擎是推薦系統的核心部分,也是最耗系統資源和時間的部分。用戶接口模塊承擔展示推薦結果、收集用戶反饋等功能。用戶接口除了應具有布局合理、界面美觀、使用方便等基本要求外,還應有助于用戶主動提供反饋。主要有兩種類型的接口:Web端(Web-based)和移動端(mobile-based)。受篇幅限制,僅對用戶建模和推薦引擎這兩個重要模塊進行詳細介紹。

3.1 用戶建模

用戶模型反映用戶的興趣偏好。用戶興趣的反饋可分為顯性反饋和隱性反饋。顯性反饋包含兩種方式:用戶定制和用戶評分。用戶定制是指用戶對系統所列問題的回答,如年齡、性別、職業等。評分又分為兩級評分和多級評分。例如,在YahooNews中采用兩級評分:喜歡(more like this)和不喜歡(less like this)。多級評分可以更詳細地描述對某個產品的喜歡程度,如GroupLens中用戶對新聞的喜好程度可評價為1~5分。 News Dude支持用戶的4級反饋:感興趣、不感興趣、已知道、想了解更多,然后進行歸一化處理。

很多時候用戶不能夠準確地提供個人偏好或者不愿意顯性提供個人偏好,更不愿意經常維護個人的偏好。所以,隱性反饋往往能夠正確地體現用戶的偏好以及偏好的變化。常用的隱性反饋信息有:是否點擊、停留時間、點擊時間、點擊地點、是否加入收藏、評論內容(可推測用戶的心情)、用戶的搜索內容、社交網絡、流行趨勢、點擊順序等。在協同過濾推薦方法中,常常把用戶的隱性反饋轉化為用戶對產品的評分。例如, Google News中用戶閱讀過的新聞記為喜歡,評分為1;沒有閱讀過的評分為0。Daily Learner系統中用戶點擊了新聞標題評分為0.8分,閱讀完全文則評分上升到1分;若用戶跳過了系統推薦的新聞,則從系統預測評分中減去0.2分作為最終評分。

用戶的興趣可分為長期興趣和短期興趣。長期興趣反映用戶的真實興趣;短期興趣常與熱點話題相關聯且經常改變,從最近的歷史行為中學習到的短期興趣模型可快速反映用戶興趣的變化。常用的模型有向量空間模型、語義網絡模型、基于分類器的模型等。由于用戶的興趣常受物品本身周期性、熱點事件、突發事件的影響,變化性很大。所以,需要經常更新用戶模型。

3.2 推薦引擎

推薦引擎的基本推薦方法可分為基于內容的推薦和基于協同過濾的推薦。

基于內容的推薦方法的基本原理是,根據用戶以往喜歡的物品,選擇其他類似的物品作為推薦結果[2]。例如,現在有一部新電影與用戶過去看過的某部電影有相同演員或者題材類似,則用戶可能就喜歡這部新電影。通常使用用戶模型的向量特征來描述用戶的興趣愛好,同樣對于每個物品進行特征提取,作為物品模型的內容特征。然后計算用戶模型的向量特征和候選物品模型的向量特征兩者之間的匹配度,匹配度較高的候選物品就可作為推薦結果推送給目標用戶。

協同過濾技術是由David Goldberg在1992年提出的,是目前個性化推薦系統中應用最為成功和廣泛的技術。國外著名的商業網站Amazon,國內比較著名的豆瓣網、蝦米網等網站,都采用了協同過濾的方法。其本質是基于關聯分析的技術,即利用用戶所在群體的共同喜好來向用戶進行推薦。協同過濾利用了用戶的歷史行為(偏好、習慣等)將用戶聚類成簇,這種推薦通過計算相似用戶,假設被其他相似用戶喜好的物品當前用戶也感興趣。協同過濾的推薦方法通常包括兩個步驟:根據用戶行為數據找到和目標用戶興趣相似的用戶集合(用戶所在的群體或簇);找到這個集合中用戶喜歡的且目標用戶沒有購買過的物品推薦給目標用戶。

在實際使用中,協同過濾技術面臨兩大制約:一是數據稀疏問題,二是冷啟動問題。協同過濾需要利用用戶和用戶或者物品與物品之間的關聯性進行推薦。最流行的基于內存的協同過濾方法是基于鄰居關系的方法。該方法首先找出與指定用戶評價歷史相近的該用戶的鄰居,根據這些鄰居的行為來預測結果或者找出與查詢物品類似的物品。這樣做的前提假設是,如果兩個用戶在一組物品上有相似的評價,那么他們對其他的物品也將會有相似的評價;或者如果兩物品在一組用戶上有相似的評價,那么他們對于其他的用戶也將會有相似的評價。

協同過濾算法的關鍵是找尋用戶(物品)的最近鄰居。當數據稀疏時,用戶購買過的物品很難重疊,協同推薦的效果就不好。改進辦法之一是,除了直接鄰居之外,間接鄰居的行為也可以對當前用戶的決策行為構成影響。另外一些解決稀疏問題的方法是可以添加一些缺省值,人為地將數據變得稠密一些,或者采用迭代補全的方法,先補充部分數值,在此基礎上再進一步補充其他數值。此外,還有利用遷移學習的方法來彌補數據稀疏的問題。但這些方法只能在某種程度上部分解決數據稀疏的問題,并不能完全克服。在真實應用中,由于數據規模很大,數據稀疏的問題更加突出。數據稀疏性使協同過濾方法的有效性受到制約。甄別出與數據稀疏程度相匹配的算法,以便能根據具體應用情況做出正確選擇,是非常有價值的研究課題。常用的協同過濾方法有兩類:基于內存的方法和基于模型的方法。前者主要是內存算法,通過用戶與物品之間的關系來導出結果;后者需要找到一個合適的參數化的模型,然后通過這個模型來導出結果。

基于用戶的協同過濾[4]鑒別出與查詢用戶相似的用戶,然后將這些用戶對物品評分的均值作為該用戶評分結果的估計值。與此類似,基于物品的協同過濾鑒別出與查詢物品類似的物品,然后將這些物品的評分均值作為該物品預測結果的估計值。基于鄰居的方法隨著計算加權平均值方法的不同而不同。常用的計算加權平均值的算法有皮爾遜系數、矢量余弦、MSD。

基于模型的方法通過適合訓練集的參數化模型來預測結果。它包括基于聚類的CF[5~7]、貝葉斯分類器[8,9]、基于回歸的方法[10]。基于聚類方法的基本思想是將相似的用戶(或物品)組成聚類,這種技術有助于解決數據稀疏性和計算復雜性問題。貝葉斯的基本思想是給定用戶A其他的評分和其他用戶評分情況下,計算每個可能評分值(比如電影推薦中的1~5分)的條件概率,然后選擇一個最大概率值的評分作為預測值。基于回歸方法的基本思想是先利用線性回歸模型學習物品之間評分的關系,然后根據這些關系預測用戶對物品的評分。Slop-one算法[13]在評價矩陣上使用了線性模型,使之能夠快速計算出具有相對較好精確度的結果。

最近一類成功的基于模型的方法是基于低秩矩陣分解的方法。例如,SVD[11]和SVD++[12] 將評價矩陣分解為3個低秩的矩陣,這3個矩陣的乘積能對原始矩陣進行某種程度的復原,從而可以評估出缺失值。另一種方法是非負矩陣分解[13],其不同之處在于,矩陣分解的結果不得出現負值。基于低秩矩陣分解的方法從評分矩陣中抽取一組潛在的(隱藏的)因子,并通過這些因子向量描述用戶和物品。在電影領域,這些自動識別的因子可能對應一部電影的常見標簽,比如風格或者類型(戲劇片或者動作片),也可能是無法解釋的。

矩陣分解能夠對兩類變量進行交互關系的預測。 Tensor分解模型則能夠將這種不同類變量的交互預測擴展到更高的維度。然而,如果將因子分解模型應用到一個新的任務,針對新問題往往需要在原有因子分解基礎上推導演化,實現新的模型和學習算法。例如SVD++、 STE、 FPMC、timeSVD++、 BPTF等模型,都是針對特定問題在原有因子分解模型基礎上做的改進。因此,普通的因子分解模型具有較差的泛化能力。在模型優化學習算法方面,雖然對基本矩陣分解模型的學習已經有很多算法,如(隨機)梯度下降、交替最小二乘法、變分貝葉斯和MCMC(Markov chain Monto Carlo),但是對于更多的復雜分解模型而言,最多且最常用的方法是梯度下降算法。

因子分解機(factorization machine)是Steffen Rendle于2010年提出的一個通用的模型[3]。憑借該模型,Rendle在KDD Cup 2012中分別取得Track1第2名和Track2第3名的成績。與原有的因子分解模型相比,該模型將特征工程的一般性與分解模型的優越性融合。它能夠通過特征工程來模擬絕大多數的因子分解模型。LibFM是因子分解機的開源實現,簡單易用,不需要太多專業知識,其中包括3類優化學習算法:隨機梯度下降、交替最小二乘法和MCMC。

這里提到的Tensor分解模型和因子分解機都屬于上下文感知推薦算法的范疇。上下文感知的推薦算法將二維協同擴展到多維協同。從學科淵源來看,上下文感知推薦系統既是一種推薦系統,也是一種上下文感知應用系統。Adomavicius和Tuzhilin等人較早指出,把上下文信息融入推薦系統將有利于提高推薦精確度,并提出被廣泛引用的“上下文感知推薦系統(context-aware recommender systems, CARS)”的概念。他們將傳統的“用戶—項目”二維評分效用模型擴展為包含多種上下文信息的多維評分效用模型。Sun等人首先將HOSVD的方法用于網頁搜索,提出了CubeSVD算法[14],算法將用戶的位置信息作為上下文信息,用于搜索引擎的結果排序,取得了比較好的結果。Renle等人提出RTF算法[15],與HOSVD不同, RTF算法根據用戶的排序進行優化,可以獲得比較好的準確度。

基于內容的推薦方法和基于協同過濾的推薦方法各有其優缺點。現有的系統大部分是一種混合系統,它結合不同算法和模型的優點,克服它們的缺點,從而得到了較好的推薦準確度。

4 大數據環境下的推薦系統

4.1 特點與挑戰

雖然推薦系統己經被成功運用于很多大型系統及網站,但是在當前大數據的時代背景下,推薦系統的應用場景越來越多樣,推薦系統不僅面臨數據稀疏、冷啟動、興趣偏見等傳統難題,還面臨由大數據引發的更多、更復雜的實際問題。例如,用戶數目越來越多,海量用戶同時訪問推薦系統所造成的性能壓力,使傳統的基于單節點 LVS 架構的推薦系統不再適用。同時Web 服務器處理系統請求在大數據集下變得越來越多, Web服務器響應速度緩慢制約了當前推薦系統為大數據集提供推薦。另外,基于實時模式的推薦在大數據集下面臨著嚴峻考驗,用戶難以忍受超過秒級的推薦結果返回時間。傳統推薦系統的單一數據庫存儲技術在大數據集下變得不再適用,急需一種對外提供統一接口、對內采用多種混合模式存儲的存儲架構來滿足大數據集下各種數據文件的存儲。并且,傳統推薦系統在推薦算法上采取的是單機節點的計算方式,不能滿足大數據集下海量用戶產生的大數據集上的計算需求[16]。大數據本身具有的復雜性、不確定性和涌現性也給推薦系統帶來諸多新的挑戰,傳統推薦系統的時間效率、空間效率和推薦準確度都遇到嚴重的瓶頸。

4.2 關鍵技術

4.2.1 采用分布式文件系統管理數據

傳統的推薦系統技術主要處理小文件存儲和少量數據計算,大多是面向服務器的架構,中心服務器需要收集用戶的瀏覽記錄、購買記錄、評分記錄等大量的交互信息來為單個用戶定制個性化推薦。當數據規模過大,數據無法全部載入服務器內存時,就算采用外存置換算法和多線程技術,依然會出現I/O上的性能瓶頸,致使任務執行效率過低,產生推薦結果的時間過長。對于面向海量用戶和海量數據的推薦系統,基于集中式的中心服務器的推薦系統在時間和空間復雜性上無法滿足大數據背景下推薦系統快速變化的需求[16]。

大數據推薦系統采用基于集群技術的分布式文件系統管理數據。建立一種高并發、可擴展、能處理海量數據的大數據推薦系統架構是非常關鍵的,它能為大數據集的處理提供強有力的支持。 Hadoop 的分布式文件系統(Hadoop distributed file system, HDFS)架構是其中的典型。與傳統的文件系統不同,數據文件并非存儲在本地單一節點上,而是通過網絡存儲在多臺節點上。并且文件的位置索引管理一般都由一臺或幾臺中心節點負責[16]。客戶端從集群中讀寫數據時,首先通過中心節點獲取文件的位置,然后與集群中的節點通信,客戶端通過網絡從節點讀取數據到本地或把數據從本地寫入節點。在這個過程中由 HDFS 來管理數據冗余存儲、大文件的切分、中間網絡通信、數據出錯恢復等,客戶端根據 HDFS 提供的接口進行調用即可,非常方便。

4.2.2 采用基于集群技術的分布式計算框架

集群上實現分布式計算的框架很多,Hadoop中的MapReduce 作為推薦算法并行化的依托平臺,既是一種分布式的計算框架,也是一種新型的分布式并行計算編程模型,應用于大規模數據的并行處理,是一種常見的開源計算框架。 MapReduce算法的核心思想是“分而治之”,把對大規模數據集的操作,分發給一個主節點管理下的各個分節點共同完成,然后通過整合各個節點的中間結果,得到最終結果。MapReduce 框架負責處理并行編程中分布式存儲、工作調度、負載均衡、容錯均衡、容錯處理以及網絡通信等復雜問題,把處理過程高度抽象為兩個函數: map和reduce。map負責把任務分解成多個任務, reduce負責把分解后多任務處理的結果匯總起來[16]。例如,2010 年,Zhao等人針對協同過濾算法的計算復雜性在大規模推薦系統下的局限性,在 Hadoop平臺上實現了基于物品的協同過濾算法。2011年,針對推薦系統無法在每秒內給大量用戶進行推薦的問題, Jiang等人將基于物品的協同過濾推薦算法的3個主要計算階段切分成4個MapReduce階段,切分后各階段可以并行運行在集群的各個節點上。同時他們還提出了一種 Hadoop平臺下的數據分區策略,減少了節點間的通信開銷,提高了推薦系統的推薦效率。

4.2.3 推薦算法并行化

很多大型企業所需的推薦算法要處理的數據量非常龐大,從TB級別到PB級甚至更高,例如騰訊Peacock主題模型分析系統需要進行高達十億文檔、百萬詞匯、百萬主題的主題模型訓練,僅一個百萬詞匯乘以百萬主題的矩陣,其數據存儲量已達3 TB,如果再考慮十億文檔乘以百萬主題的矩陣,其數據量則高達3 PB[17]。面對如此龐大的數據,若采用傳統串行推薦算法,時間開銷太大。當數據量較小時,時間復雜度高的串行算法能有效運作,但數據量極速增加后,這些串行推薦算法的計算性能過低,無法應用于實際的推薦系統中。因此,面向大數據集的推薦系統從設計上就應考慮到算法的分布式并行化技術,使得推薦算法能夠在海量的、分布式、異構數據環境下得以高效實現。

5 開源大數據典型推薦軟件

5.1 Mahout

Mahout是 Apache Software Foundation(ASF)旗下的一個全新的開源項目,其主要目標是提供一些可伸縮的機器學習領域經典算法的實現,供開發人員在 Apache 許可下免費使用,旨在幫助開發人員更加方便、快捷地開發大規模數據上的應用程序。除了常見的分類、聚類等數據挖掘算法外,還包括協同過濾(CF)、維縮減(dimensionality reduction)、主題模型(topic models)等。Mahout集成了基于Java的推薦系統引擎“Taste”,用于生成個性化推薦“Taste”支持基于用戶的、基于物品的以及基于slope-one的推薦系統。在Mahout的推薦類算法中,主要有基于用戶的協同過濾(user-based CF)、基于物品的協同過濾(item-based CF)、交替最小二乘法(ALS)、具有隱含反饋的ALS(ALS on implicit feedback)、加權矩陣分解(weighted MF)、SVD++、并行的隨機梯度下降(parallel SGD)等。

5.2 Spark MLlib

Spark MLlib對常用的機器學習算法進行了實現,包括邏輯回歸、支持向量機、樸素貝葉斯等分類預測算法, K-means聚類算法,各種梯度下降優化算法以及協同過濾推薦算法。MLlib當前支持的是基于矩陣分解的協同過濾方法,其函數優化過程可采用其提供的交替最小二乘法或者梯度下降法來實現,同時支持顯性反饋和隱性反饋信息。

5.3 EasyRec

EasyRec是SourceForge的一個開源項目。它針對個人用戶,提供低門檻的易集成、易擴展、好管理的推薦系統。該開源產品包括了數據錄入、數據管理、推薦挖掘、離線分析等功能。它可以同時給多個不同的網站提供推薦服務。需要推薦服務的網站用戶只需配合著發送一些用戶行為數據到EasyRec, EasyRec則會進行后臺的推薦分析,并將推薦結果以XML或JSON的格式發送回網站。用戶行為數據包括用戶看了哪些商品、買了哪些商品、對哪些商品進行了評分等。 EasyRec為網站用戶提供了訪問EasyRec全部功能的接口,可通過調用這些接口來實現推薦業務。

5.4 Graphlab

Graphlab始于2009年,是由美國卡內基梅隆大學開發的一個項目。它基于C++語言,主要功能是提供一個基于圖的高性能分布式計算框架。GraphLab能夠高效地執行與機器學習相關的數據依賴性強的迭代型算法,為Boosted決策樹、深度學習、文本分析等提供了可擴展的機器學習算法模塊,能對分類和推薦模型中的參數進行自動調優,和SPARK、 Hadoop、 Apache Avro、 OBDCconnectors等進行了集成。由于功能獨特,GraphLab在業界很有名氣。針對大規模的數據集,采用GraphLab來進行隨機游走(random walk)或基于圖的推薦算法非常有效。另外, GraphLab還實現了交替最小二乘法ALS、隨機梯度下降法 SGD、SVD++、 Weighted-ALS、 Sparse-ALS、非負矩陣分解(non-negative matrix factorization)等算法。

5.5 Duine

Duine框架是一套以Java語言編寫的軟件庫,可以幫助開發者建立預測引擎。Duine提供混合算法配置,即算法可根據數據情況,在基于內容的推薦和協同過濾中動態轉換。例如在冷啟動(比如尚無任何評價的時候)條件下,它側重基于內容的分析法,推薦模塊主要通過算法,從用戶資料和商品信息中提取信息、計算預測值,主要包括以下幾種方法:協同過濾法、基于實例的推理(用戶給出相似評分的商品)和GenreLMS(對分類的推理)。 Duine具有一個反饋處理器模塊,它以增強預測為目標,利用程序學習和獲取用戶的顯性和隱性反饋,用算法進行處理后用以更新用戶的資料[18]。

6 大數據推薦系統研究面臨的問題

6.1 特征提取問題

推薦系統的推薦對象種類豐富,例如新聞、博客等文本類對象,視頻、圖片、音樂等多媒體對象以及可以用文本描述的一些實體對象等。如何對這些推薦對象進行特征提取一直是學術界和工業界的熱門研究課題。對于文本類對象,可以借助信息檢索領域己經成熟的文本特征提取技術來提取特征。對于多媒體對象,由于需要結合多媒體內容分析領域的相關技術來提取特征,而多媒體內容分析技術目前在學術界和工業界還有待完善,因此多媒體對象的特征提取是推薦系統目前面臨的一大難題[19]。此外,推薦對象特征的區分度對推薦系統的性能有非常重要的影響。目前還缺乏特別有效的提高特征區分度的方法。

6.2 數據稀疏問題

現有的大多數推薦算法都是基于用戶—物品評分矩陣數據,數據的稀疏性問題主要是指用戶—物品評分矩陣的稀疏性,即用戶與物品的交互行為太少。一個大型網站可能擁有上億數量級的用戶和物品,飆升的用戶評分數據總量在面對增長更快的“用戶—物品評價矩陣”時,仍然只占極少的一部分,推薦系統研究中的經典數據集MovieLens的稀疏度僅4.5%, Netflix百萬大賽中提供的音樂數據集的稀疏度是1.2%。這些都是已經處理過的數據集,實際上真實數據集的稀疏度都遠遠低于1%。例如, Bibsonomy的稀疏度是0.35%,Delicious的稀疏度是0.046%,淘寶網數據的稀疏度甚至僅在0.01%左右[19]。根據經驗,數據集中用戶行為數據越多,推薦算法的精準度越高,性能也越好。若數據集非常稀疏,只包含極少量的用戶行為數據,推薦算法的準確度會大打折扣,極容易導致推薦算法的過擬合,影響算法的性能。

6.3 冷啟動問題

冷啟動問題是推薦系統所面臨的最大問題之一。冷啟動問題總的來說可以分為3類:系統冷啟動問題、新用戶問題和新物品問題。系統冷啟動問題指的是由于數據過于稀疏,“用戶—物品評分矩陣”的密度太低,導致推薦系統得到的推薦結果準確性極低。新物品問題是由于新的物品缺少用戶對該物品的評分,這類物品很難通過推薦系統被推薦給用戶,用戶難以對這些物品評分,從而形成惡性循環,導致一些新物品始終無法有效推薦。新物品問題對不同的推薦系統影響程度不同:對于用戶可以通過多種方式查找物品的網站,新物品問題并沒有太大影響,如電影推薦系統等,因為用戶可以有多種途徑找到電影觀看并評分;而對于一些推薦是主要獲取物品途徑的網站,新物品問題會對推薦系統造成嚴重影響。通常解決這個問題的途徑是激勵或者雇傭少量用戶對每一個新物品進行評分。新用戶問題是目前對現實推薦系統挑戰最大的冷啟動問題:當一個新的用戶使用推薦系統時,他沒有對任何項目進行評分,因此系統無法對其進行個性化推薦;即使當新用戶開始對少量項目進行評分時,由于評分太少,系統依然無法給出精確的推薦,這甚至會導致用戶因為推薦體驗不佳而停止使用推薦系統[20]。當前解決新用戶問題主要是通過結合基于內容和基于用戶特征的方法,掌握用戶的統計特征和興趣特征,在用戶只有少量評分甚至沒有評分時做出比較準確的推薦。

6.4 可擴展性問題

擴展性問題是推薦系統面臨的又一難題,特別是隨著大數據時代的到來,用戶數與物品數飛漲,傳統推薦系統會隨著問題規模的擴大而效率大大降低。花費大量時間才能得到推薦結果是難以接受的,特別是對于一些實時性要求較高的在線推薦系統。使用基于內存的推薦系統,用戶或者物品間的相似度計算會耗費大量時間;使用基于模型的推薦系統,利用機器學習算法學習模型參數同樣會耗費大量時間,這里學習時間主要用在求解全局最優問題上。解決擴展性問題,工業界一般采取的方法是線下學習、線上使用:先通過離線數據事先算好用戶/物品間相似度或者模型參數,然后線上只需要利用這些算好的數值進行推薦[20]。但是這并沒有從根本上提高推薦算法的效率, Sarwar等人2002年提出了一種增量SVD協同過濾算法,當評分矩陣中增加若干新分值時,系統不用對整個矩陣重新計算,而只需要進行少量計算對原模型進行調整,因此大大加快了模型的更新速度。同時,若干文獻提出使用聚類的方式解決擴展性問題,通過聚類能有效減少用戶和物品規模,但是這樣會一定程度地降低推薦精度。在求解模型全局優化問題上,學者也做了大量工作,希望能加快收斂速度,例如人們提出了并行的隨機梯度下降法和交替最小二乘法等。

7 總結與展望

隨著互聯網的飛速發展,人們對于個性化的信息需求已經非常急切,推薦系統的出現可以很好地解決用戶在使用互聯網和電子商務網站時的“信息爆炸”問題。本文主要針對互聯網大數據時代推薦系統的產生和發展現狀、領域需求和系統架構、用戶建模和推薦引擎、大數據時代推薦系統的特點挑戰和關鍵技術、開源的大數據推薦軟件、大數據推薦系統研究面臨的問題等進行了介紹。

大數據推薦系統的未來研究方向主要在以下幾個方面。

從系統推薦到社會推薦,即在推薦的過程中,除了考慮用戶的歷史行為信息,還需要利用用戶的社會網絡信息來增強推薦的效果;同時,在進行社會網絡上的人與人之間的推薦時,也要綜合利用用戶的歷史行為信息,做到社會網絡和歷史行為信息的互相利用和推薦效果的相互增強。

從以精確性為中心到綜合考慮精確性、多樣性和新穎性的評估體系。

從單一數據源到交叉融合數據平臺,比如依據用戶的跨網站行為數據,解決某一網站上的冷啟動推薦問題。

從高速服務器到并行處理到云計算。

從靜態算法到動態增量算法、自適應算法,從脆弱算法到頑健算法。

關鍵字:推薦系統個性化推薦

本文摘自:199IT網

電子周刊
回到頂部

關于我們聯系我們版權聲明隱私條款廣告服務友情鏈接投稿中心招賢納士

企業網版權所有 ©2010-2024 京ICP備09108050號-6 京公網安備 11010502049343號

^
  • <menuitem id="jw4sk"></menuitem>

    1. <form id="jw4sk"><tbody id="jw4sk"><dfn id="jw4sk"></dfn></tbody></form>
      主站蜘蛛池模板: 盖州市| 孝感市| 澄迈县| 抚宁县| 克拉玛依市| 孝义市| 鹤岗市| 上饶县| 桃源县| 方城县| 塔河县| 馆陶县| 惠水县| 连江县| 会宁县| 陇南市| 松阳县| 荔浦县| 屯门区| 浦江县| 惠来县| 东乡族自治县| 阳朔县| 洪雅县| 富宁县| 华阴市| 天柱县| 娄底市| 辉县市| 阳谷县| 德惠市| 湘西| 女性| 云林县| 揭东县| 罗田县| 和林格尔县| 武穴市| 连山| 边坝县| 德庆县|