許挺娟
摘要:傳統(tǒng)的協(xié)同過濾推薦((Collaborative Filtering,CF)算法是目前應(yīng)用最廣泛的一種推薦算法,但是由于CF存在稀疏性、冷啟動(dòng)等問題,所以本文提出了基于mahout的CF算法。結(jié)果表明,相比較傳統(tǒng)的兩種CF算法,使用基于mahout的CF算法能夠提升推薦時(shí)間和推薦精度。
關(guān)鍵詞:協(xié)同過濾;mahout;推薦算法;Taste引擎
中圖分類號(hào):TP312 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1007-9416(2019)06-0133-02
0 引言
目前,由百度、谷歌所推出的推薦引擎已經(jīng)被廣泛應(yīng)用,但是推薦引擎是大眾性的,不具有個(gè)性化特點(diǎn)。所以推薦系統(tǒng)就由此產(chǎn)生。推薦方法主要包括三種:基于內(nèi)容的推薦算法、基于模型的推薦和協(xié)同過濾推薦。協(xié)同過濾方法是上述推薦方法中應(yīng)用最為廣泛的,但是它還是有很多問題需要解決的。如稀疏性問題(Sparsity)、可擴(kuò)展性問題(Scalability)等。本文提出了基于Ambari平臺(tái)的協(xié)同過濾推薦算法。基于MovieLens數(shù)據(jù)集的實(shí)驗(yàn)表明,本文算法很好地解決了協(xié)同過濾的問題,同時(shí)提高了推薦精度及響應(yīng)時(shí)間。
1 相關(guān)技術(shù)
1.1 Ambari
Ambari是Apache下的一種基于Web的工具,所以他支持Apache下的大多數(shù)服務(wù),就本文來說,最重要的是mahout框架,mahout提供了一系列經(jīng)典的機(jī)器學(xué)習(xí)算法。其中Taste引擎提供了一系列的組件,這樣我們就可以使用Mahout中的Taste幫助構(gòu)建推薦系統(tǒng)。
1.2 協(xié)同過濾算法
協(xié)同過濾推薦算法主要分為基于用戶的協(xié)同過濾技術(shù)(user-cf)和基于項(xiàng)目(item-cf)的協(xié)同過濾技術(shù)。user-cf在于考慮的是用戶之間的相似性。首先,識(shí)別出與目標(biāo)用戶具有高度相似性的鄰居用戶,然后向用戶推薦鄰居最喜歡的項(xiàng)目。而item-cf是從項(xiàng)目角度出發(fā)的,主要通過計(jì)算項(xiàng)目之間的相似性。
2 構(gòu)建基于Ambari的協(xié)同過濾的推薦系統(tǒng)
2.1 基于mapReduce的推薦系統(tǒng)的設(shè)計(jì)
推薦算法的實(shí)現(xiàn)分為兩個(gè)步驟:
(1)mapReduce包括map函數(shù)和reduce函數(shù),首先,將電影原始的數(shù)據(jù)作為鍵值對(duì)發(fā)送到中間映射函數(shù);
(2)map以不同的鍵值對(duì)接收數(shù)據(jù)。在map任務(wù)接收到產(chǎn)品數(shù)據(jù)時(shí),發(fā)出用戶ID和電影信息,其中用戶ID作為鍵,電影信息作為值。通過split、shuffle過程,每個(gè)reducer任務(wù)將接收一個(gè)用戶已經(jīng)觀看的所有電影。然后reducer發(fā)出每個(gè)用戶所帶來的電影列表,從而達(dá)到為每一個(gè)用戶建立一個(gè)推薦列表。
2.2 基于mahout的推薦系統(tǒng)的設(shè)計(jì)
本文采用基于用戶的推薦算法,推薦系統(tǒng)需要應(yīng)用Taste中的各個(gè)組件來實(shí)現(xiàn),核心代碼:
File file = new File("e://xtj//dataset//ml-10M100K//rating.rat");
DataModel dataModel = new GroupLensDataModel(file);
UserSimilarity similarity = new UserSimilarity(data Model);
UserNeighborhood userNeighborhood = new User Neighborhood(10,similarity,dataModel);
Recommender recommender = new GenericUserBased Recommender(dataModel,userNeighborhood,similarity);
List
System.out.println("推薦");
System.out.println("為ID=5的用戶推薦10部電影");
for(RecommendedItem recommendedItem:recommended ItemList) {
System.out.println(recommendedItem);
}
本文采用基于Ambari框架下的mahout框架來實(shí)現(xiàn),我們?cè)趍apReduce和mahout相比較下,證明了mahout加快了推薦的速度和精度。
3 實(shí)驗(yàn)結(jié)果
3.1 環(huán)境搭建
實(shí)驗(yàn)使用的電腦是小米Air 13.3,windows10系統(tǒng),處理器為:i7-7500U CPU @2.70GHZ 2.90GHZ,內(nèi)存為8G,mahout版本為0.9.0。
(1)處理數(shù)據(jù)集:實(shí)驗(yàn)采用公開的MovieLens1M電影數(shù)據(jù)集,該數(shù)據(jù)集有1000萬多條記錄,包含72000名用戶對(duì)于10000多部電影的評(píng)分。該數(shù)據(jù)集中含有movies.dat,ratings.dat和tags.dat 3個(gè)文件;
(2)然后通過java編寫程序分析ratings.dat中的數(shù)據(jù),得出基于用戶的協(xié)同過濾比較適合該數(shù)據(jù)集。
3.2 推薦策略
在本文中,我將采取兩種常用的推薦指標(biāo)來評(píng)價(jià)推薦算法的好壞。一種是余弦相似度方法,另一種是平均絕對(duì)誤差MAE。其中余弦相似度是空間中兩個(gè)向量夾角的余弦值作為衡量?jī)蓚€(gè)個(gè)體間(用戶或者項(xiàng)目)差異的大小。余弦值越接近1,就說明夾角越接近0度,也就是兩個(gè)向量越相似。
相似度公式為:cos(θ)=? ? ? ? ? ? ? ? ? ? ? ? (1)
通過計(jì)算兩個(gè)向量之間的夾角來衡量?jī)蓚€(gè)向量的相似度,角度越小說明相似度越高。而MAE的值越小,表明算法的推薦精度越高。這種方法就是衡量推薦與真實(shí)的用戶之間的偏差如式(2):
MAE=|yi-ti|? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (2)
其中,yi表示預(yù)測(cè)值,ti表示真實(shí)值。一般來說,平均絕對(duì)誤差越小,推薦結(jié)果越準(zhǔn)確,系統(tǒng)性能就越好。
3.3 實(shí)驗(yàn)結(jié)果對(duì)比
(1)從上面選取好的數(shù)據(jù)集中分別選取數(shù)據(jù)集為1000,5000,10000,20000、40000和60000作為6組實(shí)驗(yàn)數(shù)據(jù),分別用余弦相似度和本文的基于mahout的方法進(jìn)行MAE值比較。實(shí)驗(yàn)證明,數(shù)據(jù)集越稀疏,MAE值就越大,也就是表明數(shù)據(jù)越多,MAE值也就越小。也可以看出本文的方法和傳統(tǒng)的余弦相似度的方法來比較,本文的方法更夠提高推薦質(zhì)量。
(2)接下來分析相同條件下的協(xié)同過濾算法的運(yùn)行時(shí)間,我們給出了hadoop和mahout條件下的運(yùn)行情況。在相同數(shù)據(jù)集的情況下,基于mahout的CF算法明顯比基于hadoop的CF算法快一些;而且在數(shù)據(jù)集很大的情況下,基于mahout的CF算法時(shí)間更少一些。
4 結(jié)語
本文介紹了傳統(tǒng)的推薦算法算法,分析了基于Ambari下的協(xié)同過濾算法。實(shí)驗(yàn)表明在大規(guī)模數(shù)據(jù)的情況下,采用基于Ambari的協(xié)同過濾推薦模型可以提高推薦的效率和精度。
參考文獻(xiàn)
[1] 何波,潘力.融合內(nèi)容和改進(jìn)協(xié)同過濾的個(gè)性化推薦算法[J].控制工程,2018,25(08):1553-1558.
[2] 姚靜靜.基于協(xié)同過濾的電影推薦算法研究與實(shí)現(xiàn)[D].北京郵電大學(xué),2018.
[3] 李曉瑜.協(xié)同過濾推薦算法綜述[J].商丘師范學(xué)院學(xué)報(bào),2018,34(09):7-10.
[4] Yejia Zeng,Zehui Qu. Trust-Based Neural Collaborative Filtering[J].Journal of Physics: Conference Series,2019,1229(1).
Research on Collaborative Filtering Recommendation Algorithm Based on Ambari
XU Ting-juan
(Xi'an Polytechnic University, Xi'an Shaanxi? 710048)
Abstract:The traditional Collaborative Filtering (CF) algorithm is one of the most widely used recommendation algorithms at present. However, due to the sparsity and cold start of CF, this paper proposes a CF algorithm based on mahout. The results show that compared with the two traditional CF algorithms, the CF algorithm based on mahout can improve the recommendation time and accuracy.
Key words:Collaborative filtering; mahout; recommendation algorithm; Taste engine