潘錦豐,葉東東,譚北海,余榮
(廣東工業(yè)大學(xué)自動化學(xué)院,廣州510006)
現(xiàn)今,信息過載問題使用戶無法高效、準(zhǔn)確地找到有用的信息[1]。為了解決上述問題,個性化推薦算法受到學(xué)術(shù)界廣泛研究應(yīng)用[2]。其中,作為個性化推薦算法中較為經(jīng)典的協(xié)同過濾推薦算法[3],憑借其原理簡單和可解釋性等優(yōu)點(diǎn),廣泛應(yīng)用于社交網(wǎng)絡(luò)和電子商務(wù)等方面。目前,協(xié)同過濾推薦算法主要分為基于用戶和基于項(xiàng)目兩種[4]。本文主要研究的是基于用戶的協(xié)同過濾推薦算法,本算法主要通過以下四個步驟實(shí)現(xiàn)個性化推薦。第一,建立用戶-項(xiàng)目評分矩陣;第二,計(jì)算用戶間的相似度并找到最近鄰用戶集;第三,根據(jù)最近鄰集合預(yù)測用戶沒有評分的項(xiàng)目;第四,對評分結(jié)果排序?qū)個評分最高的項(xiàng)目推薦給用戶[5]。但是傳統(tǒng)的用戶相似度計(jì)算,如皮爾遜相似度[6]、余弦相似度[7]、杰卡德相似度[8]以及修正余弦相似度[9]等還是無法有效地同時解決用戶共同評分項(xiàng)目數(shù)、評分?jǐn)?shù)值和項(xiàng)目熱門度差異問題,導(dǎo)致評分預(yù)測不準(zhǔn)確,進(jìn)而使推薦質(zhì)量下降[10-11]。
為了解決上述問題,大量學(xué)者提出了許多創(chuàng)新和改進(jìn),以此對用戶進(jìn)行準(zhǔn)確推薦。鄭翠翠等人[12]提出融合杰拉德相似度和皮爾遜相似度的乘積作為新的算法,降低了共同評分項(xiàng)目數(shù)對計(jì)算結(jié)果的影響。肖宇航等人[13]在皮爾遜相似度計(jì)算的基礎(chǔ)上考慮了共同評價的項(xiàng)目數(shù)和項(xiàng)目熱門度兩個因素,來降低平均絕對誤差。李德新等人[14]將用戶相似度計(jì)算細(xì)分為共同評分項(xiàng)目數(shù)、評分?jǐn)?shù)值、評分傾向和項(xiàng)目熱門度四個方面并提出改進(jìn)方法,提高評分預(yù)測準(zhǔn)確度。上述研究工作雖然在一定程度上降低了評分預(yù)測誤差,但是不能很好解決高度依賴共同評分項(xiàng)目數(shù)量這一問題,當(dāng)共同評分項(xiàng)目數(shù)量較少時容易進(jìn)一步加劇評分預(yù)測誤差。因此,本文提出一種融合了權(quán)重余弦相似度和修正余弦相似度的改進(jìn)用戶相似度計(jì)算算法。該算法不僅能夠緩解用戶共同評分項(xiàng)目數(shù)差異問題,而且通過引入兩個修正因子分別改善評分?jǐn)?shù)值差異和項(xiàng)目熱門度差異問題。通過MovieLens數(shù)據(jù)集進(jìn)行實(shí)驗(yàn)驗(yàn)證提出的改進(jìn)算法在平均絕對誤差(Mean Absolute Error,MAE)方面優(yōu)于現(xiàn)有的基準(zhǔn)相似度算法。另外,提出的改進(jìn)算法在預(yù)測用戶評分的準(zhǔn)確性和推薦質(zhì)量兩個方面具有良好的魯棒性。
余弦相似度是計(jì)算出兩個向量之間的夾角對應(yīng)的余弦值,并作為衡量兩者差異的標(biāo)準(zhǔn)[15]。在計(jì)算過程中,忽略具體的評分?jǐn)?shù)值,將用戶有過評分記錄的記為1,沒有評分記錄的為0,這樣就可以得到用戶的n維評分向量。用戶u和v兩組評分向量分別用u和v,計(jì)算出的余弦值越大,則說明用戶之間越相似。
皮爾遜相似度計(jì)算的取值范圍為[-1,1],數(shù)值不同代表不同的相關(guān)性,正數(shù)表示正相關(guān),負(fù)數(shù)表示負(fù)相關(guān)[16]。計(jì)算公式如下。
其中,Iuv為用戶u和用戶v的公共評分集合,也就是兩者都有的評分的項(xiàng)目的集合;Ru,c和Rv,c分別是用戶u、用戶v對項(xiàng)目c的評分分別為用戶u和用戶v在公共評分集合Iuv中的評分均值。
修正余弦相似度也是一種傳統(tǒng)的度量方式,它是在皮爾遜相似度的基礎(chǔ)上改進(jìn),因其在相似度計(jì)算過程中考慮了評分尺度[17],避免評分傾向造成的評分偏差,使得度量相似度更加合理,因此被廣泛應(yīng)用。修正余弦相似度和皮爾遜相似度兩者的主要區(qū)別在于分母上。
其中,Iuv為用戶u和用戶v的公共評分集合;Ru,c和Rv,c分別是用戶u、用戶v對項(xiàng)目c的評分;Iu和Iv分別是被用戶u和v評價了的項(xiàng)目集合;分別為用戶u和v在各自評分集合上的評分均值。
隨著建立的用戶數(shù)和項(xiàng)目數(shù)量日益擴(kuò)大[18],使得所建立的用戶-項(xiàng)目評分矩陣越來越稀疏。上述相似度計(jì)算雖然已經(jīng)得到了廣泛應(yīng)用,但是計(jì)算過程中仍然難以找到真實(shí)最近鄰居集。下面介紹了傳統(tǒng)的相似計(jì)算方法中存在的缺點(diǎn)和改進(jìn)之處。
使用傳統(tǒng)相似度(公式1-3)計(jì)算用戶相似度時,需要先找出用戶之間的共同評分集合,對于稀疏的評分矩陣,共同評分集合數(shù)量的多少直接影響著相似度度量的準(zhǔn)確性。表1分別列出用戶1-3對項(xiàng)目1-5的評分,評分尺度為5分制,空白表示用戶未對該項(xiàng)目評分。
表1 用戶-項(xiàng)目評分(1)
對于表1,采用上述三種傳統(tǒng)的相似度計(jì)算公式分別計(jì)算出用戶1與用戶2、用戶1與用戶3之間的相似度,結(jié)果如表2所示。
表2 不同相似度公式計(jì)算結(jié)果(1)
由表2可見,皮爾遜相似度計(jì)算出用戶1與用戶2之間的相似度為1,而用戶1與用戶3共同評分?jǐn)?shù)量明顯比前者高,計(jì)算出來的相似度卻是較低的0.818,這明顯不和理。另外,由于在計(jì)算用戶相似度過程中,余弦相似度考慮的是用戶所有評分過的項(xiàng)目,修正余弦相似度考慮了用戶所有評分的均值,所以它們計(jì)算出來的相似度是考慮了共同評分?jǐn)?shù)量差異這一缺陷的。因此,為了更好地解決這一差異,本文提出采用權(quán)重因子α,綜合考慮余弦相似度和修正余弦相似度來緩解這一問題,公式如下。
其中,simcos(u,v)與simacos(u,v)分別代表余弦相似度(公式1)和修正余弦相似度(公式3)。
傳統(tǒng)的相似度計(jì)算的是兩個用戶評分向量的趨勢相關(guān)性,忽略了用戶對同一項(xiàng)目具體評分?jǐn)?shù)值的差異,這導(dǎo)致了每個項(xiàng)目計(jì)算時都存在這一問題。同樣地,表3分別列出用戶1和2對項(xiàng)目1-5的評分。
表3 用戶-項(xiàng)目評分(2)
對表3采用余弦和修正余弦相似度計(jì)算公式分別計(jì)算出用戶1與用戶2之間的相似度,結(jié)果如表4所示。
表4 不同相似度公式計(jì)算結(jié)果(2)
如表3、表4,用戶1與用戶2對每個項(xiàng)目的評分?jǐn)?shù)值差距很大,換句話說,他們彼此之間的興趣點(diǎn)并不相同,而計(jì)算出來的用戶相似度卻為1。余弦相似度在計(jì)算過程中考慮的是用戶的評分記錄,不關(guān)注具體評分?jǐn)?shù)值,修正余弦相似度計(jì)算的是兩個評分向量的趨勢性,可見,它們在計(jì)算過程中忽略用戶具體評分?jǐn)?shù)值差異,所以本文提出評分?jǐn)?shù)值修正因子,公式如下所示。
pun1(u,v)是衡量用戶之間評分?jǐn)?shù)值差異的修正因子。其中,Iuv為用戶u和用戶v的公共評分集合;Ru,c和Rv,c分別是用戶u、用戶v對項(xiàng)目c的評分;n為用戶u和v的共同評分集合的個數(shù)。當(dāng)兩個用戶之間的評分?jǐn)?shù)值均值差距越大,計(jì)算出的修正因子越小。
傳統(tǒng)的相似度計(jì)算中,每一個項(xiàng)目都是一視同仁,即權(quán)重值一樣。但是在實(shí)際評分矩陣中,每個項(xiàng)目受到用戶評分的記錄數(shù)是不一樣的,對于幾乎人人都評價過的項(xiàng)目,可以說它很受歡迎,很熱門的項(xiàng)目。但是,對于一個熱度高的項(xiàng)目,往往并不能代表用戶的興趣,比如說,生活必需品是每個人都必備的,但是卻不能以它來區(qū)分人群,所以應(yīng)該降低熱門項(xiàng)目在相似度計(jì)算過程中的影響;反而,冷門的項(xiàng)目更能反映出用戶的興趣,應(yīng)該增大冷門項(xiàng)目的影響。本文提出了項(xiàng)目熱門度修正因子,如下所示。
公式(7)中pun2(i)代表衡量項(xiàng)目i的熱門程度修正因子。其中,counti是對項(xiàng)目i有過評分記錄的用戶數(shù),all是評分矩陣中所有的用戶數(shù)。
綜合考慮2.2-2.3小節(jié)所述,將評分?jǐn)?shù)值修正因子和項(xiàng)目熱門度修正因子分別引入公式(4)中的余弦相似度和修正余弦相似度,以減少評分?jǐn)?shù)值差異和熱門項(xiàng)目對相似度的影響,最終本文提出的新的用戶相似度計(jì)算方法如公式(7)所示。
其中:
本文使用GroupLens提供的MovieLens電影推薦數(shù)據(jù)集進(jìn)行計(jì)算實(shí)驗(yàn)。該數(shù)據(jù)集包括943個用戶在1682部電影的100000個評分記錄,評分值為1-5分,每條評分包含用戶id、影片id、評分?jǐn)?shù)值和評分時間。本文對全集100000條評分記錄隨機(jī)分成了80%和20%的訓(xùn)練集和測試集。
3.2.1 建立評分矩陣
根據(jù)訓(xùn)練集建立用戶-項(xiàng)目評分矩陣,其中每一行代表一個用戶,每一列代表一個項(xiàng)目,矩陣中具體數(shù)值代表用戶對該項(xiàng)目的評分?jǐn)?shù)值。
3.2.2 最近鄰用戶集K
采用相似度計(jì)算公式計(jì)算用戶之間的相似度,根據(jù)相似度的計(jì)算結(jié)果從高到低進(jìn)行排序,最后根據(jù)實(shí)驗(yàn)設(shè)定的K值取出前K最相近的用戶作為最近鄰用戶集。實(shí)驗(yàn)中的K取值范圍為5-80。
3.2.3評分預(yù)測
根據(jù)最近鄰用戶集和用戶的歷史評分信息,通過下面的公式對用戶未評分過的項(xiàng)目進(jìn)行評分預(yù)測。
其中,Pu,c代表預(yù)測用戶u對項(xiàng)目c的評分?jǐn)?shù)值;N(u)是指步驟2中用戶u的最近鄰用戶集合指用戶u和v的平均評分。
本文使用平均絕對誤差MAE作為計(jì)算指標(biāo),MAE反映了用戶對該項(xiàng)目實(shí)際的評分和預(yù)測得出的絕對誤差,計(jì)算的MAE越小表示預(yù)測更準(zhǔn)確,具體公式如下。
對于測試集T中的一個用戶u和物品c,ru,c是用戶u對物品c的實(shí)際評分,pu,c是推薦算法預(yù)測出來的評分,n表示測試集中的所有用戶對項(xiàng)目的評分記錄數(shù)量。
3.4.1 引入修正因子的有效性驗(yàn)證
首先,由于本算法在余弦相似度和修正余弦相似度上考慮了用戶評分?jǐn)?shù)值差異和項(xiàng)目熱門度差異,并加入相應(yīng)的修正因子,因此,需要驗(yàn)證引入這一步驟的有效性。表5是實(shí)驗(yàn)得出的結(jié)果。最近鄰用戶集數(shù)量K選取為5、10、20、30、40、50、60、70、80,以MAE計(jì)算值作為評價指標(biāo)。其中的COS、ACOS、COS-P、ACOSP分別是采用相似度計(jì)算公式(1)、(3)、(8)和(9)的計(jì)算結(jié)果。
根據(jù)表5的計(jì)算,對比結(jié)果如圖1所示。
表5 引入修正因子后的MAE
依圖1,余弦相似度、修正余弦相似度在引入修正因子后MAE都有所降低,前者降低的幅度較大,后者在K≥50時逐漸與未加入修正因子的效果幾乎保持一致,證明本文對余弦相似度和修正余弦相似度引入修正因子是有效的。
圖1 引入修正因子后的MAE對比
3.4.2 確定權(quán)重因子α
由圖1可知,當(dāng)K=30和40時,COS-P和ACOS-P在此數(shù)據(jù)集中計(jì)算出的MAE取得較小值,即在這一范圍兩者效果較好。因此,改變公式(7)中權(quán)重因子α在0.1-0.9的取值(步長為0.1),對比不同α計(jì)算出來的MAE結(jié)果,如表6所示。
根據(jù)表6的計(jì)算,對比效果如圖2所示。
表6 K=30和40時不同α對應(yīng)的MAE
如圖2所示,改變α的取值,當(dāng)α=[0.1,0.7],K=30時計(jì)算出的MAE明顯比K=40時低。同時,在K=30下,當(dāng)α等于[0.1,0.3]之間時,MAE值逐漸降低,之后,隨著α的增高,MAE值不斷上升,所以當(dāng)α為0.3時,MAE取得最小值。
圖2 K=30和40時不同α對應(yīng)的MAE對比
根據(jù)表5和表7的相關(guān)數(shù)據(jù),作出對比圖如圖3。
圖3 權(quán)重COS-P和ACOS-P的MAE對比(α=0.3)
表7 權(quán)重COS-P和ACOS-P的MAE(α=0.3)
如圖3所示,融入權(quán)重因子(α=0.3)之后的新的用戶相似度計(jì)算方法可以進(jìn)一步降低MAE,更有效地計(jì)算相似度,使預(yù)測用戶評分更準(zhǔn)確。
3.4.3 不同相似度計(jì)算方法的MAE比較
為了檢驗(yàn)本文所提出的新的用戶相似度算法(α=0.3),在協(xié)同過濾中使用傳統(tǒng)的余弦相似度(COS)、修正余弦相似度(ACOS)、文獻(xiàn)[14]提出的類似計(jì)算方法進(jìn)行比較實(shí)驗(yàn),對比使用不同用戶相似度計(jì)算方法下的MAE值如表8所示。
根據(jù)表8的計(jì)算結(jié)果作圖對比效果。
表8 不同相似度計(jì)算方法的MAE
根據(jù)圖4的實(shí)驗(yàn)結(jié)果,在基于用戶的協(xié)同過濾算法中,本文提出的新的相似度改進(jìn)算法能得到更低的MAE,當(dāng)鄰居數(shù)K為5時,比修正余弦相似度計(jì)算出的結(jié)果大約低1.0%,比余弦相似度大約低1.7%,隨著K的增大,MAE取值整體趨向穩(wěn)定,在K=30時MAE取得最小值,評分預(yù)測誤差得到降低。
圖4 不同相似度計(jì)算方法的MAE對比
3.4.4 多次實(shí)驗(yàn)驗(yàn)證
為了驗(yàn)證本文算法的穩(wěn)定性和有效性(α=0.3),對MovieLens全集數(shù)據(jù)隨機(jī)分成80%訓(xùn)練集和20%測試集進(jìn)行實(shí)驗(yàn)計(jì)算平均MAE,實(shí)驗(yàn)次數(shù)共5次(記為T1-T5)。實(shí)驗(yàn)結(jié)果如表9所示。
表9 多次實(shí)驗(yàn)的平均MAE
根據(jù)表9進(jìn)行作圖對比效果,如圖5所示。
圖5 多次實(shí)驗(yàn)的平均MAE對比
如圖5所示,使用本文提出的改進(jìn)用戶相似度計(jì)算方法求得的平均MAE值都低于使用其他相似度計(jì)算方法的求得的MAE值,多次對比實(shí)驗(yàn)結(jié)果表明,本文改進(jìn)的算法效果穩(wěn)定有效,提高了用戶評分預(yù)測的準(zhǔn)確度,具有良好的魯棒性。
本文對基于用戶的協(xié)同過濾推薦算法中用戶相似度計(jì)算進(jìn)行改進(jìn)優(yōu)化,提出一種融合權(quán)重余弦相似度和修正余弦相似度的新的用戶相似度計(jì)算公式,并引入評分?jǐn)?shù)值和項(xiàng)目熱門度兩個修正因子。實(shí)驗(yàn)結(jié)果顯示,引入修正因子是有效的,同時,融合權(quán)重后的算法能更進(jìn)一步降低評分預(yù)測誤差。多組實(shí)驗(yàn)數(shù)據(jù)驗(yàn)證,本文方法能更好地提升推薦效果,具有良好的魯棒性。
接下來將會考慮在對不同數(shù)據(jù)集進(jìn)行實(shí)驗(yàn)測試,繼續(xù)提高本算法的魯棒性和運(yùn)行效率。