焦亞琴 劉曉云 張銀葉
摘要:互聯(lián)網(wǎng)技術(shù)的發(fā)展把電子商務(wù)帶入了海量數(shù)據(jù)時(shí)代,這種“信息過載”現(xiàn)象不但沒有給信息檢索帶來便利,反而帶來了不少困惑。個(gè)性化推薦系統(tǒng)正是解決這一問題的有效手段之一。傳統(tǒng)的研究主要側(cè)重推薦算法等理論研究,并沒有考慮到實(shí)際系統(tǒng)的開發(fā)難度問題。本文從實(shí)際應(yīng)用出發(fā)結(jié)合開源框架Mahout來設(shè)計(jì)與實(shí)現(xiàn)推薦系統(tǒng),首先對(duì)Mahout源碼相關(guān)知識(shí)進(jìn)行分析,研究Mahout推薦引擎的源碼實(shí)現(xiàn)以及使用方式,然后采用MVC設(shè)計(jì)模式設(shè)計(jì)了整個(gè)系統(tǒng)架構(gòu)和平臺(tái)開發(fā)的技術(shù)路線,最后結(jié)合javaEE技術(shù)實(shí)現(xiàn)了整個(gè)系統(tǒng)功能并進(jìn)行了實(shí)驗(yàn)分析。
關(guān)鍵詞:電子商務(wù);推薦系統(tǒng);個(gè)性化;Mahout;系統(tǒng)設(shè)計(jì)
中圖分類號(hào):TP393 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2015)11-0261-04
Research on Personalized Recommendation System of E-commerce based on Mahout
JIAO Ya-qin1, LIU Xiao-yun1, ZHANG Yin-ye2
(1.School of Business, Anhui University, Hefei 230601, China; 2.Automation Department, University of Science and Technology of China, Hefei 230027, China)
Abstract: E-commerce has come into the era of massive data with the development of Internet technology, this " information overload" phenomenon not only failed to bring convenience to the information of find, but also brings a lot of confusion. Personalized recommendation system is one of effective means to solve this problem, traditional research mainly focuses on the recommendation algorithm research, does not take the difficulty of the problem of the actual system development into account. In this paper, design and implement a recommendation system with Mahout open source framework. Firstly, analysis Mahout with open source, study on the implementation and use of the recommendation engine. Secondly using the MVC design pattern to design the entire system and design the technology road map for development system. Finally, implementation the entire system with javaEE technology, and analysis of experiments based on open data sets .
Key words: E-commerce; recommended system; personalized; mahout; system design
隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,電子商務(wù)已經(jīng)進(jìn)入海量數(shù)據(jù)時(shí)代,這一變化卻讓人感覺到知識(shí)匱乏[1],原因是從海量數(shù)據(jù)里檢索感興趣的信息會(huì)花費(fèi)較多的時(shí)間,而且檢索過程不再跟以前一樣簡單。這種情況促進(jìn)了個(gè)性化推薦系統(tǒng)(Personalized Recommendation System,PRS)的產(chǎn)生,其能根據(jù)歷史內(nèi)容自動(dòng)提供相關(guān)信息給用戶。
電子商務(wù)是互聯(lián)網(wǎng)技術(shù)迅速發(fā)展的必然產(chǎn)物[2],隨著網(wǎng)絡(luò)技術(shù)和信息技術(shù)的不斷發(fā)展,電子商務(wù)也得到了蓬勃的發(fā)展。當(dāng)人們?cè)谙硎茈娮由虅?wù)帶來方便的時(shí)候,卻出現(xiàn)了一些新的問題,一方面,出現(xiàn)了“信息過載”現(xiàn)象,另一方面,商家與消費(fèi)者失去了當(dāng)面溝通的機(jī)會(huì)。個(gè)性化服務(wù)能預(yù)測(cè)潛在的需求,提供針對(duì)性服務(wù),讓客戶與商家雙贏,目前PRS已經(jīng)成為解決上面兩個(gè)問題的一種有效手段。PRS能搜集用戶歷史信息,然后根據(jù)其從互聯(lián)網(wǎng)海量信息里尋找潛在的資源,最后為用戶提供個(gè)性化推薦功能。推薦實(shí)際是根據(jù)歷史信息,判斷用戶將來估計(jì)會(huì)感興趣的資源,并將其展示給用戶。
目前推薦系統(tǒng)研究成果已經(jīng)應(yīng)用到很多領(lǐng)域,雖然經(jīng)過多年的發(fā)展,還是存在擴(kuò)展性、稀疏性等問題。國內(nèi)對(duì)PRS的研究絕大多數(shù)是停留在對(duì)算法本身的研究與改進(jìn)上,更側(cè)重理論研究,雖然有的算法在理論上得到了很好的提升,但是并沒有考慮到實(shí)際的編碼工作,這給開發(fā)系統(tǒng)帶來了很大的難度。本文并沒有依據(jù)傳統(tǒng)的研究方式,而是從工程實(shí)際出發(fā),真正的把推薦功能應(yīng)用到電子商務(wù)中;本文結(jié)合了開源的Mahout來開發(fā)系統(tǒng),減少了編碼工作量,同時(shí)利于系統(tǒng)的擴(kuò)展;設(shè)計(jì)系統(tǒng)采用“B/S架構(gòu)”,服務(wù)器上存放著數(shù)據(jù),業(yè)務(wù)數(shù)據(jù)不需要保存在客戶端,這樣就解決了數(shù)據(jù)安全性問題,每一筆交易都直接進(jìn)入數(shù)據(jù)庫,解決了數(shù)據(jù)一致性問題,客戶端能更新實(shí)時(shí)數(shù)據(jù),從而提高了系統(tǒng)的實(shí)時(shí)性;本系統(tǒng)為提高用戶體驗(yàn)而將推薦結(jié)果設(shè)計(jì)為可視化界面。
1 相關(guān)研究
1.1 推薦系統(tǒng)的作用
1)對(duì)消費(fèi)者的作用
目前,個(gè)性化電子商務(wù)推薦系統(tǒng)的作用和意義主要是針對(duì)供應(yīng)商,然而,推薦系統(tǒng)的真正使用者是消費(fèi)者,只有消費(fèi)者認(rèn)可才能產(chǎn)生它應(yīng)有的作用。如果根據(jù)消費(fèi)者的互聯(lián)網(wǎng)瀏覽歷史來向其推薦物品當(dāng)作是對(duì)消費(fèi)者作出的一項(xiàng)決策,將會(huì)產(chǎn)生如下作用。
縮短決策時(shí)間。在購物決策方面體現(xiàn)的尤其明顯。消費(fèi)者可能盲目的在互聯(lián)網(wǎng)中搜索產(chǎn)品或輸入關(guān)鍵字搜索,但仍然是面向海量、異構(gòu)的商品。推薦系統(tǒng)則可以依據(jù)消費(fèi)者的歷史購物信息或偏好推薦最為匹配的物品,在有限的商品里尋找到最中意的物品會(huì)變得容易。
提高決策質(zhì)量。在信息查找決策方面體現(xiàn)的尤其明顯。信息質(zhì)量的高低是利用信息的基礎(chǔ),面對(duì)“信息過載”現(xiàn)象,推薦系統(tǒng)充當(dāng)過濾器作用,幫助快而準(zhǔn)的找到最適合的信息,從而避免大海撈針。
2 )對(duì)供應(yīng)商的作用
提高消費(fèi)者對(duì)供應(yīng)商的忠誠度。一個(gè)高效運(yùn)行的電子商務(wù)系統(tǒng)總是能讓消費(fèi)者快速找到自己需要的資源、從而作出決策,只有提供友好的用戶體驗(yàn)的系統(tǒng)才能獲得消費(fèi)者持久支持。推薦系統(tǒng)分析用戶的歷史信息,根據(jù)不同情況向用戶提供具體有價(jià)值的推薦。若推薦效果很好,那么消費(fèi)者會(huì)在一定程度上依賴該推薦系統(tǒng)。
提高利潤和交叉銷售能力。推薦系統(tǒng)在一定程度上能幫助商家將潛在的客戶轉(zhuǎn)化為實(shí)際的客戶,比如網(wǎng)站的瀏覽者,通過追蹤瀏覽痕跡再實(shí)時(shí)適當(dāng)為其推薦合適物品。推薦系統(tǒng)在另外一種程度上還有效提高了交叉銷售能力,現(xiàn)實(shí)中主要借助CRM(客戶關(guān)系管理)進(jìn)行交叉銷售,發(fā)現(xiàn)顧客的需求,并通過滿足其需求而附帶銷售多種相關(guān)服務(wù)。推薦系統(tǒng)很好的充當(dāng)了“銷售員”的作用,其在幫助消費(fèi)者完成購買的同時(shí)推薦那些確實(shí)需要但在購物過程中可能忽略的物品。
1.2 推薦系統(tǒng)面臨的挑戰(zhàn)
結(jié)果的解釋。推薦系統(tǒng)就是以向用戶推薦與其興趣符合的物品為目的,需要對(duì)結(jié)果進(jìn)行說明,但是目前的主要解釋方式有其他用戶的評(píng)價(jià)與銷售排行,這些能說明推薦結(jié)果,然而說服力不強(qiáng),所以需要進(jìn)一步研究解釋方式。
實(shí)時(shí)性與推薦質(zhì)量。實(shí)時(shí)性和推薦質(zhì)量是相互矛盾的,一般情況下實(shí)時(shí)推薦是以犧牲推薦質(zhì)量為代價(jià)的,提高推薦質(zhì)量往往是以實(shí)時(shí)性為代價(jià)的,所以如何在二者之間達(dá)到平衡亟待解決。
靈活性?,F(xiàn)階段推薦系統(tǒng)結(jié)構(gòu)比較單一,隨著用戶多樣性變化與電子商務(wù)的發(fā)展,要求電子商務(wù)推薦模型能適應(yīng)這種需求的變化。
1.3 Mahout簡介
本文系統(tǒng)設(shè)計(jì)使用的是Mahout,其為Apache Software Foundation旗下的一個(gè)開源項(xiàng)目[4],其提供了一些金典算法實(shí)現(xiàn)用于機(jī)器學(xué)習(xí)領(lǐng)域,能幫助快速開發(fā)智能處理應(yīng)用系統(tǒng)。本文之所以使用Mahout是因?yàn)槠洳粌H提供了推薦(Recommendation)模塊的實(shí)現(xiàn)還增加了對(duì)Hadoop的支持[5],這樣便于將來擴(kuò)展系統(tǒng)到云計(jì)算的環(huán)境里。分析源碼可以得出結(jié)論,引擎主要由數(shù)據(jù)模型模塊、近鄰算法模塊、相似度算法模塊、推薦算法模塊和算法評(píng)分器等模塊組成。數(shù)據(jù)處理能力方面,Mahout提供了單機(jī)算法實(shí)現(xiàn)的同時(shí)還提供了基于Hadoop的分布式實(shí)現(xiàn)。單機(jī)版由Taste項(xiàng)目實(shí)現(xiàn),主要的UserCF、ItemCF都支持單機(jī)運(yùn)行,但是存在內(nèi)存數(shù)量有限、數(shù)據(jù)瓶頸等問題。分布式算法是把內(nèi)存算法并行化,通過多臺(tái)計(jì)算機(jī)一起來完成任務(wù),但是也存在網(wǎng)絡(luò)通信、數(shù)據(jù)合并和存儲(chǔ)等問題。
1.4 開發(fā)程序的流程
研究源碼可知算法是按照模塊化設(shè)計(jì)來實(shí)現(xiàn)的,這樣減少了開發(fā)的工作量,其中數(shù)據(jù)模型模塊是用戶偏好的接口抽象,其實(shí)現(xiàn)支持從任意數(shù)據(jù)源抽取偏好信息,Taste支持從文件和數(shù)據(jù)庫讀取偏好信息。相似度模塊是推薦引擎的核心部分,其定義了兩個(gè)用戶間的相似度。在UserCF算法里,推薦的工作是找到與當(dāng)前用戶偏好相似的鄰居用戶。推薦模塊是推薦引擎的接口抽象,Taste項(xiàng)目里其實(shí)現(xiàn)類有GenericUserBasedRecommender和GenericItemBasedRecommender,為其提供一個(gè)DataModel,它就可以計(jì)算出不同用戶的推薦內(nèi)容。
1.5 相似度算法實(shí)現(xiàn)
1)數(shù)據(jù)模型實(shí)現(xiàn)
DataModel是數(shù)據(jù)模型的抽象,數(shù)據(jù)是進(jìn)行推薦的基礎(chǔ),Mahout支持匹配不同的數(shù)據(jù)源,包括文件、SQL數(shù)據(jù)庫與NOSQL數(shù)據(jù)庫。Mahout支持兩種具體的數(shù)據(jù)文件格式。GenericDataModel:用戶ID,物品ID,偏好(用戶對(duì)物品的評(píng)分值)。GenericBooleanPrefDataModel:用戶ID,物品ID。把這些數(shù)據(jù)文件按照規(guī)定的文件格式存儲(chǔ)供引擎調(diào)用進(jìn)行推薦。
2) 基于用戶相似度算法
UserCF算法度量用戶間的相似度主要通過不同用戶對(duì)物品的偏好不同,然后依據(jù)相關(guān)性給出推薦結(jié)果,即給用戶推薦其相似用戶喜好的物品。UserCF的算法相對(duì)簡單,首先利用用戶對(duì)某物品的偏好找到相似鄰居,然后把相似鄰居的喜好物品推薦給該用戶,實(shí)際計(jì)算的過程就是把用戶對(duì)物品的偏好以向量的形式保存。再計(jì)算與其它用戶之間的相似度,找出距離最小的鄰居后,根據(jù)相似度與偏好值來預(yù)測(cè)該用戶目前還沒有偏好的物品,最后將得到的推薦結(jié)果展示給用戶。Mahout提供了完整的UserCF算法實(shí)現(xiàn)。
3 )基于物品相似度算法
ItemCF評(píng)價(jià)Item之間的相似性主要通過用戶對(duì)不同物品的偏好不同,然后根據(jù)偏好值之間的相似性來推薦,也就是根據(jù)用戶的喜好推薦類似的物品。ItemCF與UserCF具有一定的相似性,其利用用戶對(duì)物品偏好值數(shù)據(jù)來計(jì)算物品之間相似度,得到相似的物品以后,預(yù)測(cè)那些用戶還沒有表示偏好的物品,把推薦結(jié)果呈現(xiàn)給用戶。Mahout實(shí)現(xiàn)了完整的ItemCF算法實(shí)現(xiàn)。
4) 相似度距離計(jì)算
上面兩個(gè)算法都會(huì)使用到相似度的計(jì)
算,Mahout通過了大量的相似度計(jì)算實(shí)現(xiàn),可以根據(jù)具體的使用情況進(jìn)行選擇。其中歐式距離:[d(x,y)=(xi-yi)2],該距離計(jì)算方法沒有考慮數(shù)據(jù)重疊對(duì)結(jié)果的影響[6],Mahout利用枚舉類來解決這個(gè)問題。皮爾森相似度:
[p(x,y)=nxiyi-xiyinxi2-(xi)2nyi2-(yi)2],使用該相似度計(jì)算的前提是數(shù)據(jù)滿足正態(tài)分布,且數(shù)據(jù)是等間距的,Mahout同樣使用枚舉參數(shù)來解決這個(gè)問題。當(dāng)對(duì)數(shù)據(jù)進(jìn)行中心化以后余弦相似度與皮爾森相似度計(jì)算結(jié)果是一樣的。秩相關(guān)系數(shù)相似度存在大量的排序,計(jì)算非常慢,所以一般不采用。Tanimoto相似度:[t(x,y)=xiyix2i+y2i-xiyi],專門負(fù)責(zé)處理沒有偏好的數(shù)據(jù)。根據(jù)上面的分析,計(jì)算相似度要根據(jù)具體的情況選擇合適的實(shí)現(xiàn)。
2 系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
2.1 系統(tǒng)設(shè)計(jì)
本文采用“B/S”架構(gòu)來設(shè)計(jì)這個(gè)個(gè)性化推薦系統(tǒng),能支持多用戶的并發(fā)使用情況,采用了分層的形式來設(shè)計(jì)系統(tǒng),本文設(shè)計(jì)的系統(tǒng)的總體示意圖如圖1。系統(tǒng)包含五個(gè)層面,從下往上分別是底層數(shù)據(jù)源層、數(shù)據(jù)集成層、數(shù)據(jù)庫操作層、業(yè)務(wù)邏輯層和用戶界面層。這些層按照它們?cè)谙到y(tǒng)的功能來分層設(shè)計(jì),各自實(shí)現(xiàn)自己的功能與接口,通過分層來設(shè)計(jì)有利于系統(tǒng)的擴(kuò)展。
圖1 系統(tǒng)示意圖
本文采用Java語言結(jié)合開源框架來實(shí)現(xiàn)系統(tǒng),為了復(fù)用代碼,采用模塊化設(shè)計(jì)方法實(shí)現(xiàn)。其實(shí)現(xiàn)結(jié)構(gòu)圖如圖2所示。
圖2 系統(tǒng)結(jié)構(gòu)圖
根據(jù)圖2可知,系統(tǒng)采用的是MVC的設(shè)計(jì)模式,表現(xiàn)層使用的是JSF開源框架,控制層主要是通過Spring來管理各種Bean,持久化層使用的是ORM框架Hibernate,為了提高系統(tǒng)可視化功能,把PrimeFaces的圖形模塊引入系統(tǒng)的設(shè)計(jì)。
2.2 系統(tǒng)實(shí)現(xiàn)
本文使用課題組某電商平臺(tái)區(qū)域數(shù)據(jù)集進(jìn)行實(shí)驗(yàn),其中包含10000用戶、6000件物品名字和100萬偏好值,用戶對(duì)物品的偏好值是取自1~5范圍的整數(shù)值,取值越大也就說明用戶對(duì)該物品的喜好程度越大。偏好數(shù)據(jù)格式為:物品編號(hào)(goodsID),用戶編號(hào)(userID),時(shí)間(timestamp),偏好值(preference)。由于數(shù)據(jù)都存儲(chǔ)在數(shù)據(jù)庫里,對(duì)持久層數(shù)據(jù)進(jìn)行數(shù)據(jù)庫的優(yōu)化設(shè)計(jì)與導(dǎo)入相關(guān)數(shù)據(jù),最后按照前面的設(shè)計(jì)實(shí)現(xiàn)了系統(tǒng)要求的功能。
3 實(shí)驗(yàn)分析
目前主要有兩種方式評(píng)價(jià)推薦系統(tǒng)[7],一種是決策支持精度度量方法,另外一種是統(tǒng)計(jì)精度度量方法。前者通過系統(tǒng)推薦給用戶的項(xiàng)目對(duì)用戶實(shí)際有效性來度量,其常見的指標(biāo)有:召回率(Recall)和精確度(Precision),設(shè)S為原始數(shù)據(jù)集,R為推薦數(shù)據(jù)集合。則精確度的計(jì)算公式:[preision=S?RR],召回率的計(jì)算公式:[recall=S?RS],其實(shí)兩個(gè)指標(biāo)是相互矛盾的,實(shí)際使用是把兩個(gè)指標(biāo)賦予相同權(quán)重。后者通過計(jì)算系統(tǒng)項(xiàng)目評(píng)分值與實(shí)際評(píng)分值的差來度量,常見指標(biāo)有:均方根誤差(RMSE)、平均絕對(duì)誤差(MAE)和標(biāo)準(zhǔn)化平均絕對(duì)誤差(NMAE),MAE由于計(jì)算簡單還能直觀對(duì)系統(tǒng)進(jìn)行度量得到了廣泛的使用,設(shè)集合[{p1,p2,...,pn}]為系統(tǒng)給用戶推薦的項(xiàng)目評(píng)分值,其中[pi]為用戶對(duì)第[i]個(gè)項(xiàng)目的預(yù)測(cè)評(píng)分,集合[{q1,q2,...,qn}]為用戶對(duì)項(xiàng)目的實(shí)際評(píng)分值,則MAE的計(jì)算公式:[MAE=i=1npi-qin],其中[i=1,2,3,...n]。MAE值越小表明推薦質(zhì)量越高。本文在實(shí)驗(yàn)數(shù)據(jù)集的基礎(chǔ)上得到了不同鄰居數(shù)下的MAE值如下表1所示。
表1 實(shí)驗(yàn)MAE值
[
鄰居數(shù) MAE\&UserCF\&ItemCF\&10\&0.878\&0.876\&20\&0.874\&0.873\&30\&0.875\&0.870\&40\&0.870\&0.868\&50\&0.868\&0.863\&60\&0.864\&0.860\&70\&0.858\&0.855\&80\&0.854\&0.851\&90\&0.844\&0.843\&100\&0.834\&0.832\&]
根據(jù)上表可知隨著鄰居數(shù)目增大,MAE只逐漸減小,推薦精度逐漸增加,根據(jù)實(shí)驗(yàn)結(jié)果可知此數(shù)據(jù)集更適合ItemCF算法。
4 總結(jié)與展望
本文分析了電子商務(wù)的發(fā)展趨勢(shì)、作用和面臨的挑戰(zhàn),在此基礎(chǔ)上分析了推薦系統(tǒng)。本文在開源Mahout的基礎(chǔ)上結(jié)合MVC設(shè)計(jì)模式設(shè)計(jì)了一個(gè)電子商務(wù)推薦系統(tǒng)。對(duì)Mahout源碼相關(guān)知識(shí)進(jìn)行了分析,并對(duì)利用Mahout開發(fā)應(yīng)用程序以及推薦引擎在整個(gè)推薦系統(tǒng)的結(jié)構(gòu)與作用進(jìn)行了研究,對(duì)系統(tǒng)進(jìn)行了模塊化的設(shè)計(jì),并對(duì)實(shí)現(xiàn)過程的技術(shù)路線進(jìn)行了設(shè)計(jì),采用JavaEE技術(shù)實(shí)現(xiàn)了本文設(shè)計(jì)的系統(tǒng),并且對(duì)系統(tǒng)進(jìn)行了驗(yàn)證。本文并不是按照傳統(tǒng)的研究方法來對(duì)推薦算法進(jìn)行研究,而是從工程實(shí)際出發(fā),主要是從快速開發(fā)系統(tǒng)和用戶體驗(yàn)等角度來考慮系統(tǒng)的設(shè)計(jì),真正的快速地把推薦功能應(yīng)用到電子商務(wù),Mahout提供了分布式版本,便于把系統(tǒng)擴(kuò)展到云平臺(tái)下。后期主要的研究方向是把更多的推薦算法應(yīng)用到系統(tǒng),把系統(tǒng)遷移至云平臺(tái)下[8],提高系統(tǒng)基于大數(shù)據(jù)推薦能力。
參考文獻(xiàn):
[1] 李琪. 電子商務(wù)概論[M]. 北京:高等教育出版社,2009.
[2] 陳發(fā)鴻.電子商務(wù)發(fā)展與政府應(yīng)對(duì)策略[J]. 企業(yè)經(jīng)濟(jì),2011(11):138-140.
[3] Liu R R, Jia C X, Zhou T. Personal recommendation via modified collaborative filtering[J]. Physic A, 2009,388:462-468.
[4] Anil R,Dunning T,F(xiàn)riedman E. Mahout in action[M]. Manning,2011:28-35.
[5] 董西成. Hadoop 技術(shù)內(nèi)幕:深入解析MapReduce架構(gòu)設(shè)計(jì)與實(shí)現(xiàn)原理[M]. 北京:機(jī)械工業(yè)出版社,2013:32-36.
[6] 項(xiàng)亮. 推薦系統(tǒng)實(shí)踐[M]. 北京:人民郵電出版社,2012:37-40.
[7] Sarwar B,Karypis G,Konstan J,et al.Item-based collaborative filteringre commendation algorithms. In: Proceedings of the 10th International Conference on WorldWide Web. New York: ACM Press,2001:285-295.
[8] 尹小明. 基于價(jià)值網(wǎng)的云計(jì)算商業(yè)模式研究[D]. 北京: 北京郵件大學(xué), 2009.