劉壽強,祁明
(1.華南理工大學經濟與貿易學院,廣州 510006;2.華南師范大學物理與電信工程學院,廣州 510006)
基于Hadoop云平臺的社交大數據協同過濾個性化推薦的研究與實現
劉壽強1,2,祁明2
(1.華南理工大學經濟與貿易學院,廣州510006;2.華南師范大學物理與電信工程學院,廣州510006)
云計算的出現,有效地解決大數據時代的數據冗余、處理速度慢、空間不足等難題,滿足信息化社會快速發展的數據需求。首先簡介云計算,大數據,幾種經典的推薦算法和個性化推薦。然后把云平臺與推薦系統的推薦引擎結合起來,利用協同過濾算法結合MapReduce框架模式進行計算,分別基于共同好友和共同興趣對一個微博大數據集進行處理并得出推薦結果,給用戶推薦潛在關注者和關鍵字,并對實驗結果進行分析得出結論,驗證云計算能有效并且快速處理大數據,提高計算機大規模數據計算處理能力。
云計算;Hadoop;大數據;協同過濾;個性化推薦
廣東省公益研究與能力建設專項資金項目(No.2016A020223012、No.2015A020217011)、廣東省交通科技計劃項目(No.2015-02-064)、廣東省本科高校教學質量與教學改革工程項目(粵教高函[2015]133號)、廣東外語外貿大學南國商學院2016年教改重大項目、廣州大學華軟軟件學院重大科研培育項目20000104與教研項目KY201412
云計算的出現,有效地解決了大數據時代,數據冗余、處理速度慢、空間不足等難題,滿足了信息化社會發展的數據需求。Hadoop是當今主流應用最廣的云計算平臺,Google的MapReduce算法也能在Hadoop中實現,而且提供一個文件系統HDFS用來存儲各個計算節點上數據,使得Hadoop框架具有高容錯性,能夠處理失敗節點[1-2]。
與傳統的基于內容過濾直接分析內容進行推薦不同,協同過濾分析用戶興趣,在用戶群中找到指定用戶的相似(興趣)用戶,綜合這些相似用戶對某一信息的評價,形成系統對該指定用戶對此信息的喜好程度預測。大致過程是這樣的:首先,通過分析用戶的偏好行為,來挖掘出里面物品與物品、或人與人之間的關聯。其次,通過對這些關聯的關系做一定的運算,得出人與物品間喜歡程度的猜測,即推薦值。最后,將推薦值高的物品推送給特定的人,以完成一次推薦。協同過濾算法大致可分為兩類:基于物品的協同過濾算法;基于用戶的協同過濾算法。
用戶特征種類非常多,主要包括:人口統計學特征,用戶的行為特征,用戶的話題特征,給用戶推薦不同種類的物品,就需要多種推薦引擎來進行個性化推薦[3]。個性化推薦有兩個好處:可以方便地增刪引擎,控制不同引擎對推薦結果的影響。對于絕大多數需求,只需要通過不同的引擎組合實現??梢詫崿F推薦引擎級別的用戶反饋。每一個推薦引擎其實代表了一種推薦策略,可以將每一種策略都設計成一個推薦引擎然后通過分析用戶對推薦結果的反饋了解用戶比較喜歡哪些引擎推薦出來的結果,從而對不同的用戶給出不同的引擎組合權重[4]。在下文的實驗中,使用協同過濾算法構造兩個個性化推薦引擎——分別是基于共同好友和共同興趣。
3.1協同過濾算法
Apache Mahout提供的一個協同過濾算法的高效實現,基于Java實現的可擴展的高效推薦引擎。通過對源代碼的分析,該推薦引擎是用
(1)把輸入數據的每個用戶的信息整合,得出用戶相似度;
(2)輸入數據為MR(1),不管用戶ID,對后面的所有項目進行拆分;
(3)含有兩個Mapper,第一個MR(31)把MR(2)的輸出的格式轉為VectorOrPrefWritable;
MR(32)針對MR(1)的輸出把每一個項目ID和用戶ID作為一對,進行輸出,輸出格式也為VectorOrPrefWritable;
(4)MR4的map不做任何事情;MR4的reduce輸出就是把MR(31)和MR(32)的相同的itemID整合在一起;
(5)map:針對MR4的輸出的每一行中的每一個用戶,用這個用戶的評分值(preference)去乘以項目之間的相似度向量,在Reducer的setup函數中讀取SequenceFile的數據,這個數據是MR1的輸出數據,用來排除用戶已經評價過的項目。
3.2協同過濾算法核心代碼
輸入的數據格式是這樣的:

需要整合成如下:

第一個MR:就是把輸入數據的每個用戶的信息整合。
第二個MR:輸入數據為MR(1)的輸出只是項目的相似度,先不管用戶ID,對后面的所有項目進行拆分。輸出應該類似下面:
第三個MR:含有兩個Mapper,第一個MR(31)把MR(2)的輸出的格式轉為VectorOrPrefWritable;MR (32)針對MR(1)的輸出把每一個項目ID和用戶ID作為一對進行輸出,輸出格式也為VectorOrPrefWritable; WiKiReducer32.java其實和WiKiReducer31.java一模一樣的,此處不再給出;
第四個MR:MR4的map不做任何事情;MR4的reduce輸出就是把MR(31)和MR(32)的相同的itemID整合一下,此處的輸入為兩個路徑:如下:
第五個MR:map:針對MR4的輸出的每一行中的每一個用戶,用這個用戶的評分值(preference)去乘以項目之間的相似度向量,例如針對第一條記錄中的用戶3,則有
Vectorforuser3=[1.0 2.0 2.0 4.0 4.0 3.0 5.0]*2.5
則map的輸出為key:3。
4.1實驗數據集介紹
本次實驗目的是給微博用戶推薦潛在關注者和推薦。該數據集是KDD CUP 2012的比賽數據集,任務是預測微博推薦結果[6-7],是騰訊微博的一個快照,為用戶推薦的內容及其關注的歷史信息。該數據集較之以往的公開數據集規模更大,并且包含豐富的輔助信息,例如用戶的Profile(檔案資料),社會關系圖,對象目錄等,可以有效的啟發開發者的思路。
該數據集合包含上百萬個用戶,包含豐富的信息(用戶基本資料、、關注歷史等),可以幫助你建立更好的預測模型。為了保護隱私,所有的用戶ID采用隨機數代替。同時,所有中文內容都用隨機字符串和數字進行了編碼,用戶的關注歷史具有時間戳以方便全話分析[4,8]。
所使用的數據集文件有兩個:
用戶文件(182MB)——User key worddata: user_key_word.txt
格式:(UserId) (Keywords)
用戶社會關系數據(740MB)User sns data:user_sns.txt
格式:(Follower-userid) (Followee-userid)。
4.2數據集處理
(1)數據預處理
通過預處理程序將數據集文件的格式變成這樣
再使用-copyFromLocal/.文件路徑,命令將數據集上傳到文件系統,結果如圖2:

圖2 源數據集上傳到文件系統
(2)基于共同好友
輸入以下命令:

得出的結果如圖3:

圖3 基于共同好友協同過濾處理結果
節選一部分來解讀,圖4:

圖4 基于共同好友協同過濾處理結果(節選)
100001表示的是用戶ID,代表了用戶名。后面,1760320表示的是給用戶100001推薦的潛在關注者,接著的47.0是對潛在關注者的評分,即權重。以此類推,每個用戶大約推薦十個潛在關注者,每個潛在關注者都有評分和排序的。權重越大,表示推薦的用戶越重要。
(3)基于共同興趣
執行命令得出的結果如下圖5:
結果節選:

圖5 基于共同興趣協同過濾處理結果(節選)
4.3實驗結果分析
在Hadoop云計算平臺上得出了相關數據。下表1為總體實驗結果:

表1 協同過濾實驗結果
由表1可以看出,總體效果。對于兩個不同的數據集,用同一集群進行處理:
(1)源數據越小,處理時間越短;
(2)基于好友比基于興趣處理速度慢的原因在于,數據實例數量越大,運算復雜度越高。
下表2為抽取一部分數據進行實驗對比的結果:
下圖6為同一數據集,在不同集群上運行的情況對比:

表2 協同過濾實驗結果(抽取一部分數據)

圖5 同一數據集,在不同集群上運行的情況對比圖
由圖5可以看出:
(1)當集群數量越大,處理時間越短;
(2)分布式云計算(兩臺設備,5個節點)比單機(一臺設備,3個節點)的運算速率提高了2到3倍。
此次實驗只是做出了兩個個性化推薦引擎——基于共同好友的協同過濾,基于共同興趣的協同過濾,并不是一個完整的推薦系統,只是得出推薦的結果。雖然在Hadoop云平臺上實現并得出實驗結果,但離實際應用還遠。單仍能驗證處云計算平臺具有足夠大的能力,能有效并且快速處理大數據。
現實中,個性化推薦系統需要很多個不同的推薦引擎,使用的算法有關聯規則,Pagerank、Edgerank,K均值、網絡圖譜、混合算法等,這些推薦引擎組合起來的推薦系統才能適應有各種各樣喜好的人們,從而達到個性化推薦[4-6]。
利用云平臺和大數據,我們可以繼續在如下領域深入研究:社交網絡大數據人類行為模式預測與個性化推薦、信息流的個性化推薦算法研究、基于時間上下文的用戶行為預測研究、社交網絡大數據鏈路預測問題、社交網絡的信任挖掘與信任推理等[1,2,9,10]。
[1]羅軍舟,金嘉暉,宋愛波,東方.云計算:體系架構與關鍵技術[M].南京:通信學報,2011
[2]王珊,王會舉,覃雄派.架構大數據:挑戰、現狀與展望[J].北京:計算機學報,2011
[3]Ai-Xiang Cui,Zi-Ke Zhang,Ming Tang,Pak Ming Hui,Yan Fu.Emergence of Scale-Free Close-Knit Friendship Structure in Online Social Networks[M].PLOSONE.2012
[4]汪永強.社會化網絡中的推薦算法及其應用[J].上海:上海交通大學,2012
[5]Sean Owen,Robin Anil,Ted Dunning,Ellen Friedman.Mahout In Action.Manning Publications,2010.
[6]KDD Cup.KDD Cup2012 Predict Which Users(or Information Sources)one User Might Follow in Tencent Weibo.http://www.kddcup2012.org/c/kddcup2012-track1.
[7]KDD Cup2012數據挖掘競賽主題一:預測圍脖的推薦結果.http://blog.csdn.net/yumengkk/article/details/7293638.
[8]李宇,李秦.對K均值算法和硬C-均值算法的對比分析[J].蘭州交通大學,2012.
[9]周海花,華薇娜.國內外云計算研究的現狀與發展——基于INSPEC數據庫的分析[J].南京:現代情報,2012.
[10]巴拉巴西.爆發:大數據時代遇見未來的新思維[M].中國人民大學出版,2012-6.
Cloud Computing;Hadoop;Big Data;Collaborative Filtering(CF)Algorithm;Personalized Recommendation
Research and Implementation of Hadoop-Based Social Big Data Collaborative Filtering Personalized Recommendation
LIU Shou-qiang1,2,QI Min1
(1.School of Economics and Commerce,South China University of Technology,Guangzhou 510006;2.School of Physics and Telecommunication Engineering,South China Normal University,Guangzhou 510006)
Emergence of cloud computing,effectively solves the era of big data,data redundancy,processing speed,lack of space and other problems,to meet the data needs of the information society rapid development.Firstly,introduces cloud computing,big data,several classic recommendation algorithm and personalized recommendations.Puts forward the collaborative filtering algorithm and MapReduce framework based on common friend and common interest,deals with a big data set and outputting the result,recommending the potential followers and keywords to users.Puts forward the conclusion and outlook are,and analyzes the experimental results to conclude that cloud computing can effectively verify and rapid processing of large data,large-scale data to improve computer processing capabilities.
1007-1423(2016)32-0074-05
10.3969/j.issn.1007-1423.2016.32.018
劉壽強(1974-),男,湖北人,講師,博士(計算機),研究方向為云計算、大數據、電子商務、機器學習
2016-11-08
2016-11-10