陶維成 王婷婷 姚 琪
(1.蕪湖職業(yè)技術(shù)學(xué)院信息工程系,安徽 蕪湖 241006;2.南京航空航天大學(xué)經(jīng)濟(jì)與管理學(xué)院,南京 210016)
自1992年Goldberg D等人提出首個(gè)基于協(xié)同過濾的推薦系統(tǒng)以來,信息化技術(shù)個(gè)性化服務(wù)得到了快速發(fā)展。Web技術(shù)和網(wǎng)絡(luò)通信技術(shù)的深入發(fā)展,也促進(jìn)了推薦系統(tǒng)的應(yīng)用領(lǐng)域,拓展了推薦系統(tǒng)的應(yīng)用平臺(tái)。推薦系統(tǒng)是建立在用戶、項(xiàng)目及用戶對項(xiàng)目的評(píng)價(jià)基礎(chǔ)上,針對“信息過載”問題,對其進(jìn)行處理、挖掘,找到相似的用戶或項(xiàng)目,利用用戶或項(xiàng)目的相似性,實(shí)現(xiàn)向用戶推薦其感興趣和所需要的項(xiàng)目。Apache Mahout是 ASF(Apache Software Foundation)一個(gè)實(shí)現(xiàn)可擴(kuò)展的機(jī)器學(xué)習(xí)算法程序庫的開源項(xiàng)目,提供機(jī)器學(xué)習(xí)領(lǐng)域的一些經(jīng)典算法的高效實(shí)現(xiàn)。推薦系統(tǒng)利用信息過濾技術(shù),將不同的內(nèi)容(如電影、音樂、書籍、商品、新聞、圖片等)推薦給對其可能感興趣的用戶[1-2]。同時(shí),將用戶的個(gè)人偏好與特定的參考特征進(jìn)行比較,并預(yù)測用戶對一些未評(píng)分項(xiàng)目的偏好程度實(shí)現(xiàn)向用戶自動(dòng)推薦,從項(xiàng)目本身提供的信息或從用戶所在的社區(qū)或社團(tuán)環(huán)境選取特定的參考特征[3]。
本研究基于Mahout環(huán)境創(chuàng)建布爾推薦系統(tǒng)原型,旨在幫助開發(fā)者更高效地實(shí)現(xiàn)個(gè)性化推薦功能,提高用戶滿意度。所創(chuàng)建的推薦系統(tǒng),使用shell控制臺(tái)執(zhí)行指令,在Ubuntu10.04平臺(tái)上運(yùn)行,也能夠在大多數(shù)Linux版本及裝有cygwin的windows平臺(tái)上運(yùn)行。
在創(chuàng)建推薦系統(tǒng)之前,首先應(yīng)準(zhǔn)備好開發(fā)環(huán)境。本文的開發(fā)實(shí)驗(yàn)環(huán)境安裝步驟如下:
(1)準(zhǔn)備開發(fā)實(shí)驗(yàn)工具及安裝。操作系統(tǒng):Ubuntu10.04,JDK 1.6以上版本,Hadoop,Mahout,Maven及其他工具.進(jìn)入到Mahout目錄下。命令如下:
(2)安裝注意事項(xiàng)。如果安裝失敗,試著進(jìn)行修復(fù)。命令如下:
一般情況在 coretargetsurefire - reports下能夠找出問題產(chǎn)生的原因。
成功安裝Mahout后,可以嘗試執(zhí)行Mahout內(nèi)置的例子,檢驗(yàn)所構(gòu)建的開發(fā)平臺(tái)是否可以進(jìn)行開發(fā)實(shí)驗(yàn)。成功運(yùn)行Mahout內(nèi)置示例之后,即可用自己的數(shù)據(jù)創(chuàng)建推薦系統(tǒng)。
到Mahout目錄下(core目錄的父目錄)創(chuàng)建Maven工程:
通過mvn工具創(chuàng)建名為mahoutrec的空工程,包命名空間為com.unresyst;接下來,到mahoutrec目錄下,運(yùn)行所創(chuàng)建的新工程:
如果第二行命令沒有通過-e選項(xiàng),應(yīng)設(shè)法找出錯(cuò)誤所在。
從工程目錄(mahoutrec)打開pom.xml文件,配置依賴關(guān)系如下:
添加 Mahout依賴關(guān)系到 pom.xml中,<dependency>必須在父元素<dependencies>下面:
如果所使用的版本不是0.4,用安裝的版本號(hào)替換0.4。
在<parent>元素下,添加<relativePath>設(shè)置
相對路徑
<relativePath >..pom.xml< relativePath >
配置完成的pom.xml如下所示:
■ 對工程進(jìn)行編譯:
編譯成功,則顯示“Build sccessful”的消息。
經(jīng)過上述步驟后,基于Mahout平臺(tái)的推薦系統(tǒng)所需要的開發(fā)運(yùn)行環(huán)境構(gòu)建完成。在工程目錄下創(chuàng)建 datasets目錄,在該目錄下創(chuàng)建 dummybool.csv文件,文件數(shù)據(jù)內(nèi)容如表1所示。
表1 用戶商品數(shù)據(jù)
表1中,如果用戶表示對商品(項(xiàng)目)進(jìn)行了評(píng)價(jià),則對應(yīng)相應(yīng)的商品ID,表示用戶的布爾偏好(boolean preferences)。當(dāng)沒有明確的用戶(user)-商品(item)評(píng)級(jí)(ratings)時(shí),用布爾型表示,構(gòu)成布爾型推薦系統(tǒng)。上述dummy-bool.csv文件中表示用戶1瀏覽了商品3和商品4,用戶2瀏覽了商品44和46。以此類推,如表2所示。
表2 用戶-商品-評(píng)級(jí)表
在工程目錄的子目錄下 srcmaincomunresyst創(chuàng)建名叫UnresystBoolRecommend.java文件:
在主函數(shù)中,創(chuàng)建一個(gè)數(shù)據(jù)模型(data model),實(shí)例化Slope One recommender,在數(shù)據(jù)集中迭代所有用戶并輸出所推薦的(商品)信息。
上述代碼完成后,執(zhí)行如下命令進(jìn)行編譯:
結(jié)束時(shí)出現(xiàn)BUILD SUCCESSFUL表示編譯成功.然后運(yùn)行主函數(shù):
推薦系統(tǒng)向用戶1推薦商品5,確定值1.0(對于布爾推薦系統(tǒng)而言是一個(gè)常量值),向用戶2推薦商品5和商品3,等等。
本文利用Mahout提供的基于用戶和項(xiàng)目的布爾型推薦算法,構(gòu)建了一個(gè)布爾型推薦系統(tǒng)原型,并對其進(jìn)行了測試。由于Mahout的目標(biāo)是一個(gè)可伸縮的機(jī)器學(xué)習(xí)算法庫,與Hadoop相結(jié)合實(shí)現(xiàn)分布式并行計(jì)算,通過MapReduce實(shí)現(xiàn)對大數(shù)據(jù)集的處理。使用Hadoop和Mahout可以快速設(shè)計(jì)和開發(fā)出數(shù)據(jù)處理能力強(qiáng)、功能強(qiáng)大的企業(yè)級(jí)推薦系統(tǒng)。
[1]Sean Owen,Robin Anil,Ted Dunning,Ellen Friedman.Mahout in Action[M].New York:Manning Publications Co.2012.
[2]Goldberg D,Nichols D,Oki B,Terry D.Using Collaborative Filtering to Weave an Information Tapestry[J].Communications of the ACM,1992,35(12):61 -70.
[3]Adomavicius G,Tuzhilin A.Towards the next generation of recommender systems:A survey of the state-of-the-art and possible extensions[J].IEEE Trans.on Knowledge and Data Engineering(TKDE),2005,17(6):734 -749.