科研-餐飲電子商務(wù)個性化推薦系統(tǒng)推薦算法_第1頁
科研-餐飲電子商務(wù)個性化推薦系統(tǒng)推薦算法_第2頁
科研-餐飲電子商務(wù)個性化推薦系統(tǒng)推薦算法_第3頁
科研-餐飲電子商務(wù)個性化推薦系統(tǒng)推薦算法_第4頁
科研-餐飲電子商務(wù)個性化推薦系統(tǒng)推薦算法_第5頁
已閱讀5頁,還剩10頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、中南大學(xué)科研訓(xùn)練報告餐飲電子商務(wù)個性化推薦系統(tǒng)推薦算法研究 院 系: 軟件學(xué)院班 級: 1105班姓 名: 張學(xué) 號:指導(dǎo)老師: 餐飲電子商務(wù)個性化推薦系統(tǒng)推薦算法研究The Research on recommendation algorithm of Recommendation System in Catering E-Commerce 指導(dǎo)老師: 餐飲電子商務(wù)個性化推薦系統(tǒng)推薦算法科研報告 摘要:本文首先闡述了本算法的思想,基于分類的協(xié)同過濾推薦算法。給出了形式化的數(shù)學(xué)表達(dá)式。給出了協(xié)同過濾算法部分的詳細(xì)代碼和實驗過程。然后,本文討論了實驗平臺的改進(jìn)設(shè)想。最后討論了基于Hadoop和M

2、ahout 平臺推薦算法的實現(xiàn)。Abstract: This paper first expounds the thought of this algorithm, the collaborative filtering recommendation algorithm based on classification. The formal mathematical expressions are given. Detailed code part of the collaborative filtering algorithm is proposed and the experim

3、ental process. Then this paper discusses the experiment platform of improvement ideas. In the end implementation of recommended algorithm is discussed based on Hadoop and Mahout  platform.關(guān)鍵詞:推薦系統(tǒng);協(xié)同過濾;Hadoop; Mahout Key words: recommendation system; Collaborative filtering; Hadoop一、 算法概述不

4、同的推薦系統(tǒng),它們的推薦算法和評價指標(biāo)都不盡相同。作為餐飲推薦系統(tǒng),至少存在以下幾個方面,與傳統(tǒng)(如圖書)的推薦系統(tǒng)(購買行為)不同。(1)受地域和消費水平影響非常大。對于餐飲來說,極少會有去很遠(yuǎn)的地方或與自身消費相去甚遠(yuǎn)的餐館消費。(2)餐飲往往還有社交因素。有很多餐飲消費發(fā)生在宴請、聚餐等行為。(3)餐飲還有重復(fù)性消費的特點。由于時間和本人自身水平問題,很多問題尚不能考慮完全。暫且提出如下的推薦算法。(1) 根據(jù)餐館和用戶的位置,將餐館和用戶分類。相同地區(qū)的餐館和用戶才能發(fā)生相應(yīng)關(guān)系。這樣做第一可以提高推薦質(zhì)量,更主要的是可以減少算法的開銷。(2) 根據(jù)購買記錄、瀏覽記錄以及用戶興趣模型綜

5、合評分。這樣可以在一定程度上解決冷啟動問題和評分稀疏性問題。(3) 根據(jù)評分利用協(xié)同過濾方法進(jìn)行推薦。二、 協(xié)同過濾算法的實現(xiàn)2.1基于用戶的協(xié)同過濾算法主要步驟描述由于時間問題和實驗條件(缺乏實驗數(shù)據(jù)源),本次訓(xùn)練暫且實現(xiàn)了基于用戶的協(xié)同過濾算法。算法的主要步驟如下。數(shù)據(jù)表示:在Userbased協(xié)同過濾推薦中,必須根據(jù)不同用戶對商品的評分信息產(chǎn)生推薦結(jié)果。用戶評分?jǐn)?shù)據(jù)可以用一個mn階矩陣A(m,n)表示,m行代表m個用戶,n列代表n個項,第i行第j列的元素凡J代表用戶i對項j的評分。用戶評分?jǐn)?shù)據(jù)矩陣如圖2.1所示。 圖2.1: 用戶評分矩陣 最近鄰查詢:最近鄰查詢是整個Useobased協(xié)

6、同過濾推薦算法的核心部分,其效果和效率很大程度上決定了User一based協(xié)同過濾推薦算法的效果和效率。所謂最近鄰居,就是購買行為或評分行為與當(dāng)前用戶比較相似的若干用戶。最近鄰查詢階段實質(zhì)上就是Userbased協(xié)同過濾推薦算法的模型建立階段。1). 余弦相似性(Cosine):用戶評分看作為n維項空間上的向量,如果用戶對項沒有進(jìn)行評分,則將用戶對該項的評分設(shè)為O,用戶間的相似性通過向量間的余弦夾角度量。設(shè)用戶i和用戶j在n維項空間上的評分分別表示為向量I,j,則用戶i和用戶j之間的相似性sim(I,j)為:分子為兩個用戶評分向量的內(nèi)積,分母為兩個用戶向量模的乘積。通過上面提出的相似性度量方法

7、得到目標(biāo)用戶的最近鄰居,下一步需要產(chǎn)生相應(yīng)的推薦。設(shè)用戶u的最近鄰居集合用刀N公表示,則用戶u對項i的預(yù)測評分pu,可以通過用戶u對最近鄰居集合凡嘰中項的評分得到,計算方法如下 sim(u,n)表示用戶u與用戶n之間的相似性,Rn.j表示用戶n對項i的評分。Ru和Rn分別表示用戶u和用戶n對項的平均評分。2.2 實驗的具體方法和步驟 實驗環(huán)境: 開發(fā)工具:MyEclipe8.5 語音:java數(shù)據(jù)源;用戶評分矩陣static double userScore = new double 2,4,4,4,3,3,2,2,3,2,3,4,2,4,2,3,1,3,4,3,3,3,1,2,1,3,4,3

8、,3,5,3,2,1,3,5,4,4,3,2,1,3,2,3,3,3,3,2,3,3,4,4,3,3,3,2,2,4,2,5,3,3,3,1,1,;相關(guān)代碼:import java.util.Arrays;public class userCF /* * param args */ 索引分別代表用戶和商品,項代表用戶對商品的評分static double userScore = new double 2,4,4,4,3,3,2,2,3,2,3,4,2,4,2,3,1,3,4,3,3,3,1,2,1,3,4,3,3,5,3,2,1,3,5,4,4,3,2,1,3,2,3,3,3,3,2,3,3,

9、4,4,3,3,3,2,2,4,2,5,3,3,3,1,1,;static double sim = new double0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,;static double preScore = new double0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0

10、,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,;/ 相似用戶集合static int nearUser = new int0,0,0;/ 計算相似度矩陣public static void setSim()for(int i=0;i<8;i+)for(int j= 0;j<8;j+)simij= vectorInnerProduct(i,j) / vectorProduct(i, j);/ 計算向量模的乘積public static double vectorProduct (int vector1,int vector2

11、)int Product1 = 0;int Product2 = 0;for(int i = 0;i<8;i+)Product1 += userScorevector1i * userScorevector1i;for(int i = 0;i<8;i+)Product2 += userScorevector2i * userScorevector2i;return Math.sqrt(Product1) * Math.sqrt(Product2);/ 計算向量內(nèi)積public static double vectorInnerProduct (int vector1,int vec

12、tor2)double toutle = 0;for(int i = 0;i<8;i+)toutle += userScorevector1i * userScorevector2i;return toutle;/ 功能:將相似度最大的三個用戶索引號按序儲存在數(shù)組nearUserpublic static void simMax(int user) double tempSort = new double8; for(int i=0;i<8;i+) tempSorti = simuseri; Arrays.sort(tempSort); for(int i=0;i<8;i+)

13、 if(tempSort6=simuseri) nearUser0= i; break; for(int i=0;i<8;i+) if(tempSort5=simuseri) nearUser1= i; break; for(int i=0;i<8;i+) if(tempSort4=simuseri) nearUser2= i; break; / 計算用戶對項目的平均評分public static double avgUserToItem(int user) double totalUserToItem = 0;for(int i = 0; i<8; i+)totalUser

14、ToItem += userScoreuseri;return totalUserToItem / 8;/ 計算預(yù)測得分public static double predictiveScore(int user,int item) double Score = 0;double sum1 = 0;double sum2 = 0; for(int i = 0;i <3;i+) sum1 += simuser nearUseri *( userScorenearUseriitem - avgUserToItem(nearUseri); for(int i = 0;i <3;i+) su

15、m2 += simuser nearUseri ; Score = avgUserToItem(user) + sum1/sum2 ;return Score;public static void main(String args) / TODO Auto-generated method stubsetSim();simMax(0);for(int i = 0; i <8; i+)for(int j = 0; j < 8; j+)preScoreij = predictiveScore(i,j );for(int i = 0; i < 8; i+)for(int j = 0

16、; j < 8; j+)System.out.print(preScoreij + " ");System.out.println(); / 平均準(zhǔn)確度誤差double avePre = 0;double totlePre = 0;for(int i = 0; i <8; i+)for(int j = 0; j < 8; j+)totlePre += Math.abs( userScoreij-preScoreij) / userScoreij );avePre = totlePre / 64; / 平均準(zhǔn)確度隨機(jī)誤差double avePreR = 0;

17、double totlePreR = 0;for(int i = 0; i <8; i+)for(int j = 0; j < 8; j+)totlePreR += Math.abs( userScoreij-Math.random()*5) / userScoreij );avePre = totlePre / 64;System.out.println(avePre);avePreR = totlePreR / 64;System.out.println(avePreR);2.3 實驗的運行結(jié)果如圖2.3所示 圖2.3:運行結(jié)果圖可知采用此算法平均誤差百分比為25.13%采用隨

18、機(jī)數(shù)對比平均誤差百分比為61.63%實驗表明本算法是具有顯著效果的。如果是客觀的數(shù)據(jù)源,我相信其準(zhǔn)確率還會增加。三、 實驗平臺的改進(jìn)在數(shù)據(jù)挖掘中,往往是大規(guī)模數(shù)據(jù)。本次實驗室在極為普通的環(huán)境下實現(xiàn),并沒有考慮到實際應(yīng)用中的問題。本次科研訓(xùn)練中我也嘗試在一些專業(yè)的平臺下實驗。3.1 weka平臺眾所周知,weka是一款極為流行的數(shù)據(jù)挖掘平臺工具。研究生助教也是給我們介紹的是這個平臺。Weka平臺我認(rèn)為有以下幾個優(yōu)點:(1)使用簡單。很多數(shù)據(jù)挖掘算法只要輕輕一點,即可完成。(2)數(shù)據(jù)圖形化。很多算法可以提供圖形化的結(jié)果和挖掘過程。(3)開源免費??梢赃M(jìn)行二次開發(fā)。Weka平臺如果想加入自己的算法,

19、就必須根據(jù)其源碼進(jìn)行二次開發(fā)。我的開發(fā)環(huán)境為MyEclipe8.5。導(dǎo)入開發(fā)包后的工程目錄如圖3.1所示。 圖3.1: 工程目錄主要的包如圖3.2所示。 圖3.2:主要的包目錄如包的名字所示。主要算法在相對的包中,weka.core提供了基本的功能類(類目錄如圖3.3所示)。主要的類有Attribute類,提供了屬性的相關(guān)操作。Instance類提供了實例的相關(guān)操作。Weka.gui包提供了關(guān)于圖形化界面的相關(guān)功能。 圖3.3:weka.core包目錄加入算法的步驟比較簡單。根據(jù)weka的API規(guī)范寫出算法類。然后可以在圖形化接口中加入相關(guān)算法的選項。但是我們做的有關(guān)推薦算法,比如協(xié)同推薦,在

20、weka中卻沒有任何體現(xiàn)和相關(guān)類或接口。所以我認(rèn)為用weka作為實驗工具做個性化推薦算法不是一個好的選擇。3.2 Hadoop和Mahout 平臺Hadoop 是當(dāng)前熱門的云計算解決方案之一, 是Apache 組織的一個開源的分布式計算平臺, 以Hadoop 分布式文件系統(tǒng)(HDFS)和MapReduce 為核心為用戶提供了系統(tǒng)底層細(xì)節(jié)透明的分布式基礎(chǔ)架構(gòu). 從而用戶可以利用Hadoop 輕松地組織計算機(jī)資源, 搭建自己的分布式計算平臺, 并且可以充分利用集群的計算和存儲能力, 完成海量數(shù)據(jù)的處理.現(xiàn)在Hadoop 已經(jīng)發(fā)展成為包含了多個子項目的集合, 它們提供互補(bǔ)性服務(wù)或在核心層上

21、提供了更高層的服務(wù)。顯然利用Hadoop平臺是一個非常好的選擇。在選擇數(shù)據(jù)庫(數(shù)據(jù)倉庫)上HBase是個很好的選擇。HBase是一個分布式、面向列的開源數(shù)據(jù)庫, 在Hadoop 之上提供類似Bigtable 的能力. 不同于一般關(guān)系數(shù)據(jù)庫的數(shù)據(jù)模型, 用戶將數(shù)據(jù)存儲在一個表里,一個數(shù)據(jù)行擁有一個可選擇的鍵和任意數(shù)量的列. 主要用于需要隨機(jī)訪問、實時讀取的大數(shù)據(jù). 相比其他傳統(tǒng)關(guān)系型數(shù)據(jù)庫, HBase 數(shù)據(jù)庫有以下優(yōu)勢.HBase 是一個基于列模式的映射數(shù)據(jù)庫, HTable為null 的Column 不會被存儲, 這樣既節(jié)省了空間又提高了讀性能, 很適宜存儲松散型數(shù)據(jù).HBase 架構(gòu)在Ha

22、doop 上, 不僅具有很好的可收縮性, 當(dāng)數(shù)據(jù)越來越大時, 只要擴(kuò)展Hadoop 集群, HBase會自動水平切分?jǐn)U展, 跟Hadoop 的無縫集合保障了其數(shù)據(jù)庫可靠性和海量數(shù)據(jù)分析的高性能.HBase 能夠結(jié)合使用MapReduce 編程框架并行處理大規(guī)模數(shù)據(jù), 使得數(shù)據(jù)存儲與并行計算完美地結(jié)合在一起。 實際上Apache基金會還提供了另一個關(guān)于機(jī)器學(xué)習(xí)和數(shù)據(jù)挖掘的開源項目Mahout。 Mahout平臺Mahout 是 Apache Software Foundation(ASF) 旗下的一個開源項目,提供一些可擴(kuò)展的機(jī)器學(xué)習(xí)領(lǐng)域經(jīng)典算法的實現(xiàn),旨在幫助開發(fā)人員更加方便快捷地創(chuàng)建智能應(yīng)用程序。Mahout包含許多實現(xiàn),包括聚類、分類、推薦過濾、頻繁子項挖掘。此外,通過使用 Apache Hadoop 庫,Mahout 可以有效地擴(kuò)展到云中。Mahout項目中給出了一個關(guān)于協(xié)同過濾算法的高效實現(xiàn)。其相關(guān)的組件圖如3.4所示。 圖3.4:Mahout中協(xié)同過濾算法實現(xiàn)的組件圖 很遺憾,由于時間的限制,我還沒有完成Hadoop和Mahout平臺上關(guān)于本算法和系統(tǒng)的實現(xiàn)。四、 科研訓(xùn)練總結(jié)本次科研訓(xùn)練,我對數(shù)據(jù)挖掘,特別是個性化推薦系統(tǒng)有了一定了解。鍛煉了我一定的自學(xué)能力和科研能力。掌握了做科研的部分方法,如查文獻(xiàn)等。對我的成長具有很大的幫助。本次訓(xùn)練也留下了很多

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論