韋靈,黎偉強(qiáng)
?。◤V西科技大學(xué)鹿山學(xué)院 電氣與計(jì)算機(jī)工程系,廣西 柳州 545616)
摘要:為使互聯(lián)網(wǎng)用戶快捷地查找所需信息,個(gè)性化推薦系統(tǒng)的優(yōu)勢得到了體現(xiàn)和運(yùn)用。該系統(tǒng)設(shè)計(jì)的目的是為廣大網(wǎng)民在瀏覽新聞時(shí)提供一個(gè)個(gè)性化的新聞推薦系統(tǒng),實(shí)現(xiàn)對新聞數(shù)據(jù)的協(xié)同過濾推薦處理。系統(tǒng)利用 Hadoop的MapReduce模型實(shí)現(xiàn)并行快速地聚類海量新聞數(shù)據(jù),大大提高了數(shù)據(jù)處理的速度,聚類使得新聞之間的相似度得以體現(xiàn),再利用不同的協(xié)同過濾算法實(shí)現(xiàn)個(gè)性化的新聞推薦。
關(guān)鍵詞:Hadoop;MapReduce;聚類;個(gè)性化;Mahout
中圖分類號:TP301.6文獻(xiàn)標(biāo)識碼:ADOI: 10.19358/j.issn.16747720.2016.23.006
引用格式:韋靈,黎偉強(qiáng). 基于Hadoop平臺的個(gè)性化新聞推薦系統(tǒng)的設(shè)計(jì)[J].微型機(jī)與應(yīng)用,2016,35(23):21-23,27.
0引言
隨著互聯(lián)網(wǎng)的發(fā)展,大量新聞快速涌現(xiàn),信息嚴(yán)重過載,令用戶無從選擇。新聞推薦系統(tǒng)被廣泛應(yīng)用于解決信息過載問題[1],解決不同人之間關(guān)注新聞熱點(diǎn)不一致的問題。新聞是人們生活中必不可少的一部分,如何使人們快速地在每天眾多新聞中找出自己感興趣、想要了解并查看的新聞成為了各大新聞門戶網(wǎng)站的一大難題。快速準(zhǔn)確的新聞推薦能節(jié)省用戶大量查找自己感興趣的新聞的時(shí)間,這能讓用戶得到一個(gè)非常好的用戶體驗(yàn)。大數(shù)據(jù)的出現(xiàn)標(biāo)志著人們生活品質(zhì)的進(jìn)步,這是社會進(jìn)化的副產(chǎn)品,它能利用許多常規(guī)機(jī)器進(jìn)行海量數(shù)據(jù)處理。將一個(gè)海量數(shù)據(jù)任務(wù)分成需要的小任務(wù),分別發(fā)給許多常規(guī)機(jī)器進(jìn)行并行處理,然后得出結(jié)果,這個(gè)過程就像許多常規(guī)機(jī)器匯聚成為一個(gè)超級機(jī)器,整個(gè)處理過程就像一個(gè)機(jī)器在處理一樣,這大大降低了數(shù)據(jù)挖掘的成本,并且在數(shù)據(jù)量很大時(shí)大大減少了計(jì)算的時(shí)間。在當(dāng)今時(shí)代,無論是新聞門戶網(wǎng)站還是購物網(wǎng)站,無論是醫(yī)療方面的還是金融方面的,大數(shù)據(jù)平臺下的數(shù)據(jù)挖掘都是現(xiàn)在主流的發(fā)展方向。從另一個(gè)角度看,大數(shù)據(jù)的出現(xiàn)不僅幫助人們篩選出了有用的信息,同時(shí)還幫人們過濾掉了無用的信息?;旌戏椒◤浹a(bǔ)了基于內(nèi)容推薦在多樣性上的不足,但卻帶來了冷啟動問題,在推薦熱點(diǎn)新聞或用戶具有潛在興趣的新聞時(shí),沒有得到足夠點(diǎn)擊的新聞依然無法推薦給目標(biāo)用戶[2]。目前,國內(nèi)外學(xué)者在新聞推薦領(lǐng)域已展開了一系列研究。參考文獻(xiàn)[3-6]使用了協(xié)同過濾的新聞推薦方法,本文提出了基于用戶和物品的協(xié)同過濾算法來實(shí)現(xiàn)面向不同用戶的個(gè)性化新聞內(nèi)容推薦。
1協(xié)同過濾算法介紹
個(gè)性化推薦主要分為協(xié)同過濾推薦、基于內(nèi)容推薦、混合推薦。個(gè)性化推薦本質(zhì)上是把用戶與物品進(jìn)行聯(lián)系,使得用戶能夠發(fā)現(xiàn)自己所喜愛的物品,使得物品能夠被所喜歡的用戶所了解[7]。關(guān)于協(xié)同過濾的一個(gè)最典型的例子就是看電影,有時(shí)候不知道哪一部電影是我們喜歡的或者評分比較高的,那么通常的做法就是問問周圍的朋友,看看最近有什么好的電影推薦。在詢問時(shí),都習(xí)慣于問與自己愛好相似的朋友,這就是協(xié)同過濾的核心思想。協(xié)同過濾推薦與傳統(tǒng)的基于內(nèi)容過濾推薦不同,協(xié)同過濾分析用戶興趣,在用戶群中找到指定用戶的相似(興趣)用戶,綜合這些相似用戶對某一信息的評價(jià),形成對該指定用戶對此信息的喜好程度預(yù)測。協(xié)同過濾主要分為基于用戶的協(xié)同過濾和基于物品的協(xié)同過濾。
1.1基于用戶的協(xié)同過濾算法
俗話說“物以類聚、人以群分”,拿看電影這個(gè)例子來說,如果你喜歡《蝙蝠俠》、《碟中諜》、《星際穿越》、《源代碼》等電影,另外有個(gè)人也喜歡這類電影,而且他還喜歡《鋼鐵俠》,則很有可能你也喜歡《鋼鐵俠》這部電影。所以說,當(dāng)一個(gè)用戶 A 需要個(gè)性化推薦時(shí),可以先找到與他興趣相似的用戶群體 G,然后把 G 喜歡的、并且 A 沒有聽說過的物品推薦給 A,這就是基于用戶的協(xié)同過濾算法。
1.2基于物品的協(xié)同過濾算法
基于物品的協(xié)同過濾算法(ItemCF)是業(yè)界應(yīng)用最多的算法,主要思想是利用用戶之前有過的行為,給用戶推薦和之前物品類似的物品。依然以電影為例,如果喜歡《蝙蝠俠》的用戶有A、B、C和D,喜歡《碟中諜》的用戶有A、C、D。那么可以認(rèn)為《蝙蝠俠》和《碟中諜》擁有相似的用戶群體,則很可能B用戶也會喜歡《碟中諜》這部電影,于是推薦《碟中諜》給B用戶。這就是基于物品的協(xié)同過濾算法。
2協(xié)同過濾算法用戶的模型構(gòu)建
協(xié)同過濾算法所需要的數(shù)據(jù)結(jié)構(gòu)是用戶id+新聞id+評分,為了將數(shù)據(jù)庫中的數(shù)據(jù)形成這樣的數(shù)據(jù)結(jié)構(gòu),通過查詢新聞表的用戶表來確定所查詢的用戶是否在其中,然后得到該用戶瀏覽過的所有新聞id,最后對該新聞的喜愛程度進(jìn)行預(yù)測。根據(jù)式(1)計(jì)算出Preference喜好值,其中Preference為預(yù)測的結(jié)果,ct為新聞聚類結(jié)果簇的個(gè)數(shù),cn為當(dāng)前新聞所在簇的新聞個(gè)數(shù),unt為當(dāng)前用戶瀏覽過的新聞總數(shù),nct為該新聞的瀏覽數(shù)。
基于用戶的協(xié)同過濾推薦流程圖如圖1所示。當(dāng)啟動基于用戶的協(xié)同過濾算法引擎后,指定一個(gè)用戶為其推薦,系統(tǒng)將查詢數(shù)據(jù)庫中該用戶瀏覽過的所有新聞,根據(jù)新聞中用戶表查詢?yōu)g覽過的該新聞的相關(guān)用戶,然后構(gòu)建協(xié)同過濾算法用戶的模型。整個(gè)過程封裝在MyRecommender類的UserRecommender方法中,而在UserRecommender中封裝了數(shù)據(jù)庫的一系列查詢方法與協(xié)同過濾算法的調(diào)用,通過基于用戶的協(xié)同過濾算法計(jì)算出應(yīng)該為其推薦的新聞。
3協(xié)同過濾算法物品的模型構(gòu)建
首先,以具有相同標(biāo)題的新聞作為查詢語句的分組條件,查詢出每一個(gè)新聞標(biāo)題下都有哪些用戶訪問過,根據(jù)查詢到的結(jié)果形成該新聞未訪問過的推薦用戶列表。另外系統(tǒng)將會查詢出瀏覽過該新聞的用戶并構(gòu)建瀏覽用戶列表,并直觀顯示在分析后的推薦列表中,同時(shí)根據(jù)用戶瀏覽的新聞分類的不同比重,推薦結(jié)果顯示時(shí),根據(jù)比重做相關(guān)的排序,把用戶最關(guān)注的那類新聞排在最前面,以此來做推薦排序。基于物品的協(xié)同過濾利用式(2)計(jì)算:
其算法流程圖如圖2所示。
基于物品的協(xié)同過濾推薦,當(dāng)啟動基于物品的協(xié)同過濾算法引擎后,指定一個(gè)用戶為其推薦,系統(tǒng)將查詢數(shù)據(jù)庫中該用戶瀏覽過的所有新聞,根據(jù)新聞中用戶表查詢?yōu)g覽過該新聞的相關(guān)用戶,然后構(gòu)建協(xié)同過濾算法用戶的模型。整個(gè)過程封裝在MyRecommender類的ItemRecommender方法中,而在ItemRecommender中封裝了數(shù)據(jù)庫的一些查詢方法和協(xié)同過濾算法的調(diào)用,通過基于物品的協(xié)同過濾算法計(jì)算出應(yīng)該推薦的新聞。
4個(gè)性化新聞推薦系統(tǒng)實(shí)現(xiàn)
基于Hadoop平臺聚類算法的個(gè)性化新聞推薦系統(tǒng),其目的是為讓廣大網(wǎng)民在瀏覽新聞時(shí),為其提供一個(gè)個(gè)性化的新聞推薦系統(tǒng)。大量的信息使得用戶找到自己需要的信息變得很困難。為了使互聯(lián)網(wǎng)用戶快捷地查找所需信息,個(gè)性化推薦系統(tǒng)的優(yōu)勢得到了體現(xiàn),本文利用 Hadoop的MapReduce模型實(shí)現(xiàn)并行快速地聚類海量新聞數(shù)據(jù),大大提高了數(shù)據(jù)處理的速度,聚類使得新聞之間的相似度得以體現(xiàn),再利用不同的協(xié)同過濾算法實(shí)現(xiàn)個(gè)性化的新聞推薦。系統(tǒng)使用了JSP、Servlet技術(shù)及Mahout開源項(xiàng)目編寫程序,首先利用Java將新聞數(shù)據(jù)按約定格式處理并將其傳到Hadoop的HDFS上,在安裝好Hadoop的Linux端定時(shí)調(diào)用shell腳本聚類處理新聞,然后使用MySQL數(shù)據(jù)庫存儲數(shù)據(jù),實(shí)現(xiàn)對新聞數(shù)據(jù)的協(xié)同過濾推薦處理。新聞推薦系統(tǒng)主要功能包括前臺與后臺的設(shè)計(jì),圖3所示為系統(tǒng)整體功能結(jié)構(gòu)圖,前臺主要負(fù)責(zé)展示推薦的新聞信息結(jié)果和供用戶瀏覽新聞;后臺處理新聞數(shù)據(jù),并將處理好的數(shù)據(jù)插入數(shù)據(jù)庫供前臺使用。
圖4為新聞推薦流程圖。選擇基于用戶的協(xié)同過濾推薦,系統(tǒng)將自動啟動基于用戶的協(xié)同過濾算法引擎進(jìn)行數(shù)據(jù)的計(jì)算并將數(shù)據(jù)推送到頁面中。同理基于物品的協(xié)同過濾算法相同。這個(gè)過程中查詢所有人的瀏覽記錄是通過多次的數(shù)據(jù)庫查詢得到的。
新聞普遍存在的問題就是冷啟動問題,當(dāng)用戶第一次使用時(shí)該如何進(jìn)行推薦,用戶新加入時(shí)沒有任何的歷史行為及其興趣,因此無法對其進(jìn)行推薦。本文使用熱門推薦來解決這種極端的情況。當(dāng)剛打開該系統(tǒng)時(shí),為模擬處理冷啟動問題,系統(tǒng)將查詢出瀏覽數(shù)前十的新聞進(jìn)行推薦。
(1)當(dāng)用戶進(jìn)行基于用戶的協(xié)同過濾推薦算法操作時(shí),將觸發(fā)baseOnUserSer這個(gè)Servlet基類,該Servlet基類將查詢出系統(tǒng)中的所有用戶,并對所有的用戶進(jìn)行基于用戶的協(xié)同過濾算法推薦。首先,提交所有用戶的相關(guān)數(shù)據(jù)(格式為:用戶id,新聞id,評分),格式表示某用戶id瀏覽過某條新聞id,并且把喜歡程度表示為評分,利用每個(gè)用戶的新聞評分,根據(jù)皮爾遜相關(guān)系數(shù)公式計(jì)算出需要推薦的用戶與其他用戶之間的皮爾遜相似度,最后利用式(2)計(jì)算出需要推薦的用戶與用戶之間的皮爾遜相似度per。假設(shè)某用戶瀏覽過的某條新聞的評分為p,那么通過公式可以計(jì)算出該條新聞的推薦分值point=per×p,如果該條新聞被多個(gè)用戶閱讀過則需求出Σpoint=per1×p1+per2×p2…+pern×pn。得到所有新聞的推薦分后,選取被推薦用戶沒有瀏覽過的新聞中最高分的新聞作為推薦。
基于用戶的協(xié)同過濾推薦系統(tǒng)效果如圖5所示。
(2)當(dāng)用戶進(jìn)行基于物品的協(xié)同過濾推薦操作時(shí),將觸發(fā)baseOnItemSert類,該類將查詢出系統(tǒng)中的所有用戶,并過濾掉admin這個(gè)測試用戶,將所有的用戶進(jìn)行基于物品的協(xié)同過濾算法推薦,所有推薦結(jié)果存儲在一個(gè)專門設(shè)計(jì)的newsModeBean類中 ,其他的操作基本與基于用戶的協(xié)同過濾推薦一樣?;谖锲返膮f(xié)同過濾算法,提交數(shù)據(jù)的格式與基于用戶的協(xié)同過濾算法一樣。首先提取出所有的新聞,計(jì)算并建立新聞的共軛矩陣。然后使用用戶向量點(diǎn)乘共軛矩陣可以得到推薦分?jǐn)?shù)。
基于物品的協(xié)同過濾推薦系統(tǒng)如圖6所示。
5結(jié)論
隨著互聯(lián)網(wǎng)的迅速發(fā)展,用戶面對海量互聯(lián)網(wǎng)信息的時(shí)候,有時(shí)覺得很迷茫,不知道從何閱讀,甚至有時(shí)面對無關(guān)的廣告產(chǎn)生煩躁的心情。為了提高有效閱讀率,本文提出了利用基于用戶或者物品的協(xié)同過濾算法來實(shí)現(xiàn)新聞的個(gè)性化推薦,從測試的效果看,基本上達(dá)到用戶信息個(gè)性化新聞推薦的各項(xiàng)功能要求,表明該算法是有效的。因?yàn)闇y試數(shù)據(jù)較少,在Hadoop平臺上運(yùn)行,沒有體現(xiàn)出并行計(jì)算的效果,下一步將利用更多的用戶數(shù)據(jù)來驗(yàn)證系統(tǒng)。同時(shí),算法目前的實(shí)現(xiàn)主要依靠相似性來做推薦,后續(xù)將引進(jìn)其他算法來改進(jìn)個(gè)性化推薦的新聞內(nèi)容和分類,從而提高推薦的準(zhǔn)確性。
參考文獻(xiàn)
[1] JIANG S,HONG W X.A vertical news recommendation system:CCNS—an example from Chinese campus news reading system[C].ICCSE 2014: Proceedings of the 2014 9th International Conference on Computer Science & Education.Piscataway,NJ: IEEE,2014: 1105-1114.
?。?] 楊武,唐瑞,盧玲.基于內(nèi)容的推薦與協(xié)同過濾融合的新聞推薦方法[J].計(jì)算機(jī)應(yīng)用, 2016, 36(2):414-418.
?。?] 劉金亮.基于主題模型的個(gè)性化新聞推薦系統(tǒng)的研究與實(shí)現(xiàn)[D].北京: 北京郵電大學(xué),2013.
?。?] 彭菲菲,錢旭.基于用戶關(guān)注度的個(gè)性化新聞推薦系統(tǒng)[J].計(jì)算機(jī)應(yīng)用研究,2012,29(3) : 1005-1007.
?。?] 文鵬,蔡瑞,吳黎兵.一種基于潛在類別模型的新聞推薦方法[J].情報(bào)雜志,2014,33(1):161-166.
[6] 項(xiàng)亮.推薦系統(tǒng)實(shí)踐[M].北京: 人民郵電出版社,2012.
?。?] 曹一鳴. 基于協(xié)同過濾的個(gè)性化新聞推薦系統(tǒng)的研究與實(shí)現(xiàn)[D]. 北京:北京郵電大學(xué), 2013.