李豆豆,汪學(xué)明
(貴州大學(xué)計(jì)算機(jī)與科學(xué)技術(shù)學(xué)院,貴州 貴陽 550000)
為了緩解信息過載問題,推薦系統(tǒng)依據(jù)歷史評分?jǐn)?shù)據(jù)對用戶的興趣偏好進(jìn)行有效預(yù)測,并作出個(gè)性化推薦。而作為推薦系統(tǒng)領(lǐng)域的主流算法,協(xié)同過濾算法仍然還有著很多亟待解決的問題。一方面,用戶和項(xiàng)目規(guī)模的逐漸增加,不同項(xiàng)目的用戶評分?jǐn)?shù)據(jù)可能較少,由此而構(gòu)建的用戶-項(xiàng)目評分矩陣會(huì)面臨著嚴(yán)重的稀疏性[1],相似度的計(jì)算結(jié)果會(huì)直接影響到近鄰用戶的選取。另一方面,依賴用戶歷史評分?jǐn)?shù)據(jù)作出的推薦,反映的是用戶過去的興趣偏好,卻體現(xiàn)不出興趣的時(shí)效性。對于新加入的項(xiàng)目或者用戶,因?yàn)椴痪哂杏脩粢酝u分?jǐn)?shù)據(jù),不能進(jìn)行相似度計(jì)算,也存在著冷啟動(dòng)問題[2]。針對傳統(tǒng)協(xié)同過濾算法的不足之處,眾多專家學(xué)者都致力于提出改進(jìn)優(yōu)化方案。
Wang[3]等人通過考慮用戶間的不對稱性和項(xiàng)目間的相似性,提出了一個(gè)非線性相似度量模型,緩解了數(shù)據(jù)的稀疏性。Qi[4]等人針對最近鄰用戶選取不準(zhǔn)確問題,提出了一種融入信任關(guān)系和用戶特征相結(jié)合的改進(jìn)方案,有效的提高了推薦精度。Chen[5]等人考慮同一項(xiàng)目用戶單一評分尺度問題,引入平衡因子改進(jìn)余弦相似度計(jì)算的方法,優(yōu)化了用戶相似度的準(zhǔn)確性。Luo[6]等人引入用戶的局部和全局相似性的概念,提出了通過權(quán)重函數(shù)平衡兩種最近鄰預(yù)測評分的方法。Li[7]等人將用戶的屬性特征、用戶的興趣與用戶相關(guān)評分信息相結(jié)合,新的相似度量公式進(jìn)行推薦。武[8]等人在考慮用戶的基本屬性的基礎(chǔ)上,通過用戶顯隱相似度,結(jié)合用戶評分相似度,構(gòu)建用戶相似度模型,精確了近鄰用戶的選取,提高了推薦質(zhì)量。Patra[9]等人利用Bhattacharyya系數(shù)尋找用戶之間的相似性,綜合評價(jià)信息定位稀疏評價(jià)數(shù)據(jù)集中活躍用戶的有效鄰居,提出了一種基于鄰域的新相似度量方法。Liao[10]等人提出了基于權(quán)重的時(shí)間相似度計(jì)算方法,有效反映了用戶的興趣,提高了推薦的精度。Zhu[11]等人基于用戶的歷史評分和項(xiàng)目屬性信息設(shè)定用戶的選擇標(biāo)準(zhǔn),并將這些標(biāo)準(zhǔn)結(jié)合到選擇用戶的優(yōu)化框架中,緩解了冷啟動(dòng)問題。李[12]等人考慮用戶共評項(xiàng)目和用戶間的評分差異,通過引入修正因子,對傳統(tǒng)相似度計(jì)算方法進(jìn)行改進(jìn)。緩解了推薦的不準(zhǔn)確性。Wei[13]等人提出了基于離散量和用戶興趣接近度的協(xié)同過濾算法,通過將離散內(nèi)容與興趣度結(jié)合起來,在極端數(shù)據(jù)稀疏的情況下,仍然能夠提供良好的推薦效果。
在上述學(xué)者研究的基礎(chǔ)上,本文在引入項(xiàng)目分類屬性的同時(shí)考慮用戶的興趣相關(guān)因素。在用戶-項(xiàng)目評分的基礎(chǔ)上,體現(xiàn)用戶對項(xiàng)目屬性特征的偏好,引入時(shí)間權(quán)重函數(shù)間接呈現(xiàn)出其興趣變化,融合兩者相似度,得到最終相似度計(jì)算方法。實(shí)驗(yàn)結(jié)果表明,與傳統(tǒng)協(xié)同過濾算法相比,改進(jìn)后的算法提高了相似度量的精度,帶來了較好的推薦效果。
傳統(tǒng)協(xié)同過濾算法依賴歷史評分?jǐn)?shù)據(jù),為用戶推薦興趣相似的項(xiàng)目,其主要流程圖如圖1所示。
圖1 傳統(tǒng)協(xié)同過濾算法流程圖
基于用戶對項(xiàng)目的歷史評分?jǐn)?shù)據(jù),假設(shè)數(shù)據(jù)集中共有m個(gè)用戶、n個(gè)項(xiàng)目分別用U={U1,U2,U3,…,Um},I={I1,I2,I3,…,In}表示,構(gòu)建m×n維用戶評分矩陣,用戶U1對項(xiàng)目Ij評分值用Ni,j表示,用1到5的整數(shù)表示實(shí)際評分值,分?jǐn)?shù)與用戶的喜好呈顯正相關(guān)。用戶-項(xiàng)目評分矩陣如表1所示。
表1 用戶-項(xiàng)目評分矩陣
本文以基于用戶的協(xié)同過濾算法為例,對近鄰用戶集合生成過程進(jìn)行如下描述:通過目標(biāo)用戶與其它用戶之間的相似度的計(jì)算,找到與目標(biāo)用戶u近鄰用戶集合Ku={u1,u2,u3,…,uk},它由u的K個(gè)最相似鄰居用戶組成。常用的相似度計(jì)算方法如下。
Jaccard相似度:主要考慮用戶之間的共評項(xiàng)目的數(shù)量,Jaccard系數(shù)的大小在一定程度上反映著相似度的大小,值越大,相似度越高。Jaccard相似度計(jì)算方法如式(1)所示
(1)
Pearson相似度:Pearson相關(guān)系數(shù)表示兩個(gè)變量間的相關(guān)性,兩者的相關(guān)性取決于絕對值的大小。Pearson相關(guān)相似度計(jì)算方法如式(2)所示
(2)
在獲得目標(biāo)用戶K個(gè)近鄰用戶集合后,可以根據(jù)預(yù)測評分公式對其未評分過的項(xiàng)目進(jìn)行預(yù)測,并對得到的預(yù)測分?jǐn)?shù)按值進(jìn)行依次排列,選擇TopN推薦給目標(biāo)用戶,計(jì)算方法如式(3)所示
(3)
傳統(tǒng)協(xié)同過濾算法中,以選取具有共評項(xiàng)目的近鄰用戶,依據(jù)預(yù)測評分的結(jié)果進(jìn)行的推薦,忽略了項(xiàng)目屬性相關(guān)因素。而項(xiàng)目本身通常具有明顯的類別屬性,在一定程度上會(huì)影響用戶的評分,并間接反映用戶的興趣分布。特定特征的項(xiàng)目往往潛在的表現(xiàn)出著用戶的興趣愛好,其對項(xiàng)目屬性評分?jǐn)?shù)據(jù)可作為后臺(tái)數(shù)據(jù)被準(zhǔn)確記錄。因此,通過挖掘用戶行為偏好的隱式數(shù)據(jù),采用計(jì)算用戶對項(xiàng)目屬性評分值來定義用戶的興趣級別,建立用戶—屬性評分矩陣,通過計(jì)算用戶間的相似度,構(gòu)建用戶-項(xiàng)目屬性偏好相似度。
3.1.1 建立項(xiàng)目分類屬性矩陣
假設(shè)項(xiàng)目的分類屬性構(gòu)成一個(gè)集合,A={ Attr1,Attr2,… Attrk}每一個(gè)項(xiàng)目的特征可以用集合中一個(gè)或者多個(gè)分類屬性來描述,如表2為項(xiàng)目分類屬性矩陣A(n,k),如果Ai,j值為1時(shí)表示項(xiàng)目i有屬性j,為0時(shí)表示項(xiàng)目i不具有屬性j。
表2 項(xiàng)目分類屬性矩陣A(n,k)
3.1.2 建立用戶-項(xiàng)目屬性評分矩陣
結(jié)合項(xiàng)目屬性特征數(shù)據(jù)和用戶評分?jǐn)?shù)據(jù),選擇k個(gè)相關(guān)屬性描述項(xiàng),構(gòu)建m×k維用戶-項(xiàng)目屬性評分矩陣。項(xiàng)目的屬性共享項(xiàng)目的評級,即項(xiàng)目的屬性與項(xiàng)目具有相同的評級,如果用戶對項(xiàng)目i評分為t,項(xiàng)目i有屬性a,則評分矩陣S(u,a)中評分值為t。如果用戶對項(xiàng)目j的評分為c,項(xiàng)目j也有屬性a,則評分矩陣S(u,a)評分值為t+c。如果用戶不對項(xiàng)目i進(jìn)行評分,或者項(xiàng)目沒有屬性a,則評分矩陣S(u,a)評分值為0。其中,相關(guān)屬性評分矩陣如表3所示。其中Si,j表示用戶對項(xiàng)目屬性的總評分值。
表3 建立用戶-項(xiàng)目屬性評分矩陣S(u,a)
根據(jù)用戶-項(xiàng)目屬性評分矩陣,計(jì)算用戶對項(xiàng)目屬性之間的相似度,計(jì)算方法如式(4)所示。
(4)
時(shí)間是影響用戶興趣改變重要因素之一,用戶短期內(nèi)訪問的項(xiàng)目,反映著用戶的興趣偏好,長期未訪問,表明著用戶的興趣在改變,通過艾賓浩斯遺忘曲線賦予權(quán)值的不同,用來模擬用戶興趣隨著時(shí)間所發(fā)生的動(dòng)態(tài)變化。其中用戶u對項(xiàng)目i的興趣變化權(quán)重函數(shù)可用式(5)表示。
(5)
其中,t1為用戶u首次對項(xiàng)目評分的時(shí)間,ti為用戶u對項(xiàng)目i進(jìn)行評分的時(shí)間,T表示用戶對系統(tǒng)使用時(shí)間,即結(jié)束與開始時(shí)間差值的時(shí)間跨度
通過將時(shí)間權(quán)重函數(shù)與Pearson相似度計(jì)算公式相結(jié)合構(gòu)造新的相似度。
SimT(u,v)
(6)
根據(jù)上述方法,通過將引入時(shí)間權(quán)重函數(shù)改進(jìn)后的Pearson相似度與用戶對項(xiàng)目屬性偏好相似度計(jì)算方法相結(jié)合,構(gòu)造新的相似度量模型,如式(7)所示。
Sim(u,v)=λSimI(u,v)+(1-λ)SimT(u,v)
(7)
其中,SimI(u,v)表示用戶u和v對項(xiàng)目屬性偏好相似度SimT(u,v)表示引入時(shí)間權(quán)重函數(shù)改進(jìn)后的Pearson相似度,Sim(u,v)表示表示用戶u和v最終相似度計(jì)算方法,可變參數(shù)λ∈[0,1]是加權(quán)因子,用來平衡兩者相似度的比重。
由式(8)計(jì)算出用戶間的相似度,選取前K個(gè)用戶組成近鄰用戶集合,計(jì)算得到用戶u對項(xiàng)目i的預(yù)測評分,選取分?jǐn)?shù)TopN項(xiàng)目推薦給目標(biāo)用戶u。計(jì)算方法如式(8)
(8)
通過將用戶對項(xiàng)目屬性偏好相似度與引入時(shí)間權(quán)重函數(shù)改進(jìn)Pearson相似度計(jì)算方法相結(jié)合,得到更為精確的預(yù)測評分,然后進(jìn)行相關(guān)推薦,具體算法步驟如下。
輸入:目標(biāo)用戶u,用戶評分信息,項(xiàng)目-屬性矩陣A(n,k),用戶-項(xiàng)目屬性評分矩陣S(u,a),參數(shù)λ,用戶對項(xiàng)目評分時(shí)間。
輸出:對目標(biāo)用戶u的預(yù)測評分矩陣。
Step1:由項(xiàng)目的類別屬性相關(guān)信息,建立用戶-項(xiàng)目屬性評分矩陣;
Step2:根據(jù)式(4)計(jì)算出用戶對項(xiàng)目屬性興趣相似度SimI(u,v);
Step3:引入時(shí)間權(quán)重函數(shù),與Pearson相似度結(jié)合,表現(xiàn)出用戶的興趣隨著時(shí)間發(fā)生的變化,利用式(6)構(gòu)造新的相似度SimT(u,v);
Step4:將Step2與Step3得到的相似度SimI(u,v)和SimT(u,v),利用式(7),通過λ取不同的值,以調(diào)整兩者所占比重,得到經(jīng)過改進(jìn)后更為精確的相似度量Sim(u,v)的計(jì)算結(jié)果;
Step5:根據(jù)Step4得到的Sim(u,v)計(jì)算結(jié)果,選取K個(gè)最為相近的用戶組成近鄰用戶集;
Step6.利用式(8)計(jì)算出預(yù)測評分,形成預(yù)測評分矩陣,并選擇評分TopN的項(xiàng)目進(jìn)行推薦。
為了證明改進(jìn)協(xié)同過濾算法的有效性,實(shí)驗(yàn)采用MovieLens100K開源數(shù)據(jù)集,由943個(gè)用戶對1682部電影的評分?jǐn)?shù)據(jù)的組成,評分的范圍為[1,5],其中,電影的屬性信息包括動(dòng)畫、喜劇、戲劇、科幻、恐怖、動(dòng)作、冒險(xiǎn)等19種類型,分?jǐn)?shù)的高低代表著用戶的興趣級別。數(shù)據(jù)集的稀疏性為1-1000/(943×1682)=93.69%,隨機(jī)選取80%作為訓(xùn)練集,20%作為測試集。
平均絕對誤差:作為準(zhǔn)確性度量標(biāo)準(zhǔn)之一,MAE反映出的是推薦系統(tǒng)的預(yù)測評分和用戶的實(shí)際評分之間的偏差,將用戶的實(shí)際評分分集合定義為{pu,1,pu,2,…,pu,n}其預(yù)測評分集合定義為{ru,1,ru,2,…,ru,n},則計(jì)算公式為
(9)
其中,Pu,i表示用戶u對項(xiàng)目i的實(shí)際評分,ru,i表示用戶u對項(xiàng)目i的預(yù)測評分,N表示測試集中的項(xiàng)目個(gè)數(shù)。
召回率:推薦項(xiàng)目中實(shí)際預(yù)測到的物品數(shù)占推薦出物品數(shù)的比例,即預(yù)測到用戶感興趣的物品數(shù)與其喜歡物品數(shù)的比例,反映的是推薦的準(zhǔn)確性,其計(jì)算公式為
(10)
其中,U表示用戶集合,R(u)表示依據(jù)訓(xùn)練數(shù)據(jù)對用戶進(jìn)行的相關(guān)推薦,T(u)表示用戶在測試集上的行為列表。
覆蓋率:推薦系統(tǒng)推薦出來的物品數(shù)占總物品的比例,反映著推薦的多樣性和物品的概率分布,計(jì)算公式為
(11)
其中,Nk表示為用戶u推薦項(xiàng)目集合中的項(xiàng)目的個(gè)數(shù),N表示測試集中的項(xiàng)目個(gè)數(shù)。
4.3.1 平衡因子λ對MAE的影響
根據(jù)本文提出的相似度量模型,可變參數(shù)λ對相似度計(jì)算結(jié)果產(chǎn)生非常重要的影響,因此要消除平衡因子λ對推薦結(jié)果的影響,在選擇最近鄰居數(shù)為30時(shí),隨λ取值的不同,MAE的變化情況下如圖2所示。
圖2 平衡因子λ對MAE的影響
由圖2可以看出,隨著平衡因子λ值從0.1增至0.9,預(yù)測評分曲線呈現(xiàn)先降低后上升的趨勢,當(dāng)λ值為0.3時(shí),算法的MAE值最小,此時(shí)既考慮項(xiàng)目類別屬性會(huì)影響到相似度的計(jì)算,也考慮到了用戶對項(xiàng)目的評分時(shí)間的不同,反映出的興趣也不同。
4.3.2 不同算法之間對比
將本文提出改進(jìn)的相似度計(jì)算方法記為UIC-CF與Jaccard、Pearson傳統(tǒng)相似計(jì)算方法以及文獻(xiàn)[14]計(jì)算方法(Proposed)在平均絕對誤差(MAE)、召回率(Recall)、覆蓋率(Coverage)等方面進(jìn)行對比,其中,最近鄰居范圍為[10,50],實(shí)驗(yàn)結(jié)果如圖3、圖4、圖5所示。
圖3 四種算法的MAE對比圖
MAE反映了用戶預(yù)測評分與實(shí)際評分之間平均差異,從圖3可以看到隨著最近鄰居數(shù)量的增加,四種算法的平均絕對誤差逐漸減小。改進(jìn)的算法的MAE小于Jaccard、Pearson傳統(tǒng)相似度計(jì)算方法與文獻(xiàn)[14]中提出的相似度計(jì)算方法,因?yàn)榛跈?quán)重函數(shù)的引入,強(qiáng)調(diào)了用戶最近訪問項(xiàng)目的興趣偏好,同時(shí)也避免了忽略早期相關(guān)數(shù)據(jù)信息,有效的反映了用戶興趣,提高了推薦的準(zhǔn)確率。
圖4 四種算法的Recall對比圖
由圖4可以看出改進(jìn)的協(xié)同過濾算法的召回率要高于其它三種相似度計(jì)算方法,在考慮用戶對項(xiàng)目屬性偏好的同時(shí)考慮用戶的興趣遷移,推薦出的物品反映的是用戶真正的偏好,有效挖掘出了用戶的興趣。
圖5 四種算法的Coverage對比圖
圖5為4種算法在Movielens數(shù)據(jù)集中覆蓋率的對比圖,與其它三種相似度計(jì)算方法相對比,本文提出改進(jìn)的算法有著相對較高的覆蓋率。這是由于構(gòu)建了項(xiàng)目-屬性矩陣,引入了項(xiàng)目屬性,當(dāng)項(xiàng)目評分矩陣稀疏,導(dǎo)致近鄰用戶選取不準(zhǔn)確時(shí)。此時(shí),提取用戶評價(jià)的項(xiàng)目屬性,利用用戶對項(xiàng)目屬性偏好的相似性和所確定近鄰用戶的搜索范圍,在理論上保證推薦覆蓋范圍增加,提升推薦的多樣性。
由以上實(shí)驗(yàn)的對比分析可以看出,用戶對項(xiàng)目屬性偏好與以及其的興趣變化被作為重要考慮因素,改進(jìn)后的算法(UIC-CF)是有效可行的,其在平均絕對誤差、召回率、覆蓋率等方面均優(yōu)于傳統(tǒng)協(xié)同過濾算法,能帶來較好的推薦效果。
本文為了有效挖掘用戶興趣,緩解數(shù)據(jù)稀疏的缺陷,通過構(gòu)建項(xiàng)目-屬性分布矩陣反映用戶對特定特征項(xiàng)目的偏好信息,并在此基礎(chǔ)上進(jìn)一步引入時(shí)間權(quán)重函數(shù)量化用戶興趣變化,最后,構(gòu)建新的相似度量模型,實(shí)驗(yàn)結(jié)果表明,改進(jìn)后的方法反映了用戶的偏好,適應(yīng)了用戶興趣隨時(shí)間而變化,有效的降低平均絕對誤差,提高覆蓋率和召回率,緩解了數(shù)據(jù)的稀疏性,提高了推薦精度,改善了推薦效果。
由于新的相似度量模型要使用項(xiàng)目屬性相關(guān)信息,屬性的選擇在實(shí)踐中可能面臨一些障礙,因此,要實(shí)現(xiàn)對新場景的應(yīng)用,需要有特定的項(xiàng)目屬性。