李文海,許舒人
(1.中國科學(xué)院軟件研究所 軟件工程技術(shù)研究開發(fā)中心,北京100190;2.中國科學(xué)院研究生院,北京100190)
隨著用戶規(guī)模的擴(kuò)大和業(yè)務(wù)的發(fā)展,大型電子商務(wù)系統(tǒng)中的用戶數(shù)和產(chǎn)品種類越來越多,數(shù)據(jù)規(guī)模正爆炸式地增長。然而,能夠有效利用的展示區(qū)域是有限的,大量的信息資源由于成為長尾被淹沒而得不到展示,信息過載問題[1]日益突出。
推薦系統(tǒng)[2]是一種重要的信息過濾機(jī)制,它能有效地解決信息過載問題。通過挖掘用戶和信息資源之間的聯(lián)系規(guī)律,它能幫助用戶從網(wǎng)絡(luò)中的大量信息里找到甚至發(fā)現(xiàn)他們需要的以及可能會感興趣的信息資源。它以主動服務(wù)的方式,通過利用挖掘和分析技術(shù),實(shí)現(xiàn)自動化、智能化和個性化的信息過濾服務(wù),幫助用戶發(fā)現(xiàn)所需。因此,它被廣泛地應(yīng)用于電子商務(wù)和社交網(wǎng)絡(luò)等典型現(xiàn)代互聯(lián)網(wǎng)領(lǐng)域。
電子商務(wù)推薦系統(tǒng)[3]通過模擬智能銷售導(dǎo)購的角色,能夠?yàn)殡娮由虅?wù)網(wǎng)站的用戶提供產(chǎn)品信息和相關(guān)的建議以幫助用戶進(jìn)行購買決策,完成購物過程。它能促進(jìn)一對一的銷售,可以為電子商務(wù)系統(tǒng)提供更加智能化和個性化的購物體驗(yàn),最終提升用戶滿意度。電子商務(wù)的發(fā)展趨勢是針對不同的用戶提供個性化的購物體驗(yàn),通過準(zhǔn)確地預(yù)測用戶的偏好、口味和潛在的需求,以此來提高網(wǎng)站的營業(yè)額,而這個目標(biāo)正是通過推薦系統(tǒng)來實(shí)現(xiàn)的。
對于電子商務(wù)系統(tǒng)來說,推薦系統(tǒng)的作用主要體現(xiàn)在以下幾方面[4]:提升購物體驗(yàn),提高用戶的忠誠度;增強(qiáng)交叉銷售能力,提高整體交易量;挖掘潛在的客戶資源,利用推薦激發(fā)用戶的購買欲望,將用戶由普通的瀏覽者轉(zhuǎn)變?yōu)橄M(fèi)者。因此,可以認(rèn)為電子商務(wù)推薦系統(tǒng)是一種集成了諸多不同種類的發(fā)現(xiàn)新事物的方法、技術(shù)和策略的信息過濾機(jī)制,其核心任務(wù)是通過發(fā)掘用戶和商品之間的聯(lián)系來向用戶提供個性化的產(chǎn)品推薦服務(wù),最終實(shí)現(xiàn)用戶和系統(tǒng)所有者的雙贏。
現(xiàn)代互聯(lián)網(wǎng)應(yīng)用背景下的大型電子商務(wù)推薦系統(tǒng)正面臨著以下幾個方面的挑戰(zhàn)[5,6]:
(1)采用集中式架構(gòu)的推薦系統(tǒng)數(shù)據(jù)處理能力有限。單機(jī)推薦算法存在數(shù)據(jù)處理規(guī)模的限制和處理效率的問題。
(2)大型電子商務(wù)系統(tǒng)中除了用戶和產(chǎn)品數(shù)目龐大之外,用戶和產(chǎn)品的自然屬性也多,要對高維度的用戶和產(chǎn)品建立準(zhǔn)確有效的模型十分困難。
(3)商業(yè)應(yīng)用需求通常復(fù)雜多變,同時對于不同的應(yīng)用場景用戶的關(guān)注點(diǎn)也不同,基于固定的模型和參數(shù)的推薦系統(tǒng)通常缺乏靈活性。
(4)推薦模型通常和數(shù)據(jù)特性以及應(yīng)用場景有很強(qiáng)的相關(guān)性,這決定了推薦系統(tǒng)必須要綜合多種互補(bǔ)性強(qiáng)的推薦技術(shù)。而現(xiàn)有的方案中算法和模型比較單一,難以滿足主流用戶的主流需求的同時兼顧用戶的個性化需求。
基于Hadoop平臺和混合推薦策略,設(shè)計(jì)了一種面向大型電子商務(wù)系統(tǒng)的混合推薦系統(tǒng),運(yùn)用基于MapReduce框架的算法的伸縮性和分布式并行計(jì)算能力,使系統(tǒng)能對大規(guī)模的數(shù)據(jù)進(jìn)行高效的分析;通過結(jié)合不同的推薦引擎來解決冷啟動和數(shù)據(jù)稀疏引起的推薦效果不佳的問題。系統(tǒng)主要解決如下3個方面的問題:
(1)伸縮性?,F(xiàn)代互聯(lián)網(wǎng)應(yīng)用中數(shù)據(jù)規(guī)模已經(jīng)取代了業(yè)務(wù)邏輯的復(fù)雜性而成為主要矛盾,伸縮性是現(xiàn)代互聯(lián)網(wǎng)應(yīng)用的關(guān)鍵需求,針對持續(xù)增長的數(shù)據(jù)實(shí)現(xiàn)伸縮對任何數(shù)據(jù)分析系統(tǒng)都十分重要。采用基于MapReduce框架的算法提高數(shù)據(jù)分析的能力,通過Hadoop平臺實(shí)現(xiàn)橫向擴(kuò)展,能夠針對不同規(guī)模的數(shù)據(jù)實(shí)現(xiàn)理想伸縮。
(2)靈活性。由于商業(yè)應(yīng)用需求復(fù)雜多變,允許用戶通過配置模型參數(shù),以參數(shù)化運(yùn)行的方式,實(shí)現(xiàn)不同的推薦模型以適合不同的應(yīng)用場景。
(3)多樣性。非個性化的推薦能夠很好地反映大眾的流行趨勢,而個性化的推薦能夠更好地滿足用戶的個人興趣和偏好,將兩者進(jìn)行結(jié)合能充分滿足不同群體的多樣化的口味。此外,采用混合推薦策略也能提高推薦結(jié)果的多樣性。
常用的推薦技術(shù)有協(xié)同過濾技術(shù)、關(guān)聯(lián)規(guī)則挖掘和基于知識經(jīng)驗(yàn)的方法等,其優(yōu)缺點(diǎn)綜合比較見表1。因此,采用可以靈活配置管理的混合推薦模型綜合多種不同的推薦技術(shù)以彌補(bǔ)單一推薦技術(shù)的不足,可以滿足靈活性和多樣性的推薦需求,在滿足非個性化推薦需求的同時兼顧個性化推薦需求。
表1 主要推薦技術(shù)的比較
Google發(fā)布的關(guān)于分布式基礎(chǔ)設(shè)施的論文對業(yè)界產(chǎn)生了巨大的影響,其中的MapReduce和GFS等思想為分布式計(jì)算與存儲提供了關(guān)鍵參考,Hadoop是其開源實(shí)現(xiàn)[7]。
Hadoop是一個針對大規(guī)模數(shù)據(jù)處理與分析的用于構(gòu)建分布式系統(tǒng)的基礎(chǔ)框架,它方便易用,用戶可以在不必充分關(guān)注分布式底層細(xì)節(jié)的情況下,方便地開發(fā)分布式應(yīng)用,充分利用集群進(jìn)行協(xié)同計(jì)算與協(xié)同存儲,實(shí)現(xiàn)橫向擴(kuò)展的目標(biāo)[8]。
Hadoop通過采用數(shù)據(jù)分布式存儲、遷移代碼而非遷移數(shù)據(jù)的機(jī)制,在處理大規(guī)模數(shù)據(jù)時避免了耗時的數(shù)據(jù)傳輸問題;利用數(shù)據(jù)適度冗余機(jī)制,允許系統(tǒng)從節(jié)點(diǎn)失效中恢復(fù)?;贖adoop平臺開發(fā)分布式應(yīng)用,用戶不用關(guān)心如何分割數(shù)據(jù)、任務(wù)如何調(diào)度和分配以及如何管理集群的拓?fù)浣Y(jié)構(gòu)和節(jié)點(diǎn)之間的通信這些和分布式系統(tǒng)開發(fā)相關(guān)的復(fù)雜事務(wù),而只需要專注于應(yīng)用邏輯的開發(fā)。
Hadoop平臺具有高可伸縮、低成本、高可靠、方便易用等特點(diǎn)[9],其核心是 HDFS分布式文件系統(tǒng)和 MapReduce框架。前者使得在成本可控的情況下處理海量數(shù)據(jù)成為可能;后者則是一種采用分治策略、專為大規(guī)模分布式并行數(shù)據(jù)處理設(shè)計(jì)的簡化編程模型,它借鑒了函數(shù)式編程的思想,將針對大規(guī)模數(shù)據(jù)的處理任務(wù)統(tǒng)一地抽象為Map(映射)和Reduce(規(guī)約)兩種操作。研究表明,大多數(shù)針對大規(guī)模數(shù)據(jù)的分布式處理任務(wù)都可以通過該模型進(jìn)行表達(dá),它允許編程人員以直接調(diào)用相關(guān)編程接口的方式方便地將自己的程序運(yùn)行于分布式集群系統(tǒng)上。這樣,通過在應(yīng)用程序和平臺之間進(jìn)行職責(zé)的重新劃分,讓平臺框架來處理諸如底層存儲、節(jié)點(diǎn)通信等復(fù)雜的分布式處理細(xì)節(jié),應(yīng)用程序可以專注于業(yè)務(wù)邏輯以面向更加復(fù)雜的業(yè)務(wù)需求。
由于Hadoop集群可以按需橫向動態(tài)擴(kuò)展,利用Hadoop平臺可以突破數(shù)據(jù)規(guī)模給推薦系統(tǒng)帶來的大數(shù)據(jù)分析的瓶頸,滿足高性能、高伸縮性計(jì)算的需求。
本節(jié)將給出支持混合推薦模型的推薦流程和系統(tǒng)架構(gòu)的詳細(xì)設(shè)計(jì)。
系統(tǒng)采用如圖1所示的多階段推薦流程。首先經(jīng)過數(shù)據(jù)的抽取、轉(zhuǎn)換、清洗、裝載等操作,從異構(gòu)、多源、含噪聲的原始業(yè)務(wù)數(shù)據(jù)中提取用戶信息、產(chǎn)品信息和偏好信息,建立用戶模型和產(chǎn)品模型。然后利用多種不同的算法與策略構(gòu)建多個相互獨(dú)立的推薦引擎,通過不同的引擎產(chǎn)生獨(dú)立的推薦結(jié)果集,再將這些推薦結(jié)果以一定的策略進(jìn)行混合從而形成初始推薦集。
圖1 推薦系統(tǒng)工作流程
基于商業(yè)業(yè)務(wù)需求,有時希望將若干指定的產(chǎn)品推薦給用戶,如通常需要在首頁優(yōu)先展示新加入的產(chǎn)品,這時需要構(gòu)建一個包含此類產(chǎn)品的候選推薦集,在過濾階段之后同經(jīng)過篩選的初始推薦集進(jìn)行合并。過濾階段主要過濾掉以下的幾類產(chǎn)品:
(1)用戶已經(jīng)購買過的產(chǎn)品。因?yàn)橥扑]系統(tǒng)的主要目的是幫助用戶發(fā)現(xiàn)新產(chǎn)品,給用戶推薦已經(jīng)購買過的產(chǎn)品沒有多大意義。然而,這也不是絕對的:對于一次消費(fèi)品來說必須要被過濾,而對于可重復(fù)消費(fèi)品來說可以選擇不過濾。
(2)質(zhì)量較差的產(chǎn)品。推薦系統(tǒng)的終極目標(biāo)是提高用戶體驗(yàn)和提升服務(wù)品質(zhì),將來自評價非常差的供應(yīng)商的產(chǎn)品以及品質(zhì)不夠優(yōu)良的產(chǎn)品推薦給用戶有損用戶對推薦系統(tǒng)的信任。
(3)具有顯著的季節(jié)性特征的產(chǎn)品。將當(dāng)前季節(jié)未供應(yīng)的或者當(dāng)前季節(jié)中用戶不需要的產(chǎn)品推薦給用戶也不合理。
經(jīng)過過濾后的推薦結(jié)果通常可以直接展示給用戶,但如果綜合考慮新穎性、多樣性、時間等因素對它們進(jìn)行排名,則可以更好地提升用戶滿意度。應(yīng)用協(xié)同過濾引擎,推薦結(jié)果天然地具有了排名的依據(jù),可直接根據(jù)用戶推薦向量中各個分量的取值大小進(jìn)行排名。而利用靜態(tài)規(guī)則引擎和關(guān)聯(lián)規(guī)則引擎推薦的結(jié)果需要依據(jù)產(chǎn)品的其它屬性。依據(jù)產(chǎn)品的popularity(流行度)屬性,即選取popularity的倒數(shù)值來為產(chǎn)品進(jìn)行降序排列。通過將熱門的暢銷品降低權(quán)重,可以解決著名的哈利波特問題。經(jīng)過排名階段后的推薦結(jié)果列表便可以用富有表現(xiàn)力的形式展示給用戶。
基于Hadoop的混合電子商務(wù)推薦系統(tǒng)采用分層架構(gòu)來實(shí)現(xiàn):各層承擔(dān)不同的職責(zé),各層之間通過接口進(jìn)行交互,各層之內(nèi)采用模塊化思想設(shè)計(jì)。這樣保證了系統(tǒng)架構(gòu)具有高內(nèi)聚、低耦合和易擴(kuò)展的特點(diǎn)。系統(tǒng)的分層架構(gòu)如圖2所示,自下而上依次包括以下五層:
圖2 推薦系統(tǒng)架構(gòu)
數(shù)據(jù)訪問層:數(shù)據(jù)是電子商務(wù)系統(tǒng)中的寶貴資產(chǎn),同時也是算法和模型的處理對象。整合異構(gòu)、多源、多類型的原始業(yè)務(wù)數(shù)據(jù),并從中抽取用戶和產(chǎn)品特征,能有效地提高推薦的準(zhǔn)確性。同時,該層還需要負(fù)責(zé)對來自Hadoop集群的大規(guī)模數(shù)據(jù)分析后得到的結(jié)果進(jìn)行解析。因此,該層實(shí)現(xiàn)了業(yè)務(wù)計(jì)算環(huán)境和集群計(jì)算環(huán)境之間的數(shù)據(jù)遷移。
數(shù)據(jù)模型層:數(shù)據(jù)模型層包括用戶模型和產(chǎn)品模型,其中用戶模型由用戶基礎(chǔ)資料、用戶行為和用戶信用等內(nèi)容構(gòu)成;產(chǎn)品模型包括產(chǎn)品元數(shù)據(jù)和反饋評價信息等。通過數(shù)據(jù)訪問層對原始數(shù)據(jù)進(jìn)行抽取和解析,可以獲得用戶屬性集和產(chǎn)品屬性集,進(jìn)而生成用戶特征向量和產(chǎn)品特征向量。
算法策略層:通用的、經(jīng)典的算法通常都比較抽象,較少考慮實(shí)際的系統(tǒng)需求和業(yè)務(wù)需求,例如它對魯棒性和基于應(yīng)用特性或數(shù)據(jù)特性的性能調(diào)優(yōu)等方面的關(guān)注較少,因此它們和具體的產(chǎn)品形態(tài)之間的差距較大。策略主要體現(xiàn)業(yè)務(wù)需求,它充當(dāng)驅(qū)動器的角色,能夠把業(yè)務(wù)規(guī)則封裝起來提供給上層。該層包括常見的數(shù)據(jù)挖掘算法和機(jī)器學(xué)習(xí)算法,包括相似度計(jì)算、關(guān)聯(lián)規(guī)則挖掘、聚類和協(xié)同過濾等算法。算法策略層處于數(shù)據(jù)模型和推薦引擎層之間,以獨(dú)立層的形式存在,這樣允許整合更多數(shù)據(jù)分析算法。
推薦引擎層:該層是整個系統(tǒng)的核心,它將算法和策略包裝成功能獨(dú)立的推薦引擎,通過調(diào)用算法策略層的算法對數(shù)據(jù)模型完成相似度計(jì)算、偏好預(yù)測和關(guān)聯(lián)分析等計(jì)算任務(wù)。由于電子商務(wù)系統(tǒng)中的推薦需求通常是多樣化的,每一種推薦需求通常可以使用一種引擎來實(shí)現(xiàn)。設(shè)計(jì)獨(dú)立的推薦引擎層允許整合更多的推薦引擎,從而實(shí)現(xiàn)功能上的擴(kuò)展。
該層基于協(xié)同過濾技術(shù)來實(shí)現(xiàn)個性化推薦引擎,通過進(jìn)行長尾挖掘來滿足個性化推薦的需求。在非個性化推薦引擎方面,實(shí)現(xiàn)了靜態(tài)規(guī)則推薦引擎和關(guān)聯(lián)規(guī)則推薦引擎。
靜態(tài)規(guī)則推薦引擎是以靜態(tài)的邏輯規(guī)則的形式向用戶推薦產(chǎn)品。與其它的引擎不同,它的規(guī)則不需要經(jīng)過復(fù)雜的推薦算法計(jì)算過程,而是直接以靜態(tài)的映射規(guī)則的形式來實(shí)現(xiàn)的。靜態(tài)規(guī)則主要有4個方面的來源:專家經(jīng)驗(yàn)、領(lǐng)域知識、商業(yè)應(yīng)用需求和其它途徑獲得的知識與結(jié)論。這里的專家可以是一些有經(jīng)驗(yàn)的領(lǐng)域資深專家,也可以是社區(qū)中的意見領(lǐng)袖等。由于推薦技術(shù)最根本還是一種信息過濾的機(jī)制,如果能夠建立比較理想的推薦模型,同時數(shù)據(jù)質(zhì)量較高且擁有大量的數(shù)據(jù)的話,推薦的效果也會比較理想,然而要獲取高質(zhì)量的大量數(shù)據(jù)和實(shí)現(xiàn)好的推薦模型都非常難,在大多數(shù)情況下,這些靜態(tài)推薦規(guī)則可以在很多實(shí)際應(yīng)用場合中為其它推薦技術(shù)提供有益的補(bǔ)充。
購物籃分析是電子商務(wù)領(lǐng)域中最經(jīng)典的數(shù)據(jù)挖掘應(yīng)用場景,關(guān)聯(lián)規(guī)則推薦引擎集中關(guān)注針對交易數(shù)據(jù)庫的購物籃分析。通過關(guān)聯(lián)規(guī)則挖掘可以得知哪些產(chǎn)品經(jīng)常被一同購買,從而導(dǎo)出基于關(guān)聯(lián)規(guī)則的推薦列表。
上述3種推薦引擎各具特色。其中協(xié)同過濾推薦引擎實(shí)現(xiàn)了個性化推薦,它充分考慮用戶的個人偏好。但是用戶的個性化需求通常不穩(wěn)定,可能會隨著時間推移發(fā)生變化,僅依賴個性化引擎通常并不能得到非常令人滿意的效果。此外,用戶還具有關(guān)注哪些產(chǎn)品是熱門產(chǎn)品、哪些產(chǎn)品在整體消費(fèi)趨勢中經(jīng)常一同被購買等非個性化的需求。非個性化推薦反映群體的總體消費(fèi)趨勢,代表大眾的喜好。結(jié)合個性化需求和非個性化需求可以更全面地滿足用戶的需求,實(shí)現(xiàn)熱門資源和長尾資源之間的平衡。此外,關(guān)聯(lián)規(guī)則推薦關(guān)注的是產(chǎn)品之間的相關(guān)性,但是只能提供非個性化的推薦;而協(xié)同過濾推薦能夠?qū)崿F(xiàn)個性化的推薦,其自動化、智能化和個性化的程度都很高,但是其也存在伸縮性、稀疏性和冷啟動等問題。因此,采用具有互補(bǔ)意義的3種不同推薦引擎可以充分滿足用戶的各種需求,同時也能克服單個引擎的不足。最后通過混合推薦模型將3個不同推薦引擎的推薦結(jié)果進(jìn)行組合。
應(yīng)用層:位于最頂層,是用戶與系統(tǒng)交互的接口,包含常見的配置、管理、交互和展示功能。其允許配置混合模型的參數(shù)和混合方式,保證了推薦系統(tǒng)的靈活性。
綜上所述,設(shè)計(jì)思想可以總結(jié)為如下四點(diǎn):第一,采用Terminal/Cluster模式的架構(gòu)來滿足現(xiàn)代互聯(lián)網(wǎng)應(yīng)用的面向海量數(shù)據(jù)分析的需要;第二,采用多階段的推薦流程能支持混合推薦,并容易實(shí)現(xiàn)推薦解釋的功能;第三,采用縱向分層、橫向模塊化、基礎(chǔ)通用功能組件化的推薦系統(tǒng)架構(gòu),容易集成更多的算法、策略和引擎從而實(shí)現(xiàn)功能上的擴(kuò)展;第四,通過應(yīng)用層的配置和管理能夠靈活地定義引擎方案。第一點(diǎn)可以實(shí)現(xiàn)伸縮性的目標(biāo),第二點(diǎn)和第三點(diǎn)對多樣性的目標(biāo)提供了支持,第四點(diǎn)滿足了靈活性的需求。這樣無論是流程還是架構(gòu)都能靈活地滿足大型電子商務(wù)系統(tǒng)多樣化的推薦需求。
基于Hadoop的混合電子商務(wù)推薦系統(tǒng)采用適合現(xiàn)代互聯(lián)網(wǎng)應(yīng)用的T/C (Terminal/Cluster)形式架構(gòu)來實(shí)現(xiàn),其架構(gòu)圖如圖3所示。系統(tǒng)包括兩部分:WebTerminal終端和Hadoop集群。前者是瘦客戶端,只擁有少量的業(yè)務(wù)邏輯,它實(shí)現(xiàn)了推薦系統(tǒng)的配置、管理、交互和展示功能,同時能將業(yè)務(wù)系統(tǒng)中產(chǎn)生的大規(guī)模數(shù)據(jù)經(jīng)過一系列的處理后作為Hadoop集群的輸入提交到平臺,以驅(qū)動基于Hadoop集群的大規(guī)模數(shù)據(jù)分析;后者是用于實(shí)現(xiàn)大規(guī)模數(shù)據(jù)分析的基礎(chǔ)設(shè)施,它是由許多節(jié)點(diǎn)按照一定的拓?fù)浣Y(jié)構(gòu)組織而成的集群,能夠提供高性能、按需、無限量的計(jì)算與存儲服務(wù)。經(jīng)過集群分析得到的結(jié)果再導(dǎo)出到WebTerminal終端,最終反饋并展示給用戶。
圖3 基于Hadoop的混合推薦系統(tǒng)架構(gòu)
WebTerminal端包含數(shù)據(jù)訪問層、應(yīng)用層的全部功能和用戶字典、產(chǎn)品字典、靜態(tài)規(guī)則引擎和混合模型部分的實(shí)現(xiàn)。
原始業(yè)務(wù)數(shù)據(jù)存儲在業(yè)務(wù)系統(tǒng)中,通常無法直接用于推薦分析,其中含有大量的臟數(shù)據(jù)、噪音數(shù)據(jù)和缺失值,為了進(jìn)行有效的分析和處理,需要進(jìn)行抽取、清洗、轉(zhuǎn)換和裝載。數(shù)據(jù)抽取模塊用于實(shí)現(xiàn)上述過程,從而將數(shù)據(jù)從存儲系統(tǒng)中抽取到Hadoop計(jì)算平臺,如圖4所示。針對數(shù)據(jù)的異構(gòu)性和多樣性,定義了一個公共抽取接口DataExtractor來抽象不同的數(shù)據(jù)抽取邏輯實(shí)現(xiàn)。
圖4 數(shù)據(jù)抽取模塊
同時,利用結(jié)果解析模塊可以實(shí)現(xiàn)將大數(shù)據(jù)分析處理的結(jié)果導(dǎo)回到關(guān)系數(shù)據(jù)庫的功能,該模塊的實(shí)現(xiàn)如圖5所示。
圖5 結(jié)果解析模塊
Sqoop可以通過MapReduce框架運(yùn)行任務(wù),實(shí)現(xiàn)關(guān)系型數(shù)據(jù)庫和HDFS之間的數(shù)據(jù)導(dǎo)入導(dǎo)出[10]。這種方法簡單方便,但是抽取過程不夠靈活,因此數(shù)據(jù)抽取模塊和結(jié)果解析模塊可以作為它的有益補(bǔ)充,實(shí)現(xiàn)更細(xì)粒度、更靈活的數(shù)據(jù)遷移功能。
采用了分區(qū)混合、加權(quán)混合和隨機(jī)混合3種不同的混合策略來實(shí)現(xiàn)混合推薦模型,其中利用設(shè)計(jì)模式中的策略模式來實(shí)現(xiàn)3種不同的混合策略之間的靈活切換?;旌贤扑]模型的時序圖如圖6所示,首先是加載混合策略以及相應(yīng)的配置參數(shù),然后依次經(jīng)過結(jié)果的過濾、排序、解釋等過程最終為用戶產(chǎn)生推薦列表。
圖6 混合推薦模型時序
推薦系統(tǒng)的數(shù)據(jù)資源主要包括三類:用戶數(shù)據(jù)、產(chǎn)品數(shù)據(jù)和用戶偏好數(shù)據(jù)。前兩種數(shù)據(jù)分別充當(dāng)用戶和產(chǎn)品的數(shù)據(jù)字典,第三種數(shù)據(jù)是用戶和產(chǎn)品之間的關(guān)聯(lián)關(guān)系的體現(xiàn)。在推薦計(jì)算過程中,分別使用用戶編號和產(chǎn)品編號來唯一索引用戶與產(chǎn)品,利用數(shù)據(jù)字典可以獲得它們的詳細(xì)信息,這對產(chǎn)生推薦解釋十分重要。在推薦計(jì)算過程中,使用產(chǎn)品-用戶偏好矩陣來抽象用戶偏好數(shù)據(jù),該矩陣每個行向量分別對應(yīng)同一種產(chǎn)品,每個列向量分別對應(yīng)同一個用戶,每個矩陣單元格分別表示一個用戶對一種產(chǎn)品的偏好取值。
由于篇幅限制,這里以基于Hadoop的協(xié)同過濾推薦引擎為例介紹基于Hadoop的推薦引擎的實(shí)現(xiàn)。協(xié)同過濾引擎的核心包括兩個部分:相似度計(jì)算組件和協(xié)同過濾算法。
協(xié)同過濾技術(shù)一般都是基于相似性來產(chǎn)生推薦結(jié)果,如何定義和度量實(shí)體之間的距離是其關(guān)鍵,采用不同的距離計(jì)算方式無論是對算法的效率還是對推薦結(jié)果的精度都有影響。系統(tǒng)中共實(shí)現(xiàn)了6種不同的分布式相似度計(jì)算組件:歐式距離相似度 (EuclideanSimilarity)、余弦相似度(CosineSimilarity)、 皮 爾 森 相 關(guān) 度 (PearsonSimilarity)、Jaccard系數(shù) (JaccardSimilarity)、對數(shù)似然相似度 (LoglikelihoodSimilarity)和共現(xiàn)相似度 (CooccurrenceSimilarity)。它們都是針對向量實(shí)現(xiàn)的適合分布式計(jì)算環(huán)境下的相似度計(jì)算組件,是實(shí)現(xiàn)分布式協(xié)同過濾的基礎(chǔ)。
采用了基于MapReduce的Item-basedCF算法來實(shí)現(xiàn)協(xié)同過濾,該算法包含三步計(jì)算任務(wù):第一步,根據(jù)交易數(shù)據(jù)庫計(jì)算產(chǎn)品-產(chǎn)品協(xié)同矩陣;第二步,計(jì)算用戶的偏好向量。該向量是偏好矩陣的列向量,向量的每個分量對應(yīng)用戶對每項(xiàng)產(chǎn)品的偏好值;第三步,計(jì)算協(xié)同矩陣和偏好向量的點(diǎn)積,產(chǎn)生該用戶的推薦向量,這也是為該用戶輸出的候選推薦列表。為了基于MapReduce實(shí)現(xiàn)以上計(jì)算任務(wù),需要將其拆分為6個具體步驟,詳細(xì)的作業(yè)流如圖7所示。這些計(jì)算步驟需要使用總共12個MapReduceJob來實(shí)現(xiàn),其算法架構(gòu)圖如圖8所示。這一系列作業(yè)流統(tǒng)一地由RecommenderJob驅(qū)動器程序進(jìn)行驅(qū)動。
實(shí)驗(yàn)與分析通過基于Hadoop的混合電子商務(wù)推薦系統(tǒng)中的協(xié)同過濾引擎產(chǎn)生個性化推薦過程來說明系統(tǒng)的功能有效性和面對大規(guī)模數(shù)據(jù)的伸縮性。
圖7 分布式協(xié)同過濾算法流程
實(shí)驗(yàn)中采用的Hadoop集群由5個節(jié)點(diǎn)組成,其中包括1個Master節(jié)點(diǎn),4個Slave節(jié)點(diǎn)。每個節(jié)點(diǎn)的具體配置信息 如 下 :Intel(R)Xeon CPU E 5 6 4 5,1GRAM,1 5G硬盤,操作系統(tǒng)為Cent OS 5.3,Hadoop版本為1.0.4,節(jié)點(diǎn)之間通過100Mbps的網(wǎng)絡(luò)進(jìn)行連接。加速比實(shí)驗(yàn)中,每個Slave節(jié)點(diǎn)設(shè)置的最大map和reduce任務(wù)支持?jǐn)?shù)都各為2。此時,測試集群可以并行支持8個map任務(wù)和8個reduce任務(wù)。在此,將map任務(wù)數(shù)或reduce任務(wù)數(shù)視為計(jì)算節(jié)點(diǎn)的數(shù)量。通過調(diào)節(jié)每個Slave節(jié)點(diǎn)設(shè)置的最大map和reduce任務(wù)支持?jǐn)?shù)來獲得不同數(shù)量的計(jì)算節(jié)點(diǎn)。實(shí)驗(yàn)中采用評測協(xié)同過濾算法的經(jīng)典數(shù)據(jù)集MovieLens,其中包含6040位用戶、3706部電影和1000209條評分記錄,數(shù)據(jù)的整體稀疏程度為95.53%。
加速比[11](speedup) 和恒等效率伸縮性[12](isoefficiency)是評估并行系統(tǒng)的效率和伸縮性的兩個重要的定量分析指標(biāo)。前者評估固定問題規(guī)模下隨著計(jì)算節(jié)點(diǎn)數(shù)增加運(yùn)行性能的變化情況;后者使用恒等效率函數(shù)來評估評估當(dāng)問題規(guī)模增大時算法的性能。
(1)加速比性能分析:Amdahl定律是一種常用的固定規(guī)模加速比性能模型。它采用如下的公式計(jì)算加速比Sp,其中T表示使用單個計(jì)算節(jié)點(diǎn)時的算法執(zhí)行時1間,Tp表示使用p個計(jì)算節(jié)點(diǎn)時的并行執(zhí)行時間。
圖8 分布式協(xié)同過濾算法架構(gòu)
若算法具有伸縮性,則當(dāng)問題規(guī)模固定時,加速比與計(jì)算節(jié)點(diǎn)數(shù)存在線性關(guān)系。從圖9可看出,在4種不同的數(shù)據(jù)集大小 (10K、100K、1M、10M)下,加速比與計(jì)算節(jié)點(diǎn)個數(shù)的增加近似成正比。同時,還可發(fā)現(xiàn)當(dāng)數(shù)據(jù)集更大時可以獲得更好的加速比。由此可見,基于Hadoop的協(xié)同過濾算法在處理更大規(guī)模的數(shù)據(jù)集的時候有更好的加速比。
圖9 Item-basedCF算法的加速比
(2)伸縮性分析:Isoefficiency指標(biāo)可以通過如下的公式來計(jì)算
式中:T0——并行執(zhí)行過程中的通信代價。
如果算法具有伸縮性,運(yùn)行結(jié)果能保持Ep為常量。當(dāng)Ep為常量時,T1=fE(P)=kP,其中P表示計(jì)算節(jié)點(diǎn)數(shù),因此fE(P)是一個線性函數(shù)。T1=T(m)=lm,其中m表示數(shù)據(jù)量的大小,由此可得,m與P線性相關(guān),即P=因此如果計(jì)算節(jié)點(diǎn)P和數(shù)據(jù)規(guī)模大小m線性相關(guān),則也意味著算法具有伸縮性。如圖10所示,當(dāng)設(shè)置了3個不同的固定計(jì)算時間 (10min、20min、30min)時,計(jì)算節(jié)點(diǎn)數(shù)隨著數(shù)據(jù)規(guī)模增長同步線性增長。同時,還可以發(fā)現(xiàn),當(dāng)設(shè)置的運(yùn)行時間越長,算法具有越好的伸縮性能。
綜上所述,實(shí)驗(yàn)表明基于Hadoop的電子商務(wù)推薦系統(tǒng)在執(zhí)行協(xié)同過濾時具有較好的伸縮性和性能。
Gong[13]針對協(xié)同過濾推薦技術(shù)存在的數(shù)據(jù)稀疏性問題,采用了關(guān)聯(lián)規(guī)則挖掘和User-based協(xié)同過濾兩種技術(shù)實(shí)現(xiàn)個性化的推薦系統(tǒng),該研究表明利用不同的推薦技術(shù)可以互補(bǔ)各自的不足之處。
圖10 時間固定時,節(jié)點(diǎn)個數(shù)與數(shù)據(jù)規(guī)模的效率函數(shù)
Zhao[14]針對 User-based協(xié)同過濾算法的伸縮性問題,實(shí)現(xiàn)了基于Hadoop平臺的User-based協(xié)同過濾算法,從而實(shí)現(xiàn)算法的線性伸縮。
MyMediaLite[15]作為一個輕量級多功能的推薦系統(tǒng)算法庫,它解決了兩種最常見的協(xié)同過濾場景:評分預(yù)測和基于隱式反饋的預(yù)測,提供了常見推薦算法的高效和易伸縮的版本實(shí)現(xiàn)。
提出的基于Hadoop的電子商務(wù)推薦系統(tǒng)從伸縮性、靈活性和多樣性出發(fā),運(yùn)用基于MapReduce的算法和易于配置的混合推薦模型,實(shí)現(xiàn)面向大型電子商務(wù)的推薦系統(tǒng),突破了集中式推薦系統(tǒng)架構(gòu)的瓶頸。
提出了一種基于Hadoop的混合電子商務(wù)推薦系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn),為使用Hadoop構(gòu)建可伸縮、高性能的分布式電子商務(wù)推薦系統(tǒng)提供了參考。系統(tǒng)以基于MapReduce的推薦算法為核心,采用易于擴(kuò)展的開放式推薦流程和架構(gòu),利用混合推薦模型,允許用戶在應(yīng)用層靈活配置引擎方案,同時易于擴(kuò)展以支持更多的算法、策略和引擎。結(jié)合Hadoop的分布式計(jì)算的潛力和混合推薦的優(yōu)勢,構(gòu)建具有高伸縮性、靈活性和多樣性的推薦系統(tǒng),能夠有效地解決大型電子商務(wù)系統(tǒng)中的信息過載問題,為電子商務(wù)企業(yè)在數(shù)據(jù)驅(qū)動的個性化消費(fèi)時代產(chǎn)生持續(xù)的競爭優(yōu)勢。
[1]Information overload [EB/OL].[2013-04-20.]http://en.wikipedia.org/wiki/Information_overload.
[2]Ricci F,Shapira B.Recommender systems handbook [M].Springer,2011.
[3]Pu P,Chen L,Kumar P.Evaluating product search and recommender systems for E-commerce environments [J].Electronic Commerce Research,2008,8 (1-2):1-27.
[4]Ricci F,Rokach L,Shapira B.Introduction to recommender systems handbook [M].Recommender Systems Handbook.Springer US,2011:1-35.
[5]Wang H F,Wu C T.A strategy-oriented operation module for recommender systems in E-commerce [J].Computers & Operations Research,2012,39 (8):1837-1849.
[6]Wei K,Huang J,F(xiàn)u S.A survey of e-commerce recommender systems [C]//International Conference on Service Systems and Service Management.IEEE,2007:1-5.
[7]Hadoop [EB/OL].[2013-04-20.]http://hadoop.apache.org.
[8]Chuck Lam.Hadoop in action [M].Manning Publications,2011:15-16.
[9]White T.Hadoop:The definitive guide [M].2nd ed.O′Reilly Media.Yahoo Press,2010:165.
[10]Sqoop [EB/OL].[2013-04-20.]https://github.com/cloudera/sqoop/wiki.
[11]Hill M D,Marty M R.Amdahl’s law in the multicore era[J].Computer,2008,41 (7):33-38.
[12]Hanuliak P.Analytical method of performance prediction in parallel algorithms [J].Open Cybernetics & Systemics Journal,2012,6:38-47.
[13]Gong S J.Personalized recommendation system based on association rules mining and collaborative filtering [J].Applied Mechanics and Materials,2011,39:540-544.
[14]Zhao Z D,Shang M.User-based collaborative-filtering recommendation algorithms on Hadoop [C]//Third International Conference on Knowledge Discovery and Data Mining.IEEE,2010:478-481.
[15]Gantner Z,Rendle S,F(xiàn)reudenthaler C,et al.MyMediaLite:A free recommender system library [C]//Proceedings of the Fifth ACM Conference on Recommender Systems.ACM,2011:305-308.