版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
..高級數(shù)據(jù)挖掘期末大作業(yè)基于協(xié)同過濾算法的電影推薦系統(tǒng)本電影推薦系統(tǒng)中運用的推薦算法是基于協(xié)同過濾算法〔CollaborativeFilteringRecommendation。協(xié)同過濾是在信息過濾和信息系統(tǒng)中正迅速成為一項很受歡迎的技術(shù)。與傳統(tǒng)的基于內(nèi)容過濾直接分析內(nèi)容進行推薦不同,協(xié)同過濾分析用戶興趣,在用戶群中找到指定用戶的相似〔興趣用戶,綜合這些相似用戶對某一信息的評價,形成系統(tǒng)對該指定用戶對此信息的喜好程度預(yù)測。電影推薦系統(tǒng)中引用了ApacheMahout提供的一個協(xié)同過濾算法的推薦引擎Taste,它實現(xiàn)了最基本的基于用戶和基于內(nèi)容的推薦算法,并提供了擴展接口,使用戶方便的定義和實現(xiàn)自己的推薦算法。電影推薦系統(tǒng)是基于用戶的推薦系統(tǒng),即當(dāng)用戶對某些電影評分之后,系統(tǒng)根據(jù)用戶對電影評分的分值,判斷用戶的興趣,先運用UserSimilarity計算用戶間的相似度.UserNeighborhood根據(jù)用戶相似度找到與該用戶口味相似的鄰居,最后由Recommender提供推薦個該用戶可能感興趣的電影詳細(xì)信息。將用戶評過分的電影信息和推薦給該用戶的電影信息顯示在網(wǎng)頁結(jié)果頁中,推薦完成。一、Taste介紹Taste是ApacheMahout提供的一個個性化推薦引擎的高效實現(xiàn),該引擎基于java實現(xiàn),可擴展性強,同時在mahout中對一些推薦算法進行了MapReduce編程模式轉(zhuǎn)化,從而可以利用hadoop的分布式架構(gòu),提高推薦算法的性能。在Mahout0.5版本中的Taste,實現(xiàn)了多種推薦算法,其中有最基本的基于用戶的和基于內(nèi)容的推薦算法,也有比較高效的SlopeOne算法,以及處于研究階段的基于SVD和線性插值的算法,同時Taste還提供了擴展接口,用于定制化開發(fā)基于內(nèi)容或基于模型的個性化推薦算法。Taste不僅僅適用于Java應(yīng)用程序,還可以作為內(nèi)部服務(wù)器的一個組件以HTTP和WebService的形式向外界提供推薦的邏輯。Taste的設(shè)計使它能滿足企業(yè)對推薦引擎在性能、靈活性和可擴展性等方面的要求。下圖展示了構(gòu)成Taste的核心組件:從上圖可見,Taste由以下幾個主要組件組成:DataModel:DataModel是用戶喜好信息的抽象接口,它的具體實現(xiàn)支持從指定類型的數(shù)據(jù)源抽取用戶喜好信息。在Mahout0.5中,Taste提供JDBCDataModel和FileDataModel兩種類的實現(xiàn),分別支持從數(shù)據(jù)庫和文件文件系統(tǒng)中讀取用戶的喜好信息。對于數(shù)據(jù)庫的讀取支持,在Mahout0.5中只提供了對MySQL和PostgreSQL的支持,如果數(shù)據(jù)存儲在其他數(shù)據(jù)庫,或者是把數(shù)據(jù)導(dǎo)入到這兩個數(shù)據(jù)庫中,或者是自行編程實現(xiàn)相應(yīng)的類。UserSimilarit和ItemSimilarity:前者用于定義兩個用戶間的相似度,后者用于定義兩個項目之間的相似度。Mahout支持大部分駐留的相似度或相關(guān)度計算方法,針對不同的數(shù)據(jù)源,需要合理選擇相似度計算方法。UserNeighborhood:在基于用戶的推薦方法中,推薦的內(nèi)容是基于找到與當(dāng)前用戶喜好相似的"鄰居用戶"的方式產(chǎn)生的,該組件就是用來定義與目標(biāo)用戶相鄰的"鄰居用戶"。所以,該組件只有在基于用戶的推薦算法中才會被使用。Recommender:Recommender是推薦引擎的抽象接口,Taste中的核心組件。利用該組件就可以為指定用戶生成項目推薦列表。二、相似性度量本章節(jié)將系統(tǒng)中用到的幾個相似性度量函數(shù)作以介紹,taste中已經(jīng)具體實現(xiàn)了各相似性度量類。UserCF和ItemCF都依賴于相似度的計算,因為只有通過衡量用戶之間或物品之間的相似度,才能找到用戶的"鄰居",才能完成推薦。下面就對常用的相似度計算方法進行詳細(xì)的介紹:1.基于皮爾森相關(guān)性的相似度——Pearsoncorrelation-basedsimilarity皮爾森相關(guān)系數(shù)反應(yīng)了兩個變量之間的線性相關(guān)程度,它的取值在[-1,1]之間。當(dāng)兩個變量的線性關(guān)系增強時,相關(guān)系數(shù)趨于1或-1;當(dāng)一個變量增大,另一個變量也增大時,表明它們之間是正相關(guān)的,相關(guān)系數(shù)大于0;如果一個變量增大,另一個變量卻減小,表明它們之間是負(fù)相關(guān)的,相關(guān)系數(shù)小于0;如果相關(guān)系數(shù)等于0,表明它們之間不存在線性相關(guān)關(guān)系。用數(shù)學(xué)公式表示,皮爾森相關(guān)系數(shù)等于兩個變量的協(xié)方差除于兩個變量的標(biāo)準(zhǔn)差。Pearsoncorrelation-basedsimilarity協(xié)方差〔Covariance:在概率論和統(tǒng)計學(xué)中用于衡量兩個變量的總體誤差。如果兩個變量的變化趨于一致,也就是說如果其中一個大于自身的期望值,另一個也大于自身的期望值,那么兩個變量之間的協(xié)方差就是正值;如果兩個變量的變化趨勢相反,則協(xié)方差為負(fù)值。Covariance其中u表示X的期望E<X>,v表示Y的期望E<Y>標(biāo)準(zhǔn)差〔StandardDeviation:標(biāo)準(zhǔn)差是方差的平方根StandardDeviation方差<Variance>:在概率論和統(tǒng)計學(xué)中,一個隨機變量的方差表述的是它的離散程度,也就是該變量與期望值的距離。Variance即方差等于誤差的平方和的期望基于皮爾森相關(guān)系數(shù)的相似度有兩個缺點:
<1>沒有考慮〔takeintoaccount用戶間重疊的評分項數(shù)量對相似度的影響;
<2>如果兩個用戶之間只有一個共同的評分項,相似度也不能被計算Table1上表中,行表示用戶〔1~5對項目〔101~103的一些評分值。直觀來看,User1和User5用3個共同的評分項,并且給出的評分走差也不大,按理他們之間的相似度應(yīng)該比User1和User4之間的相似度要高,可是User1和User4有一個更高的相似度1。同樣的場景在現(xiàn)實生活中也經(jīng)常發(fā)生,比如兩個用戶共同觀看了200部電影,雖然不一定給出相同或完全相近的評分,他們之間的相似度也應(yīng)該比另一位只觀看了2部相同電影的相似度高吧!但事實并不如此,如果對這兩部電影,兩個用戶給出的相似度相同或很相近,通過皮爾森相關(guān)性計算出的相似度會明顯大于觀看了相同的200部電影的用戶之間的相似度。Mahout對基于皮爾森相關(guān)系數(shù)的相似度給出了實現(xiàn),它依賴一個DataModel作為輸入。PearsonCorrelationSimilarity
同時,Mahout還針對缺點<1>進行了優(yōu)化,只需要在構(gòu)造PearsonCorrelationSimilarity時多傳入一個Weighting.WEIGHTED參數(shù),就能使有更多相同評分項目的用戶之間的相似度更趨近于1或-1。UserSimilaritysimilarity1=newPearsonCorrelationSimilarity<model>;doublevalue1=similarity1.userSimilarity<1,5>;UserSimilaritysimilarity2=newPearsonCorrelationSimilarity<model,Weighting.WEIGHTED>;doublevalue2=similarity2.userSimilarity<1,5>;結(jié)果:
SimilarityofUser1andUser5withweighting:0.96556948907691752.基于歐幾里德距離的相似度——EuclideanDistance-basedSimilarity歐幾里德距離計算相似度是所有相似度計算里面最簡單、最易理解的方法。它以經(jīng)過人們一致評價的物品為坐標(biāo)軸,然后將參與評價的人繪制到坐標(biāo)系上,并計算他們彼此之間的直線距離。EuclideanDistance2-CoordinateTable2圖中用戶A和用戶B分別對項目X、Y進行了評分。用戶A對項目X的評分為2,對項目Y的評分為4,表示到坐標(biāo)系中為坐標(biāo)點A<1.8,4>;同樣用戶B對項目X、Y的評分表示為坐標(biāo)點B<4.5,2.5>,因此他們之間的歐幾里德距離〔直線距離為:sqrt<<B.x-A.x>^2+<A.y-B.y>^2>EuclideanDistance計算出來的歐幾里德距離是一個大于0的數(shù),為了使其更能體現(xiàn)用戶之間的相似度,可以把它規(guī)約到<0,1]之間,具體做法為:1/<1+d>。參見Table2EuclideanDistance-basedSimilarity只要至少有一個共同評分項,就能用歐幾里德距離計算相似度;如果沒有共同評分項,那么歐幾里德距離也就失去了作用。其實照常理理解,如果沒有共同評分項,那么意味著這兩個用戶或物品根本不相似。3.余弦相似度——CosineSimilarity余弦相似度用向量空間中兩個向量夾角的余弦值作為衡量兩個個體間差異的大小。相比距離度量,余弦相似度更加注重兩個向量在方向上的差異,而非距離或長度上。CosineSimilarity與歐幾里德距離類似,基于余弦相似度的計算方法也是把用戶的喜好作為n-維坐標(biāo)系中的一個點,通過連接這個點與坐標(biāo)系的原點構(gòu)成一條直線〔向量,兩個用戶之間的相似度值就是兩條直線〔向量間夾角的余弦值。因為連接代表用戶評分的點與原點的直線都會相交于原點,夾角越小代表兩個用戶越相似,夾角越大代表兩個用戶的相似度越小。同時在三角系數(shù)中,角的余弦值是在[-1,1]之間的,0度角的余弦值是1,180角的余弦值是-1。借助三維坐標(biāo)系來看下歐氏距離和余弦相似度的區(qū)別:DistanceandCosine3-Coordinates從圖上可以看出距離度量衡量的是空間各點間的絕對距離,跟各個點所在的位置坐標(biāo)〔即個體特征維度的數(shù)值直接相關(guān);而余弦相似度衡量的是空間向量的夾角,更加的是體現(xiàn)在方向上的差異,而不是位置。如果保持A點的位置不變,B點朝原方向遠(yuǎn)離坐標(biāo)軸原點,那么這個時候余弦相似度cosθ是保持不變的,因為夾角不變,而A、B兩點的距離顯然在發(fā)生改變,這就是歐氏距離和余弦相似度的不同之處。根據(jù)歐氏距離和余弦相似度各自的計算方式和衡量特征,分別適用于不同的數(shù)據(jù)分析模型:歐氏距離能夠體現(xiàn)個體數(shù)值特征的絕對差異,所以更多的用于需要從維度的數(shù)值大小中體現(xiàn)差異的分析,如使用用戶行為指標(biāo)分析用戶價值的相似度或差異;而余弦相似度更多的是從方向上區(qū)分差異,而對絕對的數(shù)值不敏感,更多的用于使用用戶對內(nèi)容評分來區(qū)分用戶興趣的相似度和差異,同時修正了用戶間可能存在的度量標(biāo)準(zhǔn)不統(tǒng)一的問題〔因為余弦相似度對絕對數(shù)值不敏感。Mahout沒有專門給出基于余弦相似度的實現(xiàn)。
4.調(diào)整余弦相似度——AdjustedCosineSimilarity在余弦相似度的介紹中說到:余弦相似度更多的是從方向上區(qū)分差異,而對絕對的數(shù)值不敏感。因此沒法衡量每個維數(shù)值的差異,會導(dǎo)致這樣一個情況:比如用戶對內(nèi)容評分,5分制,X和Y兩個用戶對兩個內(nèi)容的評分分別為<1,2>和<4,5>,使用余弦相似度得出的結(jié)果是0.98,兩者極為相似,但從評分上看X似乎不喜歡這2個內(nèi)容,而Y比較喜歡,余弦相似度對數(shù)值的不敏感導(dǎo)致了結(jié)果的誤差,需要修正這種不合理性,就出現(xiàn)了調(diào)整余弦相似度,即所有維度上的數(shù)值都減去一個均值,比如X和Y的評分均值都是3,那么調(diào)整后為<-2,-1>和<1,2>,再用余弦相似度計算,得到-0.8,相似度為負(fù)值并且差異不小,但顯然更加符合現(xiàn)實。5.斯皮爾曼相關(guān)——SpearmanCorrelation斯皮爾曼相關(guān)性可以理解為是排列后〔Rank用戶喜好值之間的Pearson相關(guān)度?!禡ahoutinAction》中有這樣的解釋:假設(shè)對于每個用戶,我們找到他最不喜歡的物品,重寫他的評分值為"1";然后找到下一個最不喜歡的物品,重寫評分值為"2",以此類推。然后我們對這些轉(zhuǎn)換后的值求Pearson相關(guān)系數(shù),這就是Spearman相關(guān)系數(shù)。斯皮爾曼相關(guān)度的計算舍棄了一些重要信息,即真實的評分值。但它保留了用戶喜好值的本質(zhì)特性——排序〔ordering,它是建立在排序〔或等級,Rank的基礎(chǔ)上計算的?;仡櫱懊姹碇蠻ser1~5對Item101~103的喜好〔評分值,通過斯皮爾曼相關(guān)系數(shù)計算出的相似度為:Table3我們發(fā)現(xiàn),計算出來的相似度值要么是1,要么是-1,因為這依賴于用戶的喜好值和User1的喜好值是否趨于"一致變化"還是呈"相反趨勢變化"。Mahout對斯皮爾曼相關(guān)系數(shù)給出了實現(xiàn),具體可參考SpearmanCorrelationSimilarity,它的執(zhí)行效率不是非常高,因為斯皮爾曼相關(guān)性的計算需要花時間計算并存儲喜好值的一個排序〔Ranks,具體時間取決于數(shù)據(jù)的數(shù)量級大小。正因為這樣,斯皮爾曼相關(guān)系數(shù)一般用于學(xué)術(shù)研究或者是小規(guī)模的計算。UserSimilaritysimilarity1=newSpearmanCorrelationSimilarity<model>;//constructaSpearmanCorrelation-basedSimilarity
User1toUser1:1.0
User2toUser1:-1.0
User3toUser1:NaN
User4toUser1:1.0
User4toUser1:1.0考慮到SpearmanCorrelation的效率,可以把SpearmanCorrelationSimilarity包裝一層Cache,具體做法為:UserSimilaritysimilarity2=newCachingUserSimilarity<newSpearmanCorrelationSimilarity<model>,model>;這樣,每次計算的結(jié)果會直接放入Cache,下一次計算的時候可以立即得到結(jié)果,而不是重新再計算一次。6.基于谷本系數(shù)的相似性度量——TanimotoCoefficient-basedSimilarityTanimotoCoefficient和前面的5中相關(guān)度計算方式有很大的不同,它不關(guān)心用戶對物品的具體評分值是多少,它在關(guān)心用戶與物品之間是否存在關(guān)聯(lián)關(guān)系。TanimotoCoefficient依賴于用戶和物品之間的這種Boolean關(guān)系作為輸入。更準(zhǔn)確的說法為:TanimotoCoefficient主要用于計算符號度量或布爾值度量的個體間的相似度,因為個體的特征屬性都是由符號度量或者布爾值標(biāo)識,因此無法衡量差異具體值的大小,只能獲得"是否相同"這個結(jié)果,所以TanimotoCoefficient只關(guān)心個體間共同具有的特征是否一致這個問題。TanimotoCoefficient又被叫做JaccardCoefficient,其值等于兩個用戶共同關(guān)聯(lián)〔不管喜歡還是不喜歡的物品數(shù)量除于兩個用戶分別關(guān)聯(lián)的所有物品數(shù)量。Intersection/Union也就是關(guān)聯(lián)的交集除于關(guān)聯(lián)的并集,用公式表示為:Tanimoto/JaccardCoefficient其值介于[0,1]之間,如果兩個用戶關(guān)聯(lián)的物品完全相同,交集等于并集,值為1;如果沒有任何關(guān)聯(lián),交集為空,值為0。三、電影推薦系統(tǒng)的實現(xiàn)數(shù)據(jù)下載:到grouplens網(wǎng)站〔上下載DataSets,在該電影系統(tǒng)中我們使用了將近900多用戶為1683的電影評了近100000行的數(shù)據(jù)集。將下載的ml-data_0.zip里的評分?jǐn)?shù)據(jù)和電影信息數(shù)據(jù)取出。將評分文件轉(zhuǎn)換成類似于csv文件格式的文本文件,CSV是逗號分隔值文件<CommaSeparatedvalue>,是一種用來存儲數(shù)據(jù)的純文本文件格式,文件名為rating.TXT。可以用寫字板打開,如圖4.1:圖4.1rating.txt示意圖然后將數(shù)據(jù)導(dǎo)入到mysql數(shù)據(jù)庫中,將電影數(shù)據(jù)文件也轉(zhuǎn)換成CSV格式文件,然后也導(dǎo)入數(shù)據(jù)庫中,Mysql中數(shù)據(jù)庫為movierecommendation,上述兩個文件對應(yīng)的表分別為movies和rating。由于taste引擎需要頻繁進行數(shù)據(jù)庫操作,所以可以對mysql數(shù)據(jù)庫進行一般的調(diào)優(yōu),在mysql安裝目錄的my.ini文件中設(shè)置一些參數(shù),從而加快數(shù)據(jù)庫操作運行的時間。系統(tǒng)結(jié)構(gòu):本電影推薦系統(tǒng)前臺導(dǎo)航欄有三個菜單,分別為首頁,推薦電影,參數(shù)設(shè)置。首頁:首頁上顯示綜合評分最高的前20部電影,綜合評分是指對于一部電影,所有觀看改電影的用戶的評分的期望值。實現(xiàn)為在index.jsp頁面中調(diào)用數(shù)據(jù)庫接口,查詢數(shù)據(jù)庫,然后將結(jié)果顯示出來:參數(shù)設(shè)置頁面:由于協(xié)同過濾算法需要設(shè)置推薦的參數(shù),在本系統(tǒng)主要是考慮鄰居個數(shù)和相似度度量函數(shù)這兩個參數(shù):在相似性度量下拉列表框中,一共可以選擇四種相似度度量類,分別為:基于歐幾里得距離的相似度、基于皮爾森相關(guān)性的相似度、基于斯皮爾曼相關(guān)的相似度、基于古本系數(shù)的相似性度量。各相關(guān)性度量類的說明都在第二章節(jié)中有詳細(xì)介紹。系統(tǒng)使用application對象保存這些參數(shù)設(shè)置,并且在web.xml中設(shè)置了初始化的值,分別為6、PearsonCorrelationSimilarity/r
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度智慧城市建設(shè)中的光纜鋪設(shè)分包合同2篇
- 二零二五年度充電樁智能監(jiān)控系統(tǒng)安裝合同4篇
- 二零二五版苗圃技術(shù)員智慧苗圃建設(shè)與運營管理合同3篇
- 二零二五年度面包磚施工安全管理評估合同3篇
- 2025年度綠色能源項目投資與建設(shè)合同4篇
- 二零二五年度醫(yī)療健康A(chǔ)PP數(shù)據(jù)共享合同3篇
- 二零二五年度某三期護坡樁工程施工合同合同解除與終止合同4篇
- 二零二五年度房地產(chǎn)營銷推廣合同范本
- 二零二五版抵押貸款合同條款變更對借款合同影響評估3篇
- 二零二五年度農(nóng)產(chǎn)品市場拓展代理銷售合同
- 新人教版五年級小學(xué)數(shù)學(xué)全冊奧數(shù)(含答案)
- 風(fēng)電場升壓站培訓(xùn)課件
- 收納盒注塑模具設(shè)計(論文-任務(wù)書-開題報告-圖紙)
- 博弈論全套課件
- CONSORT2010流程圖(FlowDiagram)【模板】文檔
- 腦電信號處理與特征提取
- 高中數(shù)學(xué)知識點全總結(jié)(電子版)
- GB/T 10322.7-2004鐵礦石粒度分布的篩分測定
- 2023新譯林版新教材高中英語必修一重點詞組歸納總結(jié)
- 蘇教版四年級數(shù)學(xué)下冊第3單元第2課時“常見的數(shù)量關(guān)系”教案
- 消防應(yīng)急預(yù)案流程圖
評論
0/150
提交評論