李文海,許舒人
(1.中國(guó)科學(xué)院軟件研究所 軟件工程技術(shù)研究開發(fā)中心,北京100190;2.中國(guó)科學(xué)院研究生院,北京100190)
隨著用戶規(guī)模的擴(kuò)大和業(yè)務(wù)的發(fā)展,大型電子商務(wù)系統(tǒng)中的用戶數(shù)和產(chǎn)品種類越來(lái)越多,數(shù)據(jù)規(guī)模正爆炸式地增長(zhǎng)。然而,能夠有效利用的展示區(qū)域是有限的,大量的信息資源由于成為長(zhǎng)尾被淹沒(méi)而得不到展示,信息過(guò)載問(wèn)題[1]日益突出。
推薦系統(tǒng)[2]是一種重要的信息過(guò)濾機(jī)制,它能有效地解決信息過(guò)載問(wèn)題。通過(guò)挖掘用戶和信息資源之間的聯(lián)系規(guī)律,它能幫助用戶從網(wǎng)絡(luò)中的大量信息里找到甚至發(fā)現(xiàn)他們需要的以及可能會(huì)感興趣的信息資源。它以主動(dòng)服務(wù)的方式,通過(guò)利用挖掘和分析技術(shù),實(shí)現(xiàn)自動(dòng)化、智能化和個(gè)性化的信息過(guò)濾服務(wù),幫助用戶發(fā)現(xiàn)所需。因此,它被廣泛地應(yīng)用于電子商務(wù)和社交網(wǎng)絡(luò)等典型現(xiàn)代互聯(lián)網(wǎng)領(lǐng)域。
電子商務(wù)推薦系統(tǒng)[3]通過(guò)模擬智能銷售導(dǎo)購(gòu)的角色,能夠?yàn)殡娮由虅?wù)網(wǎng)站的用戶提供產(chǎn)品信息和相關(guān)的建議以幫助用戶進(jìn)行購(gòu)買決策,完成購(gòu)物過(guò)程。它能促進(jìn)一對(duì)一的銷售,可以為電子商務(wù)系統(tǒng)提供更加智能化和個(gè)性化的購(gòu)物體驗(yàn),最終提升用戶滿意度。電子商務(wù)的發(fā)展趨勢(shì)是針對(duì)不同的用戶提供個(gè)性化的購(gòu)物體驗(yàn),通過(guò)準(zhǔn)確地預(yù)測(cè)用戶的偏好、口味和潛在的需求,以此來(lái)提高網(wǎng)站的營(yíng)業(yè)額,而這個(gè)目標(biāo)正是通過(guò)推薦系統(tǒng)來(lái)實(shí)現(xiàn)的。
對(duì)于電子商務(wù)系統(tǒng)來(lái)說(shuō),推薦系統(tǒng)的作用主要體現(xiàn)在以下幾方面[4]:提升購(gòu)物體驗(yàn),提高用戶的忠誠(chéng)度;增強(qiáng)交叉銷售能力,提高整體交易量;挖掘潛在的客戶資源,利用推薦激發(fā)用戶的購(gòu)買欲望,將用戶由普通的瀏覽者轉(zhuǎn)變?yōu)橄M(fèi)者。因此,可以認(rèn)為電子商務(wù)推薦系統(tǒng)是一種集成了諸多不同種類的發(fā)現(xiàn)新事物的方法、技術(shù)和策略的信息過(guò)濾機(jī)制,其核心任務(wù)是通過(guò)發(fā)掘用戶和商品之間的聯(lián)系來(lái)向用戶提供個(gè)性化的產(chǎn)品推薦服務(wù),最終實(shí)現(xiàn)用戶和系統(tǒng)所有者的雙贏。
現(xiàn)代互聯(lián)網(wǎng)應(yīng)用背景下的大型電子商務(wù)推薦系統(tǒng)正面臨著以下幾個(gè)方面的挑戰(zhàn)[5,6]:
(1)采用集中式架構(gòu)的推薦系統(tǒng)數(shù)據(jù)處理能力有限。單機(jī)推薦算法存在數(shù)據(jù)處理規(guī)模的限制和處理效率的問(wèn)題。
(2)大型電子商務(wù)系統(tǒng)中除了用戶和產(chǎn)品數(shù)目龐大之外,用戶和產(chǎn)品的自然屬性也多,要對(duì)高維度的用戶和產(chǎn)品建立準(zhǔn)確有效的模型十分困難。
(3)商業(yè)應(yīng)用需求通常復(fù)雜多變,同時(shí)對(duì)于不同的應(yīng)用場(chǎng)景用戶的關(guān)注點(diǎn)也不同,基于固定的模型和參數(shù)的推薦系統(tǒng)通常缺乏靈活性。
(4)推薦模型通常和數(shù)據(jù)特性以及應(yīng)用場(chǎng)景有很強(qiáng)的相關(guān)性,這決定了推薦系統(tǒng)必須要綜合多種互補(bǔ)性強(qiáng)的推薦技術(shù)。而現(xiàn)有的方案中算法和模型比較單一,難以滿足主流用戶的主流需求的同時(shí)兼顧用戶的個(gè)性化需求。
基于Hadoop平臺(tái)和混合推薦策略,設(shè)計(jì)了一種面向大型電子商務(wù)系統(tǒng)的混合推薦系統(tǒng),運(yùn)用基于MapReduce框架的算法的伸縮性和分布式并行計(jì)算能力,使系統(tǒng)能對(duì)大規(guī)模的數(shù)據(jù)進(jìn)行高效的分析;通過(guò)結(jié)合不同的推薦引擎來(lái)解決冷啟動(dòng)和數(shù)據(jù)稀疏引起的推薦效果不佳的問(wèn)題。系統(tǒng)主要解決如下3個(gè)方面的問(wèn)題:
(1)伸縮性。現(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)鍵需求,針對(duì)持續(xù)增長(zhǎng)的數(shù)據(jù)實(shí)現(xiàn)伸縮對(duì)任何數(shù)據(jù)分析系統(tǒng)都十分重要。采用基于MapReduce框架的算法提高數(shù)據(jù)分析的能力,通過(guò)Hadoop平臺(tái)實(shí)現(xiàn)橫向擴(kuò)展,能夠針對(duì)不同規(guī)模的數(shù)據(jù)實(shí)現(xiàn)理想伸縮。
(2)靈活性。由于商業(yè)應(yīng)用需求復(fù)雜多變,允許用戶通過(guò)配置模型參數(shù),以參數(shù)化運(yùn)行的方式,實(shí)現(xiàn)不同的推薦模型以適合不同的應(yīng)用場(chǎng)景。
(3)多樣性。非個(gè)性化的推薦能夠很好地反映大眾的流行趨勢(shì),而個(gè)性化的推薦能夠更好地滿足用戶的個(gè)人興趣和偏好,將兩者進(jìn)行結(jié)合能充分滿足不同群體的多樣化的口味。此外,采用混合推薦策略也能提高推薦結(jié)果的多樣性。
常用的推薦技術(shù)有協(xié)同過(guò)濾技術(shù)、關(guān)聯(lián)規(guī)則挖掘和基于知識(shí)經(jīng)驗(yàn)的方法等,其優(yōu)缺點(diǎn)綜合比較見表1。因此,采用可以靈活配置管理的混合推薦模型綜合多種不同的推薦技術(shù)以彌補(bǔ)單一推薦技術(shù)的不足,可以滿足靈活性和多樣性的推薦需求,在滿足非個(gè)性化推薦需求的同時(shí)兼顧個(gè)性化推薦需求。
表1 主要推薦技術(shù)的比較
Google發(fā)布的關(guān)于分布式基礎(chǔ)設(shè)施的論文對(duì)業(yè)界產(chǎn)生了巨大的影響,其中的MapReduce和GFS等思想為分布式計(jì)算與存儲(chǔ)提供了關(guān)鍵參考,Hadoop是其開源實(shí)現(xiàn)[7]。
Hadoop是一個(gè)針對(duì)大規(guī)模數(shù)據(jù)處理與分析的用于構(gòu)建分布式系統(tǒng)的基礎(chǔ)框架,它方便易用,用戶可以在不必充分關(guān)注分布式底層細(xì)節(jié)的情況下,方便地開發(fā)分布式應(yīng)用,充分利用集群進(jìn)行協(xié)同計(jì)算與協(xié)同存儲(chǔ),實(shí)現(xiàn)橫向擴(kuò)展的目標(biāo)[8]。
Hadoop通過(guò)采用數(shù)據(jù)分布式存儲(chǔ)、遷移代碼而非遷移數(shù)據(jù)的機(jī)制,在處理大規(guī)模數(shù)據(jù)時(shí)避免了耗時(shí)的數(shù)據(jù)傳輸問(wèn)題;利用數(shù)據(jù)適度冗余機(jī)制,允許系統(tǒng)從節(jié)點(diǎn)失效中恢復(fù)?;贖adoop平臺(tái)開發(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平臺(tái)具有高可伸縮、低成本、高可靠、方便易用等特點(diǎn)[9],其核心是 HDFS分布式文件系統(tǒng)和 MapReduce框架。前者使得在成本可控的情況下處理海量數(shù)據(jù)成為可能;后者則是一種采用分治策略、專為大規(guī)模分布式并行數(shù)據(jù)處理設(shè)計(jì)的簡(jiǎn)化編程模型,它借鑒了函數(shù)式編程的思想,將針對(duì)大規(guī)模數(shù)據(jù)的處理任務(wù)統(tǒng)一地抽象為Map(映射)和Reduce(規(guī)約)兩種操作。研究表明,大多數(shù)針對(duì)大規(guī)模數(shù)據(jù)的分布式處理任務(wù)都可以通過(guò)該模型進(jìn)行表達(dá),它允許編程人員以直接調(diào)用相關(guān)編程接口的方式方便地將自己的程序運(yùn)行于分布式集群系統(tǒng)上。這樣,通過(guò)在應(yīng)用程序和平臺(tái)之間進(jìn)行職責(zé)的重新劃分,讓平臺(tái)框架來(lái)處理諸如底層存儲(chǔ)、節(jié)點(diǎn)通信等復(fù)雜的分布式處理細(xì)節(jié),應(yīng)用程序可以專注于業(yè)務(wù)邏輯以面向更加復(fù)雜的業(yè)務(wù)需求。
由于Hadoop集群可以按需橫向動(dòng)態(tài)擴(kuò)展,利用Hadoop平臺(tái)可以突破數(shù)據(jù)規(guī)模給推薦系統(tǒng)帶來(lái)的大數(shù)據(jù)分析的瓶頸,滿足高性能、高伸縮性計(jì)算的需求。
本節(jié)將給出支持混合推薦模型的推薦流程和系統(tǒng)架構(gòu)的詳細(xì)設(shè)計(jì)。
系統(tǒng)采用如圖1所示的多階段推薦流程。首先經(jīng)過(guò)數(shù)據(jù)的抽取、轉(zhuǎn)換、清洗、裝載等操作,從異構(gòu)、多源、含噪聲的原始業(yè)務(wù)數(shù)據(jù)中提取用戶信息、產(chǎn)品信息和偏好信息,建立用戶模型和產(chǎn)品模型。然后利用多種不同的算法與策略構(gòu)建多個(gè)相互獨(dú)立的推薦引擎,通過(guò)不同的引擎產(chǎn)生獨(dú)立的推薦結(jié)果集,再將這些推薦結(jié)果以一定的策略進(jìn)行混合從而形成初始推薦集。
圖1 推薦系統(tǒng)工作流程
基于商業(yè)業(yè)務(wù)需求,有時(shí)希望將若干指定的產(chǎn)品推薦給用戶,如通常需要在首頁(yè)優(yōu)先展示新加入的產(chǎn)品,這時(shí)需要構(gòu)建一個(gè)包含此類產(chǎn)品的候選推薦集,在過(guò)濾階段之后同經(jīng)過(guò)篩選的初始推薦集進(jìn)行合并。過(guò)濾階段主要過(guò)濾掉以下的幾類產(chǎn)品:
(1)用戶已經(jīng)購(gòu)買過(guò)的產(chǎn)品。因?yàn)橥扑]系統(tǒng)的主要目的是幫助用戶發(fā)現(xiàn)新產(chǎn)品,給用戶推薦已經(jīng)購(gòu)買過(guò)的產(chǎn)品沒(méi)有多大意義。然而,這也不是絕對(duì)的:對(duì)于一次消費(fèi)品來(lái)說(shuō)必須要被過(guò)濾,而對(duì)于可重復(fù)消費(fèi)品來(lái)說(shuō)可以選擇不過(guò)濾。
(2)質(zhì)量較差的產(chǎn)品。推薦系統(tǒng)的終極目標(biāo)是提高用戶體驗(yàn)和提升服務(wù)品質(zhì),將來(lái)自評(píng)價(jià)非常差的供應(yīng)商的產(chǎn)品以及品質(zhì)不夠優(yōu)良的產(chǎn)品推薦給用戶有損用戶對(duì)推薦系統(tǒng)的信任。
(3)具有顯著的季節(jié)性特征的產(chǎn)品。將當(dāng)前季節(jié)未供應(yīng)的或者當(dāng)前季節(jié)中用戶不需要的產(chǎn)品推薦給用戶也不合理。
經(jīng)過(guò)過(guò)濾后的推薦結(jié)果通??梢灾苯诱故窘o用戶,但如果綜合考慮新穎性、多樣性、時(shí)間等因素對(duì)它們進(jìn)行排名,則可以更好地提升用戶滿意度。應(yīng)用協(xié)同過(guò)濾引擎,推薦結(jié)果天然地具有了排名的依據(jù),可直接根據(jù)用戶推薦向量中各個(gè)分量的取值大小進(jìn)行排名。而利用靜態(tài)規(guī)則引擎和關(guān)聯(lián)規(guī)則引擎推薦的結(jié)果需要依據(jù)產(chǎn)品的其它屬性。依據(jù)產(chǎn)品的popularity(流行度)屬性,即選取popularity的倒數(shù)值來(lái)為產(chǎn)品進(jìn)行降序排列。通過(guò)將熱門的暢銷品降低權(quán)重,可以解決著名的哈利波特問(wèn)題。經(jīng)過(guò)排名階段后的推薦結(jié)果列表便可以用富有表現(xiàn)力的形式展示給用戶。
基于Hadoop的混合電子商務(wù)推薦系統(tǒng)采用分層架構(gòu)來(lái)實(shí)現(xiàn):各層承擔(dān)不同的職責(zé),各層之間通過(guò)接口進(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ù)訪問(wèn)層:數(shù)據(jù)是電子商務(wù)系統(tǒng)中的寶貴資產(chǎn),同時(shí)也是算法和模型的處理對(duì)象。整合異構(gòu)、多源、多類型的原始業(yè)務(wù)數(shù)據(jù),并從中抽取用戶和產(chǎn)品特征,能有效地提高推薦的準(zhǔn)確性。同時(shí),該層還需要負(fù)責(zé)對(duì)來(lái)自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ù)和反饋評(píng)價(jià)信息等。通過(guò)數(shù)據(jù)訪問(wèn)層對(duì)原始數(shù)據(jù)進(jìn)行抽取和解析,可以獲得用戶屬性集和產(chǎn)品屬性集,進(jìn)而生成用戶特征向量和產(chǎn)品特征向量。
算法策略層:通用的、經(jīng)典的算法通常都比較抽象,較少考慮實(shí)際的系統(tǒng)需求和業(yè)務(wù)需求,例如它對(duì)魯棒性和基于應(yīng)用特性或數(shù)據(jù)特性的性能調(diào)優(yōu)等方面的關(guān)注較少,因此它們和具體的產(chǎn)品形態(tài)之間的差距較大。策略主要體現(xiàn)業(yè)務(wù)需求,它充當(dāng)驅(qū)動(dòng)器的角色,能夠把業(yè)務(wù)規(guī)則封裝起來(lái)提供給上層。該層包括常見的數(shù)據(jù)挖掘算法和機(jī)器學(xué)習(xí)算法,包括相似度計(jì)算、關(guān)聯(lián)規(guī)則挖掘、聚類和協(xié)同過(guò)濾等算法。算法策略層處于數(shù)據(jù)模型和推薦引擎層之間,以獨(dú)立層的形式存在,這樣允許整合更多數(shù)據(jù)分析算法。
推薦引擎層:該層是整個(gè)系統(tǒng)的核心,它將算法和策略包裝成功能獨(dú)立的推薦引擎,通過(guò)調(diào)用算法策略層的算法對(duì)數(shù)據(jù)模型完成相似度計(jì)算、偏好預(yù)測(cè)和關(guān)聯(lián)分析等計(jì)算任務(wù)。由于電子商務(wù)系統(tǒng)中的推薦需求通常是多樣化的,每一種推薦需求通常可以使用一種引擎來(lái)實(shí)現(xiàn)。設(shè)計(jì)獨(dú)立的推薦引擎層允許整合更多的推薦引擎,從而實(shí)現(xiàn)功能上的擴(kuò)展。
該層基于協(xié)同過(guò)濾技術(shù)來(lái)實(shí)現(xiàn)個(gè)性化推薦引擎,通過(guò)進(jìn)行長(zhǎng)尾挖掘來(lái)滿足個(gè)性化推薦的需求。在非個(gè)性化推薦引擎方面,實(shí)現(xiàn)了靜態(tài)規(guī)則推薦引擎和關(guān)聯(lián)規(guī)則推薦引擎。
靜態(tài)規(guī)則推薦引擎是以靜態(tài)的邏輯規(guī)則的形式向用戶推薦產(chǎn)品。與其它的引擎不同,它的規(guī)則不需要經(jīng)過(guò)復(fù)雜的推薦算法計(jì)算過(guò)程,而是直接以靜態(tài)的映射規(guī)則的形式來(lái)實(shí)現(xiàn)的。靜態(tài)規(guī)則主要有4個(gè)方面的來(lái)源:專家經(jīng)驗(yàn)、領(lǐng)域知識(shí)、商業(yè)應(yīng)用需求和其它途徑獲得的知識(shí)與結(jié)論。這里的專家可以是一些有經(jīng)驗(yàn)的領(lǐng)域資深專家,也可以是社區(qū)中的意見領(lǐng)袖等。由于推薦技術(shù)最根本還是一種信息過(guò)濾的機(jī)制,如果能夠建立比較理想的推薦模型,同時(shí)數(shù)據(jù)質(zhì)量較高且擁有大量的數(shù)據(jù)的話,推薦的效果也會(huì)比較理想,然而要獲取高質(zhì)量的大量數(shù)據(jù)和實(shí)現(xiàn)好的推薦模型都非常難,在大多數(shù)情況下,這些靜態(tài)推薦規(guī)則可以在很多實(shí)際應(yīng)用場(chǎng)合中為其它推薦技術(shù)提供有益的補(bǔ)充。
購(gòu)物籃分析是電子商務(wù)領(lǐng)域中最經(jīng)典的數(shù)據(jù)挖掘應(yīng)用場(chǎng)景,關(guān)聯(lián)規(guī)則推薦引擎集中關(guān)注針對(duì)交易數(shù)據(jù)庫(kù)的購(gòu)物籃分析。通過(guò)關(guān)聯(lián)規(guī)則挖掘可以得知哪些產(chǎn)品經(jīng)常被一同購(gòu)買,從而導(dǎo)出基于關(guān)聯(lián)規(guī)則的推薦列表。
上述3種推薦引擎各具特色。其中協(xié)同過(guò)濾推薦引擎實(shí)現(xiàn)了個(gè)性化推薦,它充分考慮用戶的個(gè)人偏好。但是用戶的個(gè)性化需求通常不穩(wěn)定,可能會(huì)隨著時(shí)間推移發(fā)生變化,僅依賴個(gè)性化引擎通常并不能得到非常令人滿意的效果。此外,用戶還具有關(guān)注哪些產(chǎn)品是熱門產(chǎn)品、哪些產(chǎn)品在整體消費(fèi)趨勢(shì)中經(jīng)常一同被購(gòu)買等非個(gè)性化的需求。非個(gè)性化推薦反映群體的總體消費(fèi)趨勢(shì),代表大眾的喜好。結(jié)合個(gè)性化需求和非個(gè)性化需求可以更全面地滿足用戶的需求,實(shí)現(xiàn)熱門資源和長(zhǎng)尾資源之間的平衡。此外,關(guān)聯(lián)規(guī)則推薦關(guān)注的是產(chǎn)品之間的相關(guān)性,但是只能提供非個(gè)性化的推薦;而協(xié)同過(guò)濾推薦能夠?qū)崿F(xiàn)個(gè)性化的推薦,其自動(dòng)化、智能化和個(gè)性化的程度都很高,但是其也存在伸縮性、稀疏性和冷啟動(dòng)等問(wèn)題。因此,采用具有互補(bǔ)意義的3種不同推薦引擎可以充分滿足用戶的各種需求,同時(shí)也能克服單個(gè)引擎的不足。最后通過(guò)混合推薦模型將3個(gè)不同推薦引擎的推薦結(jié)果進(jìn)行組合。
應(yīng)用層:位于最頂層,是用戶與系統(tǒng)交互的接口,包含常見的配置、管理、交互和展示功能。其允許配置混合模型的參數(shù)和混合方式,保證了推薦系統(tǒng)的靈活性。
綜上所述,設(shè)計(jì)思想可以總結(jié)為如下四點(diǎn):第一,采用Terminal/Cluster模式的架構(gòu)來(lái)滿足現(xiàn)代互聯(lián)網(wǎng)應(yīng)用的面向海量數(shù)據(jù)分析的需要;第二,采用多階段的推薦流程能支持混合推薦,并容易實(shí)現(xiàn)推薦解釋的功能;第三,采用縱向分層、橫向模塊化、基礎(chǔ)通用功能組件化的推薦系統(tǒng)架構(gòu),容易集成更多的算法、策略和引擎從而實(shí)現(xiàn)功能上的擴(kuò)展;第四,通過(guò)應(yīng)用層的配置和管理能夠靈活地定義引擎方案。第一點(diǎn)可以實(shí)現(xiàn)伸縮性的目標(biāo),第二點(diǎn)和第三點(diǎn)對(duì)多樣性的目標(biāo)提供了支持,第四點(diǎn)滿足了靈活性的需求。這樣無(wú)論是流程還是架構(gòu)都能靈活地滿足大型電子商務(wù)系統(tǒng)多樣化的推薦需求。
基于Hadoop的混合電子商務(wù)推薦系統(tǒng)采用適合現(xiàn)代互聯(lián)網(wǎng)應(yīng)用的T/C (Terminal/Cluster)形式架構(gòu)來(lái)實(shí)現(xiàn),其架構(gòu)圖如圖3所示。系統(tǒng)包括兩部分:WebTerminal終端和Hadoop集群。前者是瘦客戶端,只擁有少量的業(yè)務(wù)邏輯,它實(shí)現(xiàn)了推薦系統(tǒng)的配置、管理、交互和展示功能,同時(shí)能將業(yè)務(wù)系統(tǒng)中產(chǎn)生的大規(guī)模數(shù)據(jù)經(jīng)過(guò)一系列的處理后作為Hadoop集群的輸入提交到平臺(tái),以驅(qū)動(dòng)基于Hadoop集群的大規(guī)模數(shù)據(jù)分析;后者是用于實(shí)現(xiàn)大規(guī)模數(shù)據(jù)分析的基礎(chǔ)設(shè)施,它是由許多節(jié)點(diǎn)按照一定的拓?fù)浣Y(jié)構(gòu)組織而成的集群,能夠提供高性能、按需、無(wú)限量的計(jì)算與存儲(chǔ)服務(wù)。經(jīng)過(guò)集群分析得到的結(jié)果再導(dǎo)出到WebTerminal終端,最終反饋并展示給用戶。
圖3 基于Hadoop的混合推薦系統(tǒng)架構(gòu)
WebTerminal端包含數(shù)據(jù)訪問(wèn)層、應(yīng)用層的全部功能和用戶字典、產(chǎn)品字典、靜態(tài)規(guī)則引擎和混合模型部分的實(shí)現(xiàn)。
原始業(yè)務(wù)數(shù)據(jù)存儲(chǔ)在業(yè)務(wù)系統(tǒng)中,通常無(wú)法直接用于推薦分析,其中含有大量的臟數(shù)據(jù)、噪音數(shù)據(jù)和缺失值,為了進(jìn)行有效的分析和處理,需要進(jìn)行抽取、清洗、轉(zhuǎn)換和裝載。數(shù)據(jù)抽取模塊用于實(shí)現(xiàn)上述過(guò)程,從而將數(shù)據(jù)從存儲(chǔ)系統(tǒng)中抽取到Hadoop計(jì)算平臺(tái),如圖4所示。針對(duì)數(shù)據(jù)的異構(gòu)性和多樣性,定義了一個(gè)公共抽取接口DataExtractor來(lái)抽象不同的數(shù)據(jù)抽取邏輯實(shí)現(xiàn)。
圖4 數(shù)據(jù)抽取模塊
同時(shí),利用結(jié)果解析模塊可以實(shí)現(xiàn)將大數(shù)據(jù)分析處理的結(jié)果導(dǎo)回到關(guān)系數(shù)據(jù)庫(kù)的功能,該模塊的實(shí)現(xiàn)如圖5所示。
圖5 結(jié)果解析模塊
Sqoop可以通過(guò)MapReduce框架運(yùn)行任務(wù),實(shí)現(xiàn)關(guān)系型數(shù)據(jù)庫(kù)和HDFS之間的數(shù)據(jù)導(dǎo)入導(dǎo)出[10]。這種方法簡(jiǎn)單方便,但是抽取過(guò)程不夠靈活,因此數(shù)據(jù)抽取模塊和結(jié)果解析模塊可以作為它的有益補(bǔ)充,實(shí)現(xiàn)更細(xì)粒度、更靈活的數(shù)據(jù)遷移功能。
采用了分區(qū)混合、加權(quán)混合和隨機(jī)混合3種不同的混合策略來(lái)實(shí)現(xiàn)混合推薦模型,其中利用設(shè)計(jì)模式中的策略模式來(lái)實(shí)現(xiàn)3種不同的混合策略之間的靈活切換?;旌贤扑]模型的時(shí)序圖如圖6所示,首先是加載混合策略以及相應(yīng)的配置參數(shù),然后依次經(jīng)過(guò)結(jié)果的過(guò)濾、排序、解釋等過(guò)程最終為用戶產(chǎn)生推薦列表。
圖6 混合推薦模型時(shí)序
推薦系統(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ì)算過(guò)程中,分別使用用戶編號(hào)和產(chǎn)品編號(hào)來(lái)唯一索引用戶與產(chǎn)品,利用數(shù)據(jù)字典可以獲得它們的詳細(xì)信息,這對(duì)產(chǎn)生推薦解釋十分重要。在推薦計(jì)算過(guò)程中,使用產(chǎn)品-用戶偏好矩陣來(lái)抽象用戶偏好數(shù)據(jù),該矩陣每個(gè)行向量分別對(duì)應(yīng)同一種產(chǎn)品,每個(gè)列向量分別對(duì)應(yīng)同一個(gè)用戶,每個(gè)矩陣單元格分別表示一個(gè)用戶對(duì)一種產(chǎn)品的偏好取值。
由于篇幅限制,這里以基于Hadoop的協(xié)同過(guò)濾推薦引擎為例介紹基于Hadoop的推薦引擎的實(shí)現(xiàn)。協(xié)同過(guò)濾引擎的核心包括兩個(gè)部分:相似度計(jì)算組件和協(xié)同過(guò)濾算法。
協(xié)同過(guò)濾技術(shù)一般都是基于相似性來(lái)產(chǎn)生推薦結(jié)果,如何定義和度量實(shí)體之間的距離是其關(guān)鍵,采用不同的距離計(jì)算方式無(wú)論是對(duì)算法的效率還是對(duì)推薦結(jié)果的精度都有影響。系統(tǒng)中共實(shí)現(xiàn)了6種不同的分布式相似度計(jì)算組件:歐式距離相似度 (EuclideanSimilarity)、余弦相似度(CosineSimilarity)、 皮 爾 森 相 關(guān) 度 (PearsonSimilarity)、Jaccard系數(shù) (JaccardSimilarity)、對(duì)數(shù)似然相似度 (LoglikelihoodSimilarity)和共現(xiàn)相似度 (CooccurrenceSimilarity)。它們都是針對(duì)向量實(shí)現(xiàn)的適合分布式計(jì)算環(huán)境下的相似度計(jì)算組件,是實(shí)現(xiàn)分布式協(xié)同過(guò)濾的基礎(chǔ)。
采用了基于MapReduce的Item-basedCF算法來(lái)實(shí)現(xiàn)協(xié)同過(guò)濾,該算法包含三步計(jì)算任務(wù):第一步,根據(jù)交易數(shù)據(jù)庫(kù)計(jì)算產(chǎn)品-產(chǎn)品協(xié)同矩陣;第二步,計(jì)算用戶的偏好向量。該向量是偏好矩陣的列向量,向量的每個(gè)分量對(duì)應(yīng)用戶對(duì)每項(xiàng)產(chǎn)品的偏好值;第三步,計(jì)算協(xié)同矩陣和偏好向量的點(diǎn)積,產(chǎn)生該用戶的推薦向量,這也是為該用戶輸出的候選推薦列表。為了基于MapReduce實(shí)現(xiàn)以上計(jì)算任務(wù),需要將其拆分為6個(gè)具體步驟,詳細(xì)的作業(yè)流如圖7所示。這些計(jì)算步驟需要使用總共12個(gè)MapReduceJob來(lái)實(shí)現(xiàn),其算法架構(gòu)圖如圖8所示。這一系列作業(yè)流統(tǒng)一地由RecommenderJob驅(qū)動(dòng)器程序進(jìn)行驅(qū)動(dòng)。
實(shí)驗(yàn)與分析通過(guò)基于Hadoop的混合電子商務(wù)推薦系統(tǒng)中的協(xié)同過(guò)濾引擎產(chǎn)生個(gè)性化推薦過(guò)程來(lái)說(shuō)明系統(tǒng)的功能有效性和面對(duì)大規(guī)模數(shù)據(jù)的伸縮性。
圖7 分布式協(xié)同過(guò)濾算法流程
實(shí)驗(yàn)中采用的Hadoop集群由5個(gè)節(jié)點(diǎn)組成,其中包括1個(gè)Master節(jié)點(diǎn),4個(gè)Slave節(jié)點(diǎn)。每個(gè)節(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)之間通過(guò)100Mbps的網(wǎng)絡(luò)進(jìn)行連接。加速比實(shí)驗(yàn)中,每個(gè)Slave節(jié)點(diǎn)設(shè)置的最大map和reduce任務(wù)支持?jǐn)?shù)都各為2。此時(shí),測(cè)試集群可以并行支持8個(gè)map任務(wù)和8個(gè)reduce任務(wù)。在此,將map任務(wù)數(shù)或reduce任務(wù)數(shù)視為計(jì)算節(jié)點(diǎn)的數(shù)量。通過(guò)調(diào)節(jié)每個(gè)Slave節(jié)點(diǎn)設(shè)置的最大map和reduce任務(wù)支持?jǐn)?shù)來(lái)獲得不同數(shù)量的計(jì)算節(jié)點(diǎn)。實(shí)驗(yàn)中采用評(píng)測(cè)協(xié)同過(guò)濾算法的經(jīng)典數(shù)據(jù)集MovieLens,其中包含6040位用戶、3706部電影和1000209條評(píng)分記錄,數(shù)據(jù)的整體稀疏程度為95.53%。
加速比[11](speedup) 和恒等效率伸縮性[12](isoefficiency)是評(píng)估并行系統(tǒng)的效率和伸縮性的兩個(gè)重要的定量分析指標(biāo)。前者評(píng)估固定問(wèn)題規(guī)模下隨著計(jì)算節(jié)點(diǎn)數(shù)增加運(yùn)行性能的變化情況;后者使用恒等效率函數(shù)來(lái)評(píng)估評(píng)估當(dāng)問(wèn)題規(guī)模增大時(shí)算法的性能。
(1)加速比性能分析:Amdahl定律是一種常用的固定規(guī)模加速比性能模型。它采用如下的公式計(jì)算加速比Sp,其中T表示使用單個(gè)計(jì)算節(jié)點(diǎn)時(shí)的算法執(zhí)行時(shí)1間,Tp表示使用p個(gè)計(jì)算節(jié)點(diǎn)時(shí)的并行執(zhí)行時(shí)間。
圖8 分布式協(xié)同過(guò)濾算法架構(gòu)
若算法具有伸縮性,則當(dāng)問(wèn)題規(guī)模固定時(shí),加速比與計(jì)算節(jié)點(diǎn)數(shù)存在線性關(guān)系。從圖9可看出,在4種不同的數(shù)據(jù)集大小 (10K、100K、1M、10M)下,加速比與計(jì)算節(jié)點(diǎn)個(gè)數(shù)的增加近似成正比。同時(shí),還可發(fā)現(xiàn)當(dāng)數(shù)據(jù)集更大時(shí)可以獲得更好的加速比。由此可見,基于Hadoop的協(xié)同過(guò)濾算法在處理更大規(guī)模的數(shù)據(jù)集的時(shí)候有更好的加速比。
圖9 Item-basedCF算法的加速比
(2)伸縮性分析:Isoefficiency指標(biāo)可以通過(guò)如下的公式來(lái)計(jì)算
式中:T0——并行執(zhí)行過(guò)程中的通信代價(jià)。
如果算法具有伸縮性,運(yùn)行結(jié)果能保持Ep為常量。當(dāng)Ep為常量時(shí),T1=fE(P)=kP,其中P表示計(jì)算節(jié)點(diǎn)數(shù),因此fE(P)是一個(gè)線性函數(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個(gè)不同的固定計(jì)算時(shí)間 (10min、20min、30min)時(shí),計(jì)算節(jié)點(diǎn)數(shù)隨著數(shù)據(jù)規(guī)模增長(zhǎng)同步線性增長(zhǎng)。同時(shí),還可以發(fā)現(xiàn),當(dāng)設(shè)置的運(yùn)行時(shí)間越長(zhǎng),算法具有越好的伸縮性能。
綜上所述,實(shí)驗(yàn)表明基于Hadoop的電子商務(wù)推薦系統(tǒng)在執(zhí)行協(xié)同過(guò)濾時(shí)具有較好的伸縮性和性能。
Gong[13]針對(duì)協(xié)同過(guò)濾推薦技術(shù)存在的數(shù)據(jù)稀疏性問(wèn)題,采用了關(guān)聯(lián)規(guī)則挖掘和User-based協(xié)同過(guò)濾兩種技術(shù)實(shí)現(xiàn)個(gè)性化的推薦系統(tǒng),該研究表明利用不同的推薦技術(shù)可以互補(bǔ)各自的不足之處。
圖10 時(shí)間固定時(shí),節(jié)點(diǎn)個(gè)數(shù)與數(shù)據(jù)規(guī)模的效率函數(shù)
Zhao[14]針對(duì) User-based協(xié)同過(guò)濾算法的伸縮性問(wèn)題,實(shí)現(xiàn)了基于Hadoop平臺(tái)的User-based協(xié)同過(guò)濾算法,從而實(shí)現(xiàn)算法的線性伸縮。
MyMediaLite[15]作為一個(gè)輕量級(jí)多功能的推薦系統(tǒng)算法庫(kù),它解決了兩種最常見的協(xié)同過(guò)濾場(chǎng)景:評(píng)分預(yù)測(cè)和基于隱式反饋的預(yù)測(cè),提供了常見推薦算法的高效和易伸縮的版本實(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)用層靈活配置引擎方案,同時(shí)易于擴(kuò)展以支持更多的算法、策略和引擎。結(jié)合Hadoop的分布式計(jì)算的潛力和混合推薦的優(yōu)勢(shì),構(gòu)建具有高伸縮性、靈活性和多樣性的推薦系統(tǒng),能夠有效地解決大型電子商務(wù)系統(tǒng)中的信息過(guò)載問(wèn)題,為電子商務(wù)企業(yè)在數(shù)據(jù)驅(qū)動(dòng)的個(gè)性化消費(fèi)時(shí)代產(chǎn)生持續(xù)的競(jìng)爭(zhēng)優(yōu)勢(shì)。
[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.