一種基于用戶和項目混合的協(xié)同過濾算法
【專利摘要】本發(fā)明公開了一種基于用戶和項目混合的協(xié)同過濾算法,包括以下步驟:步驟1:對用戶?項目評分?jǐn)?shù)據(jù)集進(jìn)行整理,建立用戶?項目評分矩陣U;步驟2:計算物品之間的相似度,并將相似度按照從大到小進(jìn)行排序;步驟3:根據(jù)物品之間的相似度排序,產(chǎn)生物品的“最近鄰居N”;步驟4:計算目標(biāo)用戶T與其他用戶之間的相似度,并將相似度按照從大到小的順序進(jìn)行排序;步驟5:根據(jù)用戶之間的相似度排序,產(chǎn)生用戶的“最近鄰居K”。本發(fā)明同時考慮用戶相似度和項目相似度兩個方面,利用加權(quán)的方法得到同時考慮用戶相似度和項目相似度的項目預(yù)測評分,并根據(jù)評分的排序進(jìn)行推薦,該算法能夠降低平均誤差MAE的值,提高推薦算法的準(zhǔn)確率。
【專利說明】
一種基于用戶和項目混合的協(xié)同過濾算法
技術(shù)領(lǐng)域
[0001] 本發(fā)明涉及個性化推薦技術(shù)領(lǐng)域,尤其涉及一種基于用戶和項目混合的協(xié)同過濾 算法。
【背景技術(shù)】
[0002] 隨著網(wǎng)絡(luò)技術(shù)的快速發(fā)展,人們開始越來越依賴于互聯(lián)網(wǎng),通過網(wǎng)絡(luò)人們可以查 詢到大量的信息,然而這也意味著,人們已經(jīng)開始進(jìn)入了信息過載的時代。
[0003] 通過網(wǎng)絡(luò)查詢到的信息并不一定是你真正想要搜索的內(nèi)容,因此在面對大量的數(shù) 據(jù)信息時,如何從中選取到自己真正感興趣的并且對自己有用的信息成為了一件非常困難 的事情。同時對于信息的生產(chǎn)者而言,如何能夠讓自己的產(chǎn)品從大量的產(chǎn)品庫中脫穎而出, 找到真正對他們感興趣的并且愿意關(guān)注他們的用戶也成為了一件非常困難的事情。在這個 時候推薦系統(tǒng)的存在顯得尤為有用。它可以通過一定的運算將用戶和項目之間聯(lián)系起來, 既能夠使得用戶發(fā)現(xiàn)對他們有用的物品,也能夠使物品將它的信息展現(xiàn)在真正喜歡它們的 用戶面前。
[0004] 個性化推薦系統(tǒng)在電子商務(wù)網(wǎng)站上得到了廣泛的應(yīng)用,如今像亞馬遜、當(dāng)當(dāng)網(wǎng)等 電子商務(wù)網(wǎng)站依靠推薦系統(tǒng)為自己的獲得了大量的銷售額和客戶。亞馬遜的前科學(xué)家Greg Linden曾經(jīng)表示,Amazon的銷售中,至少有35 %來自于推薦算法,此外,亞馬遜的前首席科 學(xué)家Andreas Weigend也曾經(jīng)透露過,推薦系統(tǒng)至少為Amazon帶來了20%~30%的銷售來。 在電影和視頻網(wǎng)站也可以使用到推薦算法,在該領(lǐng)域中,推薦算法應(yīng)用最廣的是Netflix。 Netflix在宣傳資料中曾經(jīng)提到過,有60%的用戶是選擇查找自己感興趣的電影和視頻的 方式是通過其推薦系統(tǒng)?,F(xiàn)在的推薦系統(tǒng)已經(jīng)推及到包括音樂、書籍、廣告、郵件、社交網(wǎng)絡(luò) 在內(nèi)的各個領(lǐng)域。推薦算法的好壞也決定著推薦系統(tǒng)的準(zhǔn)確率和可靠性。
[0005] 常用的推薦算法包括有基于規(guī)則的推薦算法,基于內(nèi)容的推薦算法,協(xié)同過濾推 薦算法等,其中協(xié)同過濾算法是個性化推薦系統(tǒng)中最常用的算法之一。協(xié)同過濾算法的思 想是通過分析用戶曾經(jīng)收藏或者瀏覽過的物品記錄,利用相似度尋找與該用戶興趣相似的 用戶或者可能會該興趣的物品,并推薦給該用戶。通過協(xié)同過濾推薦的物品要比基于內(nèi)容 的推薦系統(tǒng)所推薦的物品更具有新穎性,而且能夠?qū)τ谶^濾機器難以自動分析內(nèi)容的物 品,比如說藝術(shù)品,音樂等進(jìn)行過濾,通過共用他人的經(jīng)驗,避免了因為內(nèi)容分析不準(zhǔn)確導(dǎo) 致的推薦結(jié)果不準(zhǔn)確。協(xié)同過濾算法在推薦系統(tǒng)中得到了廣泛的應(yīng)用,但是算法本身存在 著一定的缺點和不足,限制著該算法在系統(tǒng)中的應(yīng)用。因此如何優(yōu)化算法成為很多學(xué)者研 究的重點。
[0006] 雖然協(xié)同過濾技術(shù)在很多電子商務(wù)網(wǎng)站上都得到了很好的運用,但是隨著電子商 務(wù)規(guī)模的不斷擴(kuò)大,商品數(shù)量和用戶數(shù)量不斷增加,傳統(tǒng)的協(xié)同過濾的技術(shù)開始出現(xiàn)了一 系列的問題:
[0007] 1.稀疏性。根據(jù)協(xié)同技術(shù)的理論思想可以得知,協(xié)同過濾技術(shù)的實現(xiàn)首先需要建 立用戶-項目評分矩陣,然而在實際情況的應(yīng)用中,用戶和商品都擁有較大的數(shù)量,并不是 所有的商品都能夠得到處理,在這些系統(tǒng)中,一般用戶購買到的商品的總量只占到網(wǎng)站中 商品總量的1%~2%,這就導(dǎo)致了用戶-項目評分矩陣非常稀疏。在這樣數(shù)據(jù)量極大而評分 矩陣又十分稀疏的情況下,用戶或者項目相似度的計算需要耗費大量的資源,并且在查找 最近鄰居集合的時候也會造成數(shù)據(jù)信息的丟失,大大降低了推薦算法的準(zhǔn)確率。
[0008] 2.冷啟動。傳統(tǒng)的協(xié)同過濾算法是基于用戶的行為來進(jìn)行分析的,所以當(dāng)出現(xiàn)一 個新的用戶時,由于他沒有歷史行為記錄,系統(tǒng)并不知道他的喜好興趣,因此并沒有辦法通 過單純的協(xié)同過濾推薦為其推薦合適的項目。同樣,當(dāng)網(wǎng)站中加入了新的項目,因為沒有用 戶評價它,系統(tǒng)也就無法對它進(jìn)行預(yù)測評分,更無法對它進(jìn)行推測。
[0009] 3.可擴(kuò)展性。隨著項目和用戶的不斷增加,傳統(tǒng)的算法會遇到嚴(yán)重的擴(kuò)展性瓶頸 問題,這會影響到協(xié)同過濾算法的準(zhǔn)確率。雖然基于模型的算法能夠解決一定的問題,但是 基于模型的算法的前提條件是用戶的興趣愛好基本保持不變,這個前提也會在很大程度上 限制算法的使用。
[0010] 專利號201010613809.3的專利在一定程度上解決了以上稀疏性問題,但其通過矩 陣空白評分和填充用戶項目矩陣的方法來解決預(yù)測準(zhǔn)確性問題,程序比較復(fù)雜,操作工作 量大,尤其是在數(shù)據(jù)稀疏并且數(shù)據(jù)量巨大的情況下,可操作性差。另外,且此方法填充用戶 項目矩陣過程中就難免存在一定誤差,推薦算法的準(zhǔn)確率無法保證。且其在解決現(xiàn)有技術(shù) 的冷啟動、可擴(kuò)展性問題上顯得不足。
【發(fā)明內(nèi)容】
[0011] 有鑒于現(xiàn)有技術(shù)的上述缺陷,本發(fā)明所要解決的技術(shù)問題是提供一種基于用戶和 項目混合的協(xié)同過濾算法,同時考慮用戶相似度和項目相似度兩個方面,引入控制因子α和 β,利用加權(quán)的方法,對基于用戶相似度得到的項目預(yù)測評分和基于項目相似度得到的項目 預(yù)測評分進(jìn)行組合,得到同時考慮用戶相似度和項目相似度的項目預(yù)測評分,并根據(jù)評分 的排序進(jìn)行推薦。驗證實驗采用的數(shù)據(jù)集是MovieLens。實驗結(jié)果表明,該算法能夠降低平 均誤差MAE的值,提高推薦算法的準(zhǔn)確率。
[0012] 為實現(xiàn)上述目的,本發(fā)明提供了一種基于用戶和項目混合的協(xié)同過濾算法,其特 征在于,包括以下步驟:
[0013]步驟1:對用戶-項目評分?jǐn)?shù)據(jù)集進(jìn)行整理,建立用戶-項目評分矩陣U;
[0014] 步驟2:計算皮爾遜系數(shù),計算物品之間的相似度,并將相似度按照從大到小進(jìn)行 排序,皮爾遜系數(shù)計算公式為:
[0015]
[0016] 其中N表示用戶評分的項目,表示用戶u對項目i的評分,表示用戶u對項目評分的 平均值;
[0017] 步驟3:根據(jù)物品之間的相似度排序,產(chǎn)生物品的"最近鄰居N",利用最近鄰居N預(yù) 測用戶T對其他物品的評分;
[0018] 步驟4:采用步驟2得出的皮爾遜系數(shù),計算目標(biāo)用戶T與其他用戶之間的相似度, 并將相似度按照從大到小的順序進(jìn)行排序;
[0019] 步驟5:根據(jù)用戶之間的相似度排序,產(chǎn)生用戶的"最近鄰居K",利用最近鄰居K預(yù) 測用戶Τ對其他物品的評分;
[0020] 步驟6:綜合利用物品相似度和利用用戶相似度得到的評分,如果目標(biāo)用戶對物品 的評分預(yù)測既在"最近鄰居Ν"中,又在"最近鄰居Κ"中,則對預(yù)測評分進(jìn)行加權(quán)計算,得到利 用物品相似度和用戶相似度組合的"最近鄰居X"和預(yù)測評分;
[0021] 步驟7:據(jù)最近鄰居X的排序,按照預(yù)測評分從大到小的排序輸出top-N推薦項目 集。
[0022] 上述的一種基于用戶和項目混合的協(xié)同過濾算法,其特征在于,所述步驟6引入?yún)?數(shù)α和β,建立字典pred,用來存放最終的最近鄰居信息和預(yù)測分?jǐn)?shù),引入?yún)?shù)α和β數(shù)值的步 驟為:
[0023]步驟611:選擇數(shù)據(jù)集;
[0024]步驟612:確定最近鄰居數(shù)目;
[0025] 步驟613:通過基于用戶-項目的協(xié)同過濾算法計算平均絕對誤差MAE值,MAE的計 算公式如下:
[0026]
[0027] 其中,N表示評分用戶總數(shù)目,rul表示算法的預(yù)測評分,:^表示用戶的實際評分;
[0028] 步驟614:最近鄰居數(shù)目保持不變,改變α和β的數(shù)值,當(dāng)MAE值最小時,得到需要的 參數(shù)α和β的值。
[0029] 上述的一種基于用戶和項目混合的協(xié)同過濾算法,其特征在于,所述步驟步驟6的 "最近鄰居X"計算步驟為:
[0030] 步驟621:選擇數(shù)據(jù)集;
[0031] 步驟622:確定參數(shù)α和邱勺值;
[0032] 步驟623:通過基于用戶-項目的協(xié)同過濾算法計算平均絕對誤差MAE值,MAE的計 算公式如下:
[0033]
[0034] 其中,N表示評分用戶總數(shù)目,rul表示算法的預(yù)測評分,?,1表示用戶的實際評分;
[0035] 步驟624:參數(shù)α和β的值保持不變,改變最近鄰居的數(shù)值,當(dāng)MAE值最小時,得到需 要的最近鄰居數(shù)目。
[0036]本發(fā)明的有益效果是:
[0037] 本發(fā)明同時考慮用戶相似度和項目相似度兩個方面,引入控制因子α和β,利用加 權(quán)的方法,對基于用戶相似度得到的項目預(yù)測評分和基于項目相似度得到的項目預(yù)測評分 進(jìn)行組合,得到同時考慮用戶相似度和項目相似度的項目預(yù)測評分,并根據(jù)評分的排序進(jìn) 行推薦。驗證實驗采用的數(shù)據(jù)集是MovieLens。實驗結(jié)果表明,該算法能夠降低平均誤差MAE 的值,提高推薦算法的準(zhǔn)確率。
[0038] 以下將結(jié)合附圖對本發(fā)明的構(gòu)思、具體結(jié)構(gòu)及產(chǎn)生的技術(shù)效果作進(jìn)一步說明,以 充分地了解本發(fā)明的目的、特征和效果。
【附圖說明】
[0039] 圖1是本發(fā)明的整體工作流程圖。
[0040] 圖2是本發(fā)明確定α和β數(shù)值的流程圖。
[0041 ]圖3是本發(fā)明確定最近鄰居數(shù)目的流程圖。
[0042] 圖4是本發(fā)明最近鄰居數(shù)目對MAE值影響的坐標(biāo)圖。
【具體實施方式】
[0043] 如圖1所示,一種基于用戶和項目混合的協(xié)同過濾算法,其特征在于,包括以下步 驟:
[0044]步驟1:對用戶-項目評分?jǐn)?shù)據(jù)集進(jìn)行整理,建立用戶-項目評分矩陣U;
[0045] 步驟2:計算皮爾遜系數(shù),計算物品之間的相似度,并將相似度按照從大到小進(jìn)行 排序,皮爾遜系數(shù)計算公式為:
[0046]
[0047] 共1衣不州廣項曰,衣不州廣11Λ、」項曰1ΗΜ1ΤΟΓ,衣不州戶U對項目評分的 平均值;
[0048] 步驟3:根據(jù)物品之間的相似度排序,產(chǎn)生物品的"最近鄰居N",利用最近鄰居N預(yù) 測用戶T對其他物品的評分;
[0049] 步驟4:采用步驟2得出的皮爾遜系數(shù),計算目標(biāo)用戶T與其他用戶之間的相似度, 并將相似度按照從大到小的順序進(jìn)行排序;
[0050] 步驟5:根據(jù)用戶之間的相似度排序,產(chǎn)生用戶的"最近鄰居K",利用最近鄰居K預(yù) 測用戶T對其他物品的評分;
[0051] 步驟6:綜合利用物品相似度和利用用戶相似度得到的評分,如果目標(biāo)用戶對物品 的評分預(yù)測既在"最近鄰居N"中,又在"最近鄰居K"中,則對預(yù)測評分進(jìn)行加權(quán)計算,得到利 用物品相似度和用戶相似度組合的"最近鄰居X"和預(yù)測評分;
[0052]步驟7:據(jù)最近鄰居X的排序,按照預(yù)測評分從大到小的排序輸出top-N推薦項目 集。
[0053]本發(fā)明的具體算法實現(xiàn)如下:
[0054] 1.將數(shù)據(jù)集中的信息轉(zhuǎn)換為用戶-項目評分矩陣。
[0055] Def loadDataO:
[0056] 建立字典trainSet,放入ul .base中的用戶id,項目id和評分信息。
[0057] 建立字典testSet,放入ul .test中的用戶id,項目id和評分信息。
[0058] 2.計算物品相似度Items im
[0059] Def ItemsimO:
[0060] 建立字典Itemsim,保存計算結(jié)果,包括用戶id,項目id和預(yù)測分?jǐn)?shù)。
[0061] 利用公式1,計算皮爾遜系數(shù)。
[0062] 3.產(chǎn)生最近鄰居N
[0063] Def itemrecommendations():
[0064] A = sort[]
[0065 ]遍歷字典I terns im,按照物品相似度的大小進(jìn)行排序。
[0066]建立字典predl,保存最近鄰居的信息和預(yù)測分?jǐn)?shù)。
[0067] 4.計算用戶相似度Usersim
[0068] Def Usersim():
[0069] 建立字典Usersim,用來保存計算結(jié)果,包括用戶id,項目id和預(yù)測分?jǐn)?shù)。
[0070] 利用公式1,計算皮爾遜系數(shù)。
[0071] 5.產(chǎn)生最近鄰居K
[0072] Def userrecommendations():
[0073] A = sort[]
[0074]遍歷字典usersim,按照用戶相似度的大小進(jìn)行排序。
[0075]建立字典pred2,保存最近鄰居的信息和預(yù)測分?jǐn)?shù)。
[0076] 6.計算預(yù)測分?jǐn)?shù)
[0077] Def ratings〇:
[0078] 引入?yún)?shù)α和β,建立字典pred,用來存放最終的最近鄰居信息和預(yù)測分?jǐn)?shù)。
[0079] 遍歷字典 predl和 pred2,如果iteml = = item2 并且 useridl = = userid2,那么
[0080] pred[userid][item]=a*predl[useridl][iteml]+P*pred2[userid2][item2]
[0081 ] 7.生成top-N推薦項目集
[0082] Def recommendations():
[0083] 遍歷字典pred,按照預(yù)測分?jǐn)?shù)大小進(jìn)行排序。
[0084] 輸出top-N推薦集。
[0085] 如圖2所示,為確定α和β數(shù)值的流程圖。本實施例中,所述步驟6引入?yún)?shù)α和β,建 立字典pred,用來存放最終的最近鄰居信息和預(yù)測分?jǐn)?shù),引入?yún)?shù)α和β數(shù)值的步驟為: [0086]步驟611:選擇數(shù)據(jù)集;
[0087]步驟612:確定最近鄰居數(shù)目;
[0088] 步驟613:通過基于用戶-項目的協(xié)同過濾算法計算平均絕對誤差MAE值,MAE的計 算公式如下:
[0089]
[0090]其中,N表示評分用戶總數(shù)目,rul表示算法的預(yù)測評分,:^表示用戶的實際評分;
[0091] 步驟614:最近鄰居數(shù)目保持不變,改變α和β的數(shù)值,當(dāng)MAE值最小時,得到需要的 參數(shù)α和β的值。
[0092] 表1 α和β對MAE的影響
[0093]
[0094] 如表1所示,為α和β對MAE的影響實驗統(tǒng)計數(shù)據(jù),通過實驗結(jié)果可以看出,當(dāng)α和β的 取值均大于〇. 5或者均小于0.5的時候,MAE的值會相對較大,這是因為取值均大于0.5或者 均小于0.5會使得預(yù)測評分在1-5分的范圍之外,使得誤差增大。通過上述表格可以看出,當(dāng) α取0.2,β取0.9的時候,可以獲得最小的MAE值,也就是說當(dāng)α = 〇 . 2,β = 0.9時,可以獲得最 好的推薦結(jié)果。
[0095] 如圖3所示,確定最近鄰居數(shù)目的流程圖。本實施例中,所述步驟步驟6的"最近鄰 居X"計算步驟為:
[0096]步驟621:選擇數(shù)據(jù)集;
[0097] 步驟622:確定參數(shù)α和邱勺值;
[0098] 步驟623:通過基于用戶-項目的協(xié)同過濾算法計算平均絕對誤差MAE值,MAE的計 算公式如下:
[0099]
[0100] 其中,N表示評分用戶總數(shù)目,rul表示算法的預(yù)測評分,4:表示用戶的實際評分; [0101 ]步驟624:參數(shù)α和β的值保持不變,改變最近鄰居的數(shù)值,當(dāng)MAE值最小時,得到需 要的最近鄰居數(shù)目。
[0102] 表2最近鄰居數(shù)目對MAE值的影響
[0103]
?0?04?~如表2所示,為最近鄰居數(shù)目對MAE值的影響統(tǒng)計數(shù)據(jù),結(jié)合圖4,可以看出,隨著最胃 近鄰居數(shù)目的增加,MAE的值總體逐漸降低,在最近鄰居數(shù)目取20的時候,系統(tǒng)的MAE的值趨 于平穩(wěn),并且在N=20時MAE值最低,即在此時,推薦結(jié)果準(zhǔn)確率最高。
[0105] 綜上所述,本發(fā)明同時考慮用戶相似度和項目相似度兩個方面,引入控制因子α和 β,利用加權(quán)的方法,對基于用戶相似度得到的項目預(yù)測評分和基于項目相似度得到的項目 預(yù)測評分進(jìn)行組合,得到同時考慮用戶相似度和項目相似度的項目預(yù)測評分,并根據(jù)評分 的排序進(jìn)行推薦。驗證實驗采用的數(shù)據(jù)集是MovieLens。實驗結(jié)果表明,該算法能夠降低平 均誤差MAE的值,提高推薦算法的準(zhǔn)確率。
[0106] 以上詳細(xì)描述了本發(fā)明的較佳具體實施例。應(yīng)當(dāng)理解,本領(lǐng)域的普通技術(shù)人員無 需創(chuàng)造性勞動就可以根據(jù)本發(fā)明的構(gòu)思做出諸多修改和變化。因此,凡本技術(shù)領(lǐng)域中技術(shù) 人員依本發(fā)明的構(gòu)思在現(xiàn)有技術(shù)的基礎(chǔ)上通過邏輯分析、推理或者有限的實驗可以得到的 技術(shù)方案,皆應(yīng)在由權(quán)利要求書所確定的保護(hù)范圍內(nèi)。
【主權(quán)項】
1. 一種基于用戶和項目混合的協(xié)同過濾算法,其特征在于,包括W下步驟: 步驟1:對用戶-項目評分?jǐn)?shù)據(jù)集進(jìn)行整理,建立用戶-項目評分矩陣U; 步驟2:計算皮爾遜系數(shù),計算物品之間的相似度,并將相似度按照從大到小進(jìn)行排序, 皮爾遜系數(shù)計算公式為:其中N表示用戶評分的項目,表示用戶U對項目i的評分,表示用戶U對項目評分的平均 值; 步驟3:根據(jù)物品之間的相似度排序,產(chǎn)生物品的"最近鄰居N",利用最近鄰居N預(yù)測用 戶T對其他物品的評分; 步驟4:采用步驟2得出的皮爾遜系數(shù),計算目標(biāo)用戶T與其他用戶之間的相似度,并將 相似度按照從大到小的順序進(jìn)行排序; 步驟5:根據(jù)用戶之間的相似度排序,產(chǎn)生用戶的"最近鄰居r,利用最近鄰居K預(yù)測用 戶T對其他物品的評分; 步驟6:綜合利用物品相似度和利用用戶相似度得到的評分,如果目標(biāo)用戶對物品的評 分預(yù)測既在"最近鄰居N"中,又在"最近鄰居r中,則對預(yù)測評分進(jìn)行加權(quán)計算,得到利用物 品相似度和用戶相似度組合的"最近鄰居r和預(yù)測評分; 步驟7:據(jù)最近鄰居X的排序,按照預(yù)測評分從大到小的排序輸出top-腳I薦項目集。2. 如權(quán)利要求1所述的一種基于用戶和項目混合的協(xié)同過濾算法,其特征在于,所述步 驟6引入?yún)?shù)α和β,建立字典pred,用來存放最終的最近鄰居信息和預(yù)測分?jǐn)?shù),引入?yún)?shù)α和 0數(shù)值的步驟為: 步驟611:選擇數(shù)據(jù)集; 步驟612:確定最近鄰居數(shù)目; 步驟613:通過基于用戶-項目的協(xié)同過濾算法計算平均絕對誤差MAE值,MAE的計算公 式如下:其中,N表示評分用戶總數(shù)目,表示算法的預(yù)測評分,iu,表示用戶的實際評分; 步驟614:最近鄰居數(shù)目保持不變,改變α和β的數(shù)值,當(dāng)MAE值最小時,得到需要的參數(shù)α 和β的值。3. 如權(quán)利要求1所述的一種基于用戶和項目混合的協(xié)同過濾算法,其特征在于,所述步 驟步驟6的"最近鄰居r計算步驟為: 步驟621:選擇數(shù)據(jù)集; 步驟622:確定參數(shù)α和如勺值; 步驟623:通過基于用戶-項目的協(xié)同過濾算法計算平均絕對誤差MAE值,MAE的計算公 式如下:其中,N表示評分用戶總數(shù)目,表示算法的預(yù)測評分,^表示用戶的實際評分; 步驟624:參數(shù)α和β的值保持不變,改變最近鄰居的數(shù)值,當(dāng)MAE值最小時,得到需要的 最近鄰居數(shù)目。
【文檔編號】G06Q30/06GK105976229SQ201610316790
【公開日】2016年9月28日
【申請日】2016年5月13日
【發(fā)明人】李彤, 于倩, 劉琰, 劉金卓, 林英, 郁湧, 王海林
【申請人】云南大學(xué)