下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、基于hadoop作品推薦系統(tǒng)設(shè)計說明書1.引言Hadoop是一個開發(fā)和運(yùn)行處理大規(guī)模數(shù)據(jù)的軟件平臺,是Appach的一個用java語言實現(xiàn)開源軟件框架,實現(xiàn)在大量計算機(jī)組成的集群中對海量數(shù)據(jù)進(jìn)行分布式計算,同時它也是當(dāng)前最流行的云計算平臺,作為IT界的開發(fā)人員,我們也要跟上節(jié)奏,抓住機(jī)遇。本文通過Hadoop云計算平臺實現(xiàn)一個推薦系統(tǒng),希望通過編寫本文,能夠?qū)adoop有一個基本的了解。1.2 背景隨著互聯(lián)網(wǎng)技術(shù)的興起,視頻網(wǎng)站、社交網(wǎng)站、微博等廣泛應(yīng)用,用戶在上網(wǎng)體驗的過程中,產(chǎn)生了大量的用戶信息移動互聯(lián)網(wǎng)的迅速發(fā)展,使得用戶隨時隨地的產(chǎn)生海量數(shù)據(jù)。面對海量數(shù)據(jù),單機(jī)運(yùn)行處理的模式不論從效
2、率或處理能力上來講,都已經(jīng)滿足不了如今數(shù)據(jù)挖掘的需求。在信息過載的大背景下,本文研究內(nèi)容應(yīng)運(yùn)而生。我們選取ApacheHadoop作為本應(yīng)用系統(tǒng)的分布式計算平臺。Hadoop主要由兩大核心模塊組成:分布式文件系統(tǒng)HDFS和分布式批處理框架MapReduce兩部分組成。HDFS為我們提供了包括大規(guī)模文件存儲系統(tǒng)以及對應(yīng)可靠的備份管理機(jī)制的高容錯性、高吞吐量的海量數(shù)據(jù)存儲解決方案,而MapReduce編程模型為開發(fā)人員提供便利的分布式應(yīng)用開發(fā)接口,如通信、同步、調(diào)度計算、負(fù)載均衡、處理機(jī)器異常等分布式計算和分布式系統(tǒng)常常遇到的復(fù)雜難題則交由Hadoop平臺解決,對于上層開發(fā)人員來說是透明的。Had
3、oop是一個可靠、高效、可擴(kuò)展的開源分布式軟件框架解決方案和工業(yè)級應(yīng)用,主要用于大規(guī)模數(shù)據(jù)的存儲和離線業(yè)務(wù)計算處理,目前被很多大型網(wǎng)站和公司支持和采用,并取得很好的應(yīng)用效果。本項目名稱為:基于hadoopmapreduce的作品推薦系統(tǒng)開發(fā)者:楊建拙,張鎮(zhèn),胡志偉,王政。1.3 定義MapReduce:MapReduce是Google于2004年出的一個軟件架構(gòu),此概念首次出現(xiàn)在JeffreyDean和SanjayGhemawat發(fā)表的論文“MapReduce:SimplifiedDataProcessinginLargeClusters”中。MapReduce編程模型主要用于大規(guī)模數(shù)據(jù)集的并
4、行計算,其中Map表不'Reducer映射,表不'化簡。Hadoop:是MapReduce編程模型的開源實現(xiàn)。1.4參考資料1JeffreyDean,SanjayGhemawat,USENIXAssociationetal.MapReduce:SimplifiedDataProcessingonLargeClustersC.ProceedingsoftheSixthSymposiumonOperatingSystemsDesignandImplementation(OSDf04).2004:137-149.2楊婷基于MapReduce的好友推薦系統(tǒng)的研究與實現(xiàn)。2.系統(tǒng)的結(jié)構(gòu)推
5、薦系統(tǒng)模型圖,祝隹千人品好-a出個人就好*三-謾供推不-Hadoop平臺硬件部署圖rnri$tcfB£。6V/nc>dciikxfcNS01jnodc4node,IKXkjf集群結(jié)構(gòu)(HDFS結(jié)合MR)MasterSlave2SlaveNTaskTracker.MR數(shù)據(jù)運(yùn)算DataNodeTaskTracker數(shù)據(jù)存情NameNodeJobTracker-iDataNodeTaskTrackerDataNode3. Mahout推薦算法模塊設(shè)計說明3.1 模塊描述推薦算法計算層是整個系統(tǒng)的核心模塊,主要組成是Hadoop平臺以及部署在平臺上的已經(jīng)MapReduce并行化的一系列
6、抽象算法的集成,計算層不關(guān)心具體的業(yè)務(wù)邏輯的流程,而只負(fù)責(zé)用戶歷史日志數(shù)據(jù)的處理。例如物質(zhì)擴(kuò)散算法,計算輸入為(用戶ID,作品ID,評分?jǐn)?shù))三元組,在后臺進(jìn)行MapReduce并行化計算,然后將計算結(jié)果保存在存儲層,以便讓用戶對結(jié)果進(jìn)行請求,返回推薦結(jié)果。Mahout是ApacheSoftwareFoundation頂級的免費(fèi)開源項目,它是從Lucene發(fā)展而來的,是一個數(shù)據(jù)挖掘、機(jī)器學(xué)習(xí)、個性化推薦等若干算法庫,為程序員提供了高效算法實例。Mahout中實現(xiàn)了很多算法,如分類聚類、推薦技術(shù)、頻繁項挖掘等。經(jīng)過調(diào)用Hadoop庫,它能夠有效的在Hadoop云計算平臺上運(yùn)行。為了提高算法的處理性
7、能,Mahout把運(yùn)行于單機(jī)中的算法轉(zhuǎn)變成MapReduce計算的模式。Mahoutt推薦算法,從數(shù)據(jù)處理能力上,可以劃分為2類:1) 機(jī)內(nèi)存算法實現(xiàn)2) 基于Hadoop的分步式算法實現(xiàn)3) .單機(jī)內(nèi)存算法實現(xiàn)單機(jī)內(nèi)存算法實現(xiàn):就是在單機(jī)下運(yùn)行的算法,是由cf.taste項目實現(xiàn)的,像我的們熟悉的UserCF,ItemCF都支持單機(jī)內(nèi)存運(yùn)行,并且參數(shù)可以靈活配置。單機(jī)算法的基本實例,請參考文章:用Maven構(gòu)建Mahout項目單機(jī)內(nèi)存算法的問題在于,受限于單機(jī)的資源。對于中等規(guī)模的數(shù)據(jù),像1G,10G的數(shù)據(jù)量,有能力進(jìn)行計算,但是超過100G的數(shù)據(jù)量,對于單機(jī)來說是不可能完成的任務(wù)。4) .
8、基于Hadoop的分步式算法實現(xiàn)基于Hadoop的分步式算法實現(xiàn):就是把單機(jī)內(nèi)存算法并行化,把任務(wù)分散到多臺計算機(jī)一起運(yùn)行。Mahout提供了ItemCF基于Hadoop并行化算法實現(xiàn)?;贖adoop的分步式算法實現(xiàn)。分步式并行算法的問題在于,如何讓單機(jī)算法并行化。在單機(jī)算法中,我們只需要考慮算法,數(shù)據(jù)結(jié)構(gòu),內(nèi)存,CPU就夠了,但是分步式算法還要額外考慮很多的情況,比如多節(jié)點的數(shù)據(jù)合并,數(shù)據(jù)排序,網(wǎng)路通信的效率,節(jié)點宕機(jī)重算,數(shù)據(jù)分步式存儲等等的很多問題。3.2 功能用Mahout來構(gòu)建推薦系統(tǒng)。Mahout完整地封裝了“協(xié)同過濾”算法,并實現(xiàn)了并行化,提供非常簡單的API接口;但因為我們不
9、了解算法細(xì)節(jié),很難去根據(jù)業(yè)務(wù)的場景進(jìn)行算法配置和調(diào)優(yōu)。該模塊使用Mahout基于Hadoop的分步式算法實現(xiàn):就是把單機(jī)內(nèi)存算法并行化,把任務(wù)分散到多臺計算機(jī)一起運(yùn)行。Mahout提供了ItemCF基于Hadoop并行化算法實現(xiàn)。3.3 性能Mahout提供了2個評估推薦器的指標(biāo),查準(zhǔn)率和召回率(查全率),這兩個指標(biāo)是搜索引擎中經(jīng)典的度量方法。相關(guān)不相關(guān)檢索到AC未檢索到BDA:檢索到的,相關(guān)的(搜到的也想要的)B:未檢索到的,但是相關(guān)的(沒搜到,然而實際上想要的)C:檢索到的,但是不相關(guān)的(搜到的但沒用的)D:未檢索到的,也不相關(guān)的(沒搜到也沒用的)被檢索到的越多越好,這是追求“查全率”,即
10、A/(A+B),越大越好。被檢索到的,越相關(guān)的越多越好,不相關(guān)的越少越好,這是追求“查準(zhǔn)率”,即A/(A+C),越大越好。在大規(guī)模數(shù)據(jù)集合中,這兩個指標(biāo)是相互制約的。當(dāng)希望索引出更多的數(shù)據(jù)的時候,查準(zhǔn)率就會下降,當(dāng)希望索引更準(zhǔn)確的時候,會索引更少的數(shù)據(jù)。3.4 輸入項Mahout的推薦引擎實際接受的輸入是DataModel,它是對用戶偏好數(shù)據(jù)的壓縮表示,通過創(chuàng)建內(nèi)存版DataModel的語句我們可以看出:DataModelmodel=newGenericDataModel(FastByIDMap<PreferenceArray>map);他保存在一個按照用戶ID或者物品ID進(jìn)行散列
11、的PreferenceArray,而PreferenceArray中對應(yīng)保存著這個用戶ID或者物品ID的所有用戶偏好信息。DataModel是用戶喜好信息的抽象接口,它的具體實現(xiàn)支持從任意類型的數(shù)據(jù)源抽取用戶喜好信息,具體實現(xiàn)包括內(nèi)存版的GenericDataModel,支持文件讀取的FileDataModel和支持?jǐn)?shù)據(jù)庫讀取的JDBCDataModel,下面我們看看如何創(chuàng)建各種DataModel。創(chuàng)建各種DataModel/In-mefroryDataModel-GenericDataf4odelFastByllDMap<PrefererceArray>preferentes=n
12、ewFaEtByIDMap-dPreferenceArray>Q;PreferenceArrayprefsForUserl=newGenericUserPreferenceArray(10);qprefsForUserLsetuserIDC011L);prefsForUser1.setltemlDCO,工口1L);prrfsForU&erl.set¥alije(Ofl3,CHF);prefsFor'iJserl-setltemlD(1電102L)JprefsForUsar1-setVaiue(1s4.if);.(8more)preferenices,purt(1
13、LBprefsForUser1);/useuserIDasthekey(ri*oreusers).DataModelmodel=mewGeneriicDataHodel(preferericfts);L/File-basedDataModel-FileDataModelDataModeldatModel=meHFileDataModel(neh'File(F,preferencescsv");/Database-basedDataModelqMySQL3OBCDataModelMysqlDatasourcedatasource=new-MysqlDataSourcet);da
14、taScwrce.setServcrN(Blmy_user'');datasource,setUser(Kmy_passvordi');dataScMjrce-setPasswordC'niy-databas-e_hH3st,r);.DBCDataMcdeldataModel=newMySQLJDataModel(dataSaurce."rny_prefs_tafa1er,"my_U5er_Ui31umn"tem_colunm11B”my-prf-YRluR-Uiolumn");3.5 輸出項用戶/物品牧I品A物品B物品C
15、平均打分344用戶A打分4專|用戶B打分94SlopeOne推理:對物品B的評分=對物品A的評分+10對物品B的評分;對物品C的評分用戶/物品物品A7?;:.:!物品C平均打分344用戶A打分455用戶B打分23.543.6 設(shè)計方法(算法)Mahout提供的協(xié)同過濾的推薦策略最經(jīng)典的三種:UserCF,ItemCF和SlopeOne?,F(xiàn)對這兩種算法進(jìn)行簡單的說明:基于用戶的CF的基本思想相當(dāng)簡單,基于用戶對物品的偏好找到相鄰鄰居用戶,然后將鄰居用戶喜歡的推薦給當(dāng)前用戶。計算上,就是將一個用戶對所有物品的偏好作為一個向量來計算用戶之間的相似度,找到K鄰居后,根據(jù)鄰居的相似度權(quán)重以及他們對物品的
16、偏好,預(yù)測當(dāng)前用戶沒有偏好的未涉及物品,計算得到一個排序的物品列表作為推薦。圖2給出了一個例子,對于用戶A,根據(jù)用戶的歷史偏好,這里只計算得到一個鄰居-用戶C,然后將用戶C喜歡的物品D推薦給用戶Ao基于物品的CF的原理和基于用戶的CF類似,只是在計算鄰居時采用物品本身,而不是從用戶的角度,即基于用戶對物品的偏好找到相似的物品,然后根據(jù)用戶的歷史偏好,推薦相似的物品給他。從計算的角度看,就是將所有用戶對某個物品的偏好作為一個向量來計算物品之間的相似度,得到物品的相似物品后,根據(jù)用戶歷史的偏好預(yù)測當(dāng)前用戶還沒有表示偏好的物品,計算得到一個排序的物品列表作為推薦。圖3給出了一個例子,對于物品A,根據(jù)
17、所有用戶的歷史偏好,喜歡物品A的用戶都喜歡物品C,得出物品A和物品C比較相似,而用戶C喜歡物品A,那么可以推斷出用戶C可能也喜歡物品CoUserCF和ItemCF是最常用最容易理解的兩種CF的推薦策略,但在大數(shù)據(jù)量時,它們的計算量會很大,從而導(dǎo)致推薦效率較差。因此Mahout還提供了一種更加輕量級的CF推薦策略:SlopeOne。SlopeOne是有DanielLemire和AnnaMaclachlan在2005年提出的一種對基于評分的協(xié)同過濾推薦引擎的改進(jìn)方法,假設(shè)系統(tǒng)對于物品A,物品B和物品C的平均評分分別是3,4和4。基于SlopeOne的方法會得到以下規(guī)律:用戶對物品B的評分=用戶對物
18、品A的評分+1用戶對物品B的評分=用戶對物品C的評分基于以上的規(guī)律,我們可以對用戶A和用戶B的打分進(jìn)行預(yù)測:對用戶A,他給物品A打分4,那么我們可以推測他對物品B的評分是5,對物品C的打分也是5。對用戶B,他給物品A打分2,給物品C打分4,根據(jù)第一條規(guī)律,我們可以推斷他對物品B的評分是3;而根據(jù)第二條規(guī)律,推斷出評分是4。當(dāng)出現(xiàn)沖突時,我們可以對各種規(guī)則得到的推斷進(jìn)行就平均,所以給出的推斷是3.5。這就是SlopeOne推薦的基本原理,它將用戶的評分之間的關(guān)系看作簡單的線性關(guān)系:Y=mX+b;當(dāng)m=1時就是SlopeOne,也就是我們剛剛展示的輸入輸出。3.7流程邏輯1.1 據(jù)DataModel創(chuàng)建數(shù)據(jù)之間線性關(guān)系的模型DiffStorage。1.2 于DataModel和DiffStorage創(chuàng)建SlopeOneRecommender,實現(xiàn)SlopeOne推薦策略。3.8 接口算法API:org.apache.mahout.cf.taste.impl.recommender.slopeo
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 設(shè)計安裝協(xié)議書
- 試用技術(shù)協(xié)議書
- 年貨節(jié)安全協(xié)議書
- 英語售后協(xié)議書
- 小吃代理協(xié)議書
- 征收魚塘協(xié)議書
- 自愿搬遷協(xié)議書
- 項目部廉潔協(xié)議書
- 藥房保密協(xié)議書
- 語音標(biāo)注合同范本
- 腫瘤科危急值專題培訓(xùn)課件:《危急值接收、處置流程、??莆<敝导疤幚碓瓌t》
- 海南省部分學(xué)校2023-2024學(xué)年高二下學(xué)期7月期末聯(lián)考 化學(xué)試題(含解析)
- 莎士比亞戲劇賞析智慧樹知到期末考試答案章節(jié)答案2024年北京師范大學(xué)
- 2024年泰安市泰山產(chǎn)業(yè)發(fā)展投資集團(tuán)有限公司招聘筆試沖刺題(帶答案解析)
- 48貴州省貴陽市2023-2024學(xué)年五年級上學(xué)期期末數(shù)學(xué)試卷
- 衛(wèi)浴潔具市場渠道營銷策劃
- 比亞迪S7說明書
- 涂裝生產(chǎn)線設(shè)備維護(hù)方案
- 外委單位考核細(xì)則模板
- HXD1C型電力機(jī)車的日常檢修工藝設(shè)計
- 專升本《模擬電子技術(shù)》模擬的題目試卷
評論
0/150
提交評論