本發(fā)明涉及資源推薦
技術(shù)領(lǐng)域:
,具體涉及一種基于云計算的智能推薦方法及系統(tǒng)。
背景技術(shù):
:在互聯(lián)網(wǎng)技術(shù)和信息技術(shù)的快速的發(fā)展下,人們生活的許多方面已經(jīng)受到了互聯(lián)網(wǎng)科技的影響,在我們使用互聯(lián)網(wǎng)產(chǎn)品的同時,數(shù)據(jù)總是在不斷地產(chǎn)生。某些大型企業(yè)每天的數(shù)據(jù)量已達(dá)數(shù)百tb,而數(shù)據(jù)的存儲總量也早已超過1000pb。在信息如此增長的態(tài)勢下,雖然通過搜索技術(shù)可以過濾大部分不相關(guān)的商品,但是在龐大的數(shù)據(jù)庫中存在著大量的用戶潛在感興趣的商品,所以用戶需要一種篩選有效信息的服務(wù),這種服務(wù)的需求直接導(dǎo)致推薦系統(tǒng)的產(chǎn)生。推薦系統(tǒng)可以從大量的信息中挖掘用戶的興趣,針對不同用戶的興趣提供個性化的服務(wù)。然而從大量的信息中挖掘用戶的興趣,一方面需要精確的挖掘算法,另一方面也需要強(qiáng)大的計算能力。雖然企業(yè)可以使用擁有強(qiáng)大計算能力的設(shè)備對用戶的愛好進(jìn)行挖掘,但由于這種高性能設(shè)備的使用,使成本大大的升高。云計算的出現(xiàn)恰恰滿足了企業(yè)進(jìn)行數(shù)據(jù)挖掘的需求,云計算可以在廉價的機(jī)器上實現(xiàn)大規(guī)模存儲和高速運算,為企業(yè)進(jìn)行個性化服務(wù)提供了新的方式。現(xiàn)有推薦系統(tǒng)中,使用最多的推薦算法就是協(xié)同過濾推薦算法,協(xié)同過濾算法法理論上可以推薦世界上的任何一種東西。它又分為兩種,基于用戶的協(xié)同過濾算法(usercf)和基于項目協(xié)同過濾算法(itemcf)。usercf的主要思想是:基于用戶對物品的偏好找到相鄰鄰居用戶,然后將鄰居用戶喜歡的推薦給當(dāng)前用戶。計算上,就是將一個用戶對所有物品的偏好作為一個向量來計算用戶之間的相似度,找到k鄰居后,根據(jù)鄰居的相似度權(quán)重以及他們對物品的偏好,預(yù)測當(dāng)前用戶沒有偏好的未涉及物品,計算得到一個排序的物品列表作為推薦。itemcf的原理和usercf類似,只是在計算鄰居時采用物品本身,而不是從用戶的角度,即基于用戶對物品的偏好找到相似的物品,然后根據(jù)用戶的歷史偏好,推薦相似的物品。從計算的角度看,就是將所有用戶對某個物品的偏好作為一個向量來計算物品之間的相似度,得到物品的相似物品后,根據(jù)用戶歷史的偏好預(yù)測當(dāng)前用戶還沒有表示偏好的物品,計算得到一個排序的物品列表作為推薦。王國霞,劉賀平在“個性化系統(tǒng)綜述”(計算機(jī)工程與應(yīng)用,2012,48(7):66-76.)論文中就講述了這種傳統(tǒng)的協(xié)同過濾推薦算法?,F(xiàn)有技術(shù)的缺點就是傳統(tǒng)推薦算法復(fù)雜度非常高而導(dǎo)致運算效率低下,而且常規(guī)的數(shù)據(jù)挖掘往往都是建立在大規(guī)模數(shù)據(jù)集合之上,復(fù)雜的計算和大規(guī)模的數(shù)據(jù)受限于計算機(jī)的硬件限制無法取得理想的運行結(jié)果。傳統(tǒng)的單機(jī)串行運算已經(jīng)無法滿足高復(fù)雜度和大數(shù)據(jù)的處理需求。技術(shù)實現(xiàn)要素:本發(fā)明的目的是針對現(xiàn)有技術(shù)中的不足,提供一種基于云計算的智能推薦方法及系統(tǒng),實現(xiàn)了推薦算法的并行化提高了算法的運行效率。為實現(xiàn)上述目的,本發(fā)明公開了如下技術(shù)方案:一種基于云計算的智能推薦方法,基于項目或物品的協(xié)同過濾算法在hadoop云計算平臺上實現(xiàn),包括如下步驟:s1建立物品的同現(xiàn)矩陣:按用戶分組,找到每個用戶所選的物品,單獨出現(xiàn)計數(shù)及兩兩一組計數(shù);s2建立用戶對物品的評分矩陣:按用戶分組,找到每個用戶所選的物品及評分;s3矩陣計算推薦結(jié)果:同現(xiàn)矩陣*評分矩陣=推薦結(jié)果;s4推薦結(jié)果存儲:將獲取的推薦結(jié)果發(fā)送至應(yīng)用層的數(shù)據(jù)庫中存儲;s5結(jié)果推薦:應(yīng)用層根據(jù)推薦結(jié)果對用戶進(jìn)行推薦。進(jìn)一步的,所述步驟s1中,建立物品的同現(xiàn)矩陣的具體步驟如下:任意選取互聯(lián)網(wǎng)站上的用戶評分?jǐn)?shù)據(jù)集score.csv,每行3個字段,依次是用戶id、物品id和用戶對物品的評分,根據(jù)物品id進(jìn)行排序,如下表所示:有n個用戶給物品101打分,則r11=n,有m個用戶同時給物品101和102打分,則r12=m,以此類推,最終,表中r的值組成的矩陣即為同現(xiàn)矩陣。進(jìn)一步的,所述步驟s2中,建立用戶對物品的評分矩陣的具體步驟如下:以用戶偏好作為一個評分矩陣,而每個用戶的評分矩陣是一個n維的向量,每個維度代表一個物品,偏好值就是向量的每個分量,0代表用戶對該物品無偏好,用戶對物品的評分矩陣同樣來自數(shù)據(jù)集score.csv,評分矩陣包括了用戶對所有物品的打分,若無打分,則矩陣此列為0。進(jìn)一步的,所述步驟s3中,矩陣計算推薦結(jié)果采用mapreduce并行運算,計算矩陣乘法。一種基于云計算的智能推薦系統(tǒng),包括:業(yè)務(wù)系統(tǒng)模塊,用于記錄用戶的行為和對物品的打分,并將數(shù)據(jù)存儲至數(shù)據(jù)庫;第一定時器模塊,用于每隔若干小時,由數(shù)據(jù)庫增量向hdfs導(dǎo)入數(shù)據(jù),其中,hdfs為hadoop分布式文件系統(tǒng);mapreduce模塊,用于大數(shù)據(jù)并行運算,運行推薦算法將hdfs中的推薦結(jié)果發(fā)送至業(yè)務(wù)系統(tǒng)模塊的數(shù)據(jù)庫;第二定時器模塊,用于實現(xiàn)從hdfs導(dǎo)出推薦結(jié)果到數(shù)據(jù)庫的間隔時間。進(jìn)一步的,所述數(shù)據(jù)庫增量向hdfs導(dǎo)入的數(shù)據(jù)包括用戶id、物品id、價值和時間。本發(fā)明公開的一種基于云計算的智能推薦方法及系統(tǒng),具有以下有益效果:本發(fā)明一方面可以使用云計算的并行編程模型解決算法的搞復(fù)雜度問題,將復(fù)雜的運算分解成簡單的任務(wù)執(zhí)行。另一方面云計算可以提供大規(guī)模數(shù)據(jù)的存儲系統(tǒng),脫離了單個計算機(jī)的硬件限制。本發(fā)明將推薦算法和hadoop云計算平臺有效集合,通過mapreduce分布式編程模型實現(xiàn)了推薦算法的并行化提高了算法的運行效率。附圖說明圖1是本發(fā)明的流程圖,圖2是本發(fā)明的推薦系統(tǒng)架構(gòu)圖。具體實施方式下面將對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護(hù)的范圍。本發(fā)明的核心是提供一種基于云計算的智能推薦方法及系統(tǒng),實現(xiàn)了推薦算法的并行化提高了算法的運行效率。請參見圖1-圖2。一種基于云計算的智能推薦方法,基于項目或物品的協(xié)同過濾算法在hadoop云計算平臺上實現(xiàn),包括如下步驟:s1建立物品的同現(xiàn)矩陣:按用戶分組,找到每個用戶所選的物品,單獨出現(xiàn)計數(shù)及兩兩一組計數(shù);可選的,建立物品的同現(xiàn)矩陣的具體步驟如下:任意選取互聯(lián)網(wǎng)站上的用戶評分?jǐn)?shù)據(jù)集score.csv,每行3個字段,依次是用戶id、物品id和用戶對物品的評分,根據(jù)物品id進(jìn)行排序,如下表所示:物品id101102103…101r11r12r13…102r21r22r23…103r31r32r33………………有n個用戶給物品101打分,則r11=n,有m個用戶同時給物品101和102打分,則r12=m,以此類推,最終,表中r的值組成的矩陣即為同現(xiàn)矩陣。s2建立用戶對物品的評分矩陣:按用戶分組,找到每個用戶所選的物品及評分;可選的,建立用戶對物品的評分矩陣的具體步驟如下:以用戶偏好作為一個評分矩陣,而每個用戶的評分矩陣是一個n維的向量,每個維度代表一個物品,偏好值就是向量的每個分量,0代表用戶對該物品無偏好,用戶對物品的評分矩陣同樣來自數(shù)據(jù)集score.csv,評分矩陣包括了用戶對所有物品的打分,若無打分,則矩陣此列為0。s3矩陣計算推薦結(jié)果:同現(xiàn)矩陣*評分矩陣=推薦結(jié)果;可選的,矩陣計算推薦結(jié)果采用mapreduce并行運算,計算矩陣乘法。設(shè)a=(aij)mn,b=(bjk)nl,那么相乘結(jié)果c=(cik)ml。在map階段,把來自表a的元素aij,標(biāo)識成l條<key,value>的形式,其中key=(i,k),k=1,2,…,l,value=(a,j,aij);把來自表b的元素,標(biāo)識成m條<key,value>的形式,其中key=(i,k),k=1,2,…,m,value=(b,j,bik)。這樣,把參與計算cik的數(shù)據(jù)歸為一類。通過value,我們能區(qū)分元素是來自a還是b,以及具體的位置。在combine階段,相同key的value會被加入到同一個列表中,形成<key,list(value)>對,傳遞給reduce,這個由hadoop自動完成。接下來把list(value)解析出來,來自a的元素,單獨放在一個數(shù)組中,來自b的元素,放在另一個數(shù)組中,然后,我們計算兩個數(shù)組(各自看成一個向量)的點積,即可算出cik的值。s4推薦結(jié)果存儲:將獲取的推薦結(jié)果發(fā)送至應(yīng)用層的數(shù)據(jù)庫中存儲。s5結(jié)果推薦:應(yīng)用層根據(jù)推薦結(jié)果對用戶進(jìn)行推薦。見圖2,一種基于云計算的智能推薦系統(tǒng),包括:業(yè)務(wù)系統(tǒng)模塊,用于記錄用戶的行為和對物品的打分,并將數(shù)據(jù)存儲至數(shù)據(jù)庫;第一定時器模塊,用于每隔若干小時,由數(shù)據(jù)庫增量向hdfs導(dǎo)入數(shù)據(jù),其中,hdfs為hadoop分布式文件系統(tǒng);可選的,數(shù)據(jù)庫增量向hdfs導(dǎo)入的數(shù)據(jù)包括用戶id、物品id、價值和時間(userid、itemid、value、time)。mapreduce模塊,用于大數(shù)據(jù)并行運算,運行推薦算法將hdfs中的推薦結(jié)果發(fā)送至業(yè)務(wù)系統(tǒng)模塊的數(shù)據(jù)庫;第二定時器模塊,用于實現(xiàn)從hdfs導(dǎo)出推薦結(jié)果到數(shù)據(jù)庫的間隔時間。推薦系統(tǒng)工作過程如下:業(yè)務(wù)系統(tǒng)模塊記錄用戶的行為和對物品的打分,設(shè)置系統(tǒng)定時器,每若干小時,增量向hdfs導(dǎo)入數(shù)據(jù),完成導(dǎo)入后,通過第一定時器模塊設(shè)置系統(tǒng)定時器,啟動mapreduce程序,運行推薦算法,完成計算后,通過第二計時器模塊設(shè)置系統(tǒng)定時器,從hdfs導(dǎo)出推薦結(jié)果數(shù)據(jù)到數(shù)據(jù)庫,方便以后的及時查詢。本發(fā)明的程序開發(fā)的系統(tǒng)環(huán)境分為兩個,一是主機(jī)下的windows環(huán)境,使用java1.8.0_60和eclipsemars;二是使用vmwareworkstation創(chuàng)建虛擬機(jī)搭建hadoop集群系統(tǒng)環(huán)境,包含3個節(jié)點:1個主機(jī)節(jié)點master和2個從機(jī)節(jié)點slave1、slave2,并通過局域網(wǎng)連接三個節(jié)點。每臺機(jī)子環(huán)境如下:linux:ubuntu12.04.2lts64bitserverjava:1.8.0_121hadoop:hadoop-1.2.1mapreduce程序?qū)崿F(xiàn):新建java類:recommend.java,主任務(wù)啟動程序step1.java,按用戶分組,計算所有物品出現(xiàn)的組合列表,得到用戶對物品的評分矩陣step2.java,對物品組合列表進(jìn)行計數(shù),建立物品的同現(xiàn)矩陣step3.java,對同現(xiàn)矩陣和評分矩陣轉(zhuǎn)型step4.java,合并矩陣,并計算推薦結(jié)果列表hdfsdao.java,hdfs操作工具類相比
背景技術(shù):
中介紹的內(nèi)容,本發(fā)明效率高,算法并行計算處理,相比于現(xiàn)在單機(jī)串行處理效率更高;可擴(kuò)展性好,hadoop是一個開源平臺,任何對于算法優(yōu)化的方法都可以隨時進(jìn)行實驗。以上所述僅是本發(fā)明的優(yōu)選實施方式,而非對其限制;應(yīng)當(dāng)指出,盡管參照上述各實施例對本發(fā)明進(jìn)行了詳細(xì)說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解,其依然可以對上述各實施例所記載的技術(shù)方案進(jìn)行修改,或?qū)ζ渲胁糠只蛘呷考夹g(shù)特征進(jìn)行等同替換;而這些修改和替換,并不使相應(yīng)的技術(shù)方案的本質(zhì)脫離本發(fā)明各實施例技術(shù)方案的范圍。當(dāng)前第1頁12