馬瑞新,郭芳清,劉振嬌,陳志奎,趙 亮
(大連理工大學(xué) 軟件學(xué)院,遼寧 大連 116620)
不斷發(fā)展的互聯(lián)網(wǎng)技術(shù)加快了互聯(lián)網(wǎng)信息的增長速度,造成了嚴(yán)重的信息過載,用戶在巨量信息中快速找到有意義的信息越來越困難。當(dāng)用戶面對大量信息時,如何花費較少的時間獲取對自己有價值的信息成為一個關(guān)鍵性的難題,個性化推薦[1-2]能夠有效地解決此類問題。傳統(tǒng)的個性化推薦方法主要包括基于內(nèi)容的推薦算法、協(xié)同過濾推薦算法和混合推薦算法。其中協(xié)同過濾推薦算法[3]作為一類經(jīng)典的推薦算法,在實際中獲得了廣泛的應(yīng)用,同時也得到了很多研究者的關(guān)注。協(xié)同過濾推薦主要包括基于鄰居集(neighborhood-based)[4-5]和基于模型(model-based)[6]兩種,其中基于鄰居集的協(xié)同過濾推薦又分為基于用戶(user-based)[4]和基于項目(item-based)[5]兩種方法,但是在計算項目或者用戶的相似性過程中只利用具有共同評分的數(shù)據(jù),不能全面地估計項目(用戶)相似度,而且當(dāng)用戶與項目的交互信息較少時,即用戶已經(jīng)評過分的項目遠少于全部項目個數(shù)時,還會出現(xiàn)數(shù)據(jù)稀疏等問題。近年來,國內(nèi)外科研人員提出了不同的思路用于改善傳統(tǒng)的協(xié)同過濾方法存在的不足。鄧秀勤等[7]提出了一種通過構(gòu)建融合全加權(quán)矩陣分解的協(xié)同過濾模型來提高準(zhǔn)確率的用戶協(xié)同過濾推薦算法。郭彩云等[8]在用戶對標(biāo)簽權(quán)重的計算時融入了用戶的評分,這種改進的基于標(biāo)簽的協(xié)同過濾算法能夠考慮用戶有不同興趣程度的項目對推薦結(jié)果的影響,進而充分挖掘用戶真實的興趣以提升推薦性能。Liu等[9]采用關(guān)聯(lián)挖掘技術(shù),提出了被應(yīng)用于引文推薦中的基于上下文的協(xié)同過濾方法。Ushiama等[10]提出的一種基于推特用戶相似性的項目個性化排序方法,不要求用戶手動指定自己的興趣和偏好,著重于利用用戶發(fā)布的內(nèi)容提取用戶的特征。Huynh等[11]提出了一種基于上下文屬性的協(xié)同過濾模型,該模型的計算結(jié)果基于評價值的相似因素和上下文屬性的相似因素。矩陣分解和聚類也經(jīng)常被應(yīng)用于協(xié)同過濾推薦中,用于解決數(shù)據(jù)稀疏性和擴展性等問題,如基于矩陣奇異值分解的SVD算法[12]、非負矩陣分解[13]、K-means聚類[14]、c均值模糊聚類方法[15-16]等。龔敏等[14]在進行用戶聚類時使用K-means方法,使用Slope One算法生成評分矩陣,在一定程度上緩解了系統(tǒng)的可擴展性問題。目前,一些研究通過改進項目間和用戶間的相似度提高推薦精度,但仍然存在著由于僅使用擁有共同評分的數(shù)據(jù),而無法充分挖掘用戶間和項目間興趣分布和不能有效緩解數(shù)據(jù)稀疏等問題。
針對上述問題,該文提出了融合上下文信息與核密度估計的協(xié)同過濾個性化推薦方法。該方法融合了用戶和項目的上下文信息,通過核密度估計方法構(gòu)建用戶和項目的興趣模型,利用用戶和項目的上下文信息充分挖掘了用戶和項目的興趣分布,更好地估計用戶間和項目間的興趣相似度,以獲得更精確的預(yù)測評分,最后完成用戶和項目間的推薦。在公開的數(shù)據(jù)集上驗證表明,該算法有效地提高了推薦系統(tǒng)的精確度。
傳統(tǒng)的協(xié)同過濾算法是通過用戶的歷史行為獲得用戶的偏好,進而為用戶推薦更有可能喜歡的項目。本節(jié)將詳細介紹推薦過程中所需要的數(shù)據(jù)的表示、常用的相似性度量方法和分?jǐn)?shù)預(yù)測規(guī)則。
在利用協(xié)同過濾方法進行推薦時,所使用的數(shù)據(jù)包括用戶信息、項目信息以及用戶對項目的評分信息,通過用戶對項目的評分信息,即用戶的歷史行為的分析可以獲得用戶對此項目的態(tài)度。因此,定義用戶集合U={user1,user2,…,userm},項目集合I={item1,item2,…,itemn},m表示推薦系統(tǒng)中用戶的個數(shù),n表示其中項目的個數(shù),ru,i表示用戶u對項目i的評分。根據(jù)所處理的數(shù)據(jù)構(gòu)建一個包含所有用戶與項目的評分矩陣,矩陣表示如表1所示。
在該矩陣中,由于有些項目并沒有被用戶觀看或使用,因此沒有相對應(yīng)的評分,此時該用戶對該項目無歷史行為,ru,i不存在。如表1所示,行向量為每個用戶對不同項目的喜好情況,用于表示用戶的興趣,列向量為每個項目對應(yīng)不同用戶的評分結(jié)果,表示項目的興趣。對于評分為空的部分?jǐn)?shù)據(jù),可以通過已經(jīng)存在的評分?jǐn)?shù)據(jù)獲得興趣模型進行預(yù)測。但是由于矩陣中缺失部分?jǐn)?shù)據(jù),雖然該直接獲得的興趣模型能夠簡單方便的進行計算,但得到的興趣分布較為粗糙,無法充分利用所獲得的數(shù)據(jù),存在著不足。
表1 用戶 -項目評分矩陣
在協(xié)同過濾推薦算法中,需要獲得用戶相似度及項目相似度,相似度計算的準(zhǔn)確性很大程度影響到推薦效果。一般情況下,有三種具有代表性的相似性度量方法,分別為余弦相似性度量、修正的余弦相似性度量以及Pearson相關(guān)系數(shù)[17]??傮w來說,普通的余弦相似性度量計算方法效果較差,為了提高系統(tǒng)推薦性能,Pearson相關(guān)系數(shù)和修正的余弦相似性兩種方法能夠獲得更精確的結(jié)果,下文將詳細介紹這兩種方法。
(1)Pearson相關(guān)系數(shù)。
(1)
(2)
(2)修正的余弦相似性。
余弦相似性度量方法是根據(jù)向量的坐標(biāo)值計算兩個向量的夾角余弦值,值越大,相似性越大。在協(xié)同過濾推薦過程中計算用戶間和項目間相似度時,將用戶向量看作映射到項目空間的n維向量,將項目向量看作時映射到用戶空間的m維向量。在真實推薦系統(tǒng)中,每個用戶評分尺度不同,具有同樣喜好程度的用戶可能會對相同的項目打不同的分?jǐn)?shù)。直接使用余弦相似性方法,由于忽略評分標(biāo)準(zhǔn)的不同,不能獲得準(zhǔn)確的度量結(jié)果。修正的余弦相似性計算方法可用來彌補以上不足,在計算用戶相似度過程中將評分矩陣中用戶的真實評分?jǐn)?shù)據(jù)減去用戶對所有項目產(chǎn)生的評分的平均值來減少不同用戶評價標(biāo)準(zhǔn)不同所帶來的消極影響,用戶相似度計算具體方法如式(3):
(3)
在計算項目間相似度時,為了規(guī)避由于評分尺度不同產(chǎn)生的計算問題,將真實的項目評分減去該項目所對應(yīng)的所有評分的平均值,詳細的計算方法如式(4)所示:
(4)
在分別獲得目標(biāo)用戶與其他用戶之間相似度和目標(biāo)項目與其他項目之間的相似度后,分別將相似度的值按照從小到大的順序排列,選取相似度值較小的前幾個用戶和項目作為目標(biāo)用戶和目標(biāo)項目的鄰居集。
根據(jù)求得的目標(biāo)用戶鄰居集,相似性作為權(quán)重,將用戶對目標(biāo)項目的評分的加權(quán)平均作為預(yù)測評分。由于不同的用戶評分尺度不同,修改評分預(yù)測策略,預(yù)測規(guī)則如式(5)所示:
(5)
根據(jù)求得的目標(biāo)項目鄰居集,相似性作為權(quán)重,將項目對目標(biāo)用戶的評分的加權(quán)平均作為預(yù)測評分,由于不同的用戶評分尺度不同,修改評分預(yù)測策略,預(yù)測規(guī)則如式(6)所示:
(6)
該文提出的融合上下文信息與核密度估計的協(xié)同過濾推薦方法首先挖掘用戶和項目在已知數(shù)據(jù)上的興趣分布,然后估計用戶和項目的興趣分布,通過計算興趣度在缺失數(shù)據(jù)上的擴散,更加準(zhǔn)確地構(gòu)建用戶興趣模型。下面具體介紹該算法的3個主要步驟。
在推薦系統(tǒng)中,用戶和項目具有相對應(yīng)的上下文信息,不同的上下文信息被不同的類別包含,通過對上下文信息的類別進行區(qū)分和計算,可以分別獲得用戶和項目的上下文分類相似度。
2.1.1 基于上下文的項目分類相似度
定義集合C={C1,C2,…,Ck}表示項目上下文信息類別集合,其中Ck為項目的一種上下文類別,Ck={Ck1,Ck2,…,Ckk},Ckk為某種上下文類別中的具體分類信息。例如,在電影推薦系統(tǒng)中,電影可以被具體分為主演、導(dǎo)演、電影類型、拍攝地、上映日期等不同類別的上下文信息,每一類上下文信息中又具有詳細的劃分,如在類型信息中可以將電影分為喜劇片,愛情片、戰(zhàn)爭片、動作片等,一個項目可能同屬于戰(zhàn)爭片和動作片。計算項目的上下文信息相似度,需要考慮到項目之間共有的類別比例和共有的類別占整個上下文信息類別集合的比例。Ci∈C,定義項目間的上下文分類相似度計算如式(7)所示:
(7)
考慮到在使用項目間距離度量時,需隨著項目間相似性的增大,在項目空間上兩個項目的距離減小,因此項目i與項目j的距離計算如式(8)所示:
dij=1-simc(i,j)
(8)
2.1.2 基于上下文的用戶分類相似度
定義集合D={D1,D2,…,Dk}表示用戶上下文信息類別集合,其中Dk為用戶的一個上下文類別,Dk={Dk1,Dk2,…,Dkk},Dkk為上下文類別中的具體分類信息。例如用戶的上下文信息包括用戶的年齡、職業(yè)、性別等類別。每一類用戶上下文信息也可以被劃分為更詳細的類別,如用戶的年齡可以按照年齡段進行進一步劃分。計算用戶的上下文信息相似度,需要考慮到用戶之間共有的類別比例和共有的類別占整個上下文信息類別集合的比例。定義用戶間的上下文分類相似度如式(9)所示:
(9)
在實際計算用戶間距離時,需隨著用戶間相似性變大,在用戶空間上兩個用戶的距離減小,因此用戶u與用戶v的距離計算如式(10)所示:
duv=1-simc(u,v)
(10)
核密度估計方法利用已測得的樣本估計未被測到的樣本分布,能夠估計未知的密度函數(shù),是一種非參數(shù)估計方法[18]。設(shè)X1,X2,…,Xn為總體分布X的獨立同分布樣本,具體的核密度估計定義如式(11)所示:
(11)
在為用戶推薦項目時,用戶對于沒有被評過分的項目也存在興趣偏好,傳統(tǒng)的相似性計算方法,往往僅使用了擁有共同評分的項目,降低了推薦系統(tǒng)性能,在數(shù)據(jù)稀疏時,可用數(shù)據(jù)更少難以做出準(zhǔn)確的判斷。針對這個問題,首先對用戶在整個項目空間和項目在整個用戶空間上的興趣密度分布進行估計,然后再分別計算用戶間和項目間的興趣密度分布的相似性,以改善推薦性能。在實際情況中,興趣密度分布往往會出現(xiàn)多個局部最大值,參數(shù)估計方法的參數(shù)模型的基本假定與實際情況差異較大,因此非參數(shù)估計方法中的核密度估計方法更適用于推薦。核函數(shù)有多項式核函數(shù)、高斯核函數(shù)、線性核函數(shù)、三角核函數(shù)等種類。高斯核函數(shù)(徑向基核函數(shù)),將有限維數(shù)據(jù)映射到無窮維,是復(fù)雜總和的有限機率分布。興趣分布可以看作是含有不同種類的不確定因素的一個有限機率分布,因此,首先考慮使用高斯核函數(shù),其定義如式(12):
(12)
式(13)和式(14)分別表示用高斯核密度估計方法估計的用戶興趣分布Pu與項目興趣分布Pi。
(13)
(14)
本節(jié)主要說明如何計算用戶間相似度和項目間相似度。在信息論中,相對熵,又稱KL散度,是兩個概率分布之間差別的非對稱性度量,類似文獻[19]策略,文中通過相對熵分別計算用戶相似性和項目相似度,具體定義如式(15)和式(16)所示:
(15)
(16)
因為KL散度的非對稱性,不能將其直接作為度量相似度的標(biāo)準(zhǔn),該文采用式(17)和式(18)分別獲得用戶和項目的相似性:
(17)
(18)
在進行2.1,2.2,2.3節(jié)的分類相似度計算、興趣模型構(gòu)建、相似度計算步驟后,綜合根據(jù)1.3節(jié)預(yù)測評分計算方法得到的預(yù)測值獲得用戶項目評分矩陣中為空的評分預(yù)測值。具體的融合上下文信息和核密度估計的推薦算法過程如下所述:
融合上下文信息和核密度估計的推薦算法:
輸入:用戶信息、項目信息、用戶對項目的歷史評分?jǐn)?shù)據(jù)
輸出:預(yù)測評分
1.通過式(8)計算用戶間距離,式(10)計算項目間的距離;
2.計算興趣分布,通過式(13)計算用戶的興趣分布,式(14)計算在用戶空間上項目的興趣分布;
3.不斷重復(fù)步驟1和步驟2,直至獲得全部用戶和項目的興趣分布;
4.計算相似性,通過式(17)計算用戶間相似性,式(18)計算項目間的相似性;
5.通過式(5)和式(6)分別計算預(yù)測評分;
6.綜合第5步中的結(jié)果得到預(yù)測評分,根據(jù)預(yù)測分?jǐn)?shù)完成推薦。
文中的數(shù)據(jù)集采用明尼蘇達大學(xué)提供的MovieLens[20]數(shù)據(jù)集,具體使用的是MovieLens中的ML-100K數(shù)據(jù)集。ML-100K數(shù)據(jù)集中含有943個用戶和1 682部電影,共包括產(chǎn)生的十萬條評分記錄。數(shù)據(jù)集中的分?jǐn)?shù)為1-5的整數(shù),每名用戶對超過20部電影擁有評分記錄,分?jǐn)?shù)越高則用戶對電影的評價越好。為獲取完善的上下文信息,從網(wǎng)絡(luò)上爬取了MovieLens數(shù)據(jù)集中電影名稱所對應(yīng)的上下文屬性信息。將數(shù)據(jù)集按8∶2的比例隨機分配為訓(xùn)練集與測試集。
采用精確度(Precision)和平均絕對誤差(mean absolute error,MAE)作為評分標(biāo)準(zhǔn),精確度和平均絕對誤差是推薦算法中常用的評估度量。精確度表示預(yù)測評分與真實評分相同的項目在測試集中所有項目的占比,精確度越高推薦質(zhì)量越高。由于預(yù)測評分值為浮點型,實際評分值為1-5的整數(shù),預(yù)測評分與實際評分很難完全相等,因此設(shè)置閾值Threshold,預(yù)測評分與實際評分值小于此閾值,則認(rèn)為實際評分與預(yù)測評分相等。精確度計算如式(19)所示:
(19)
平均絕對誤差表示預(yù)測值和觀測值之間絕對誤差的平均值,MAE值越小表示推薦越準(zhǔn)確,MAE的計算如式(20)所示:
(20)
其中,Pu,i表示用戶u對項目i的預(yù)測分?jǐn)?shù)值,Ru,i表示用戶u對項目i的實際分?jǐn)?shù)值,m為測試集中所有的項的個數(shù),|R|為預(yù)測評分與實際評分之差小于閾值的項目個數(shù)。
3.3.1 參數(shù)對實驗結(jié)果的影響
(1)核函數(shù)帶寬的影響。
該實驗分析了高斯核函數(shù)帶寬對實驗結(jié)果的影響,設(shè)置帶寬h的范圍為0.5~1.3,圖1、圖2分別為在不同帶寬情況下實驗的Precision值和MAE值。由圖1可知,在帶寬較小時,精確度的波動較大,隨著核函數(shù)帶寬的增加,精確度變化逐漸趨于平穩(wěn),當(dāng)h=0.8時精確度值最高。由圖2可知,當(dāng)h=0.8時,MAE值達到最低點,在核函數(shù)帶寬超過1后,MAE值逐漸升高。因此,當(dāng)h=0.8時,實驗效果達到最優(yōu)狀態(tài)。
圖1 核函數(shù)帶寬與precision值的關(guān)系
(2)基于用戶間相似度的評分與基于項目間相似度的評分的權(quán)重對實驗結(jié)果的影響。
最終評分由基于用戶間相似度的評分與基于電影項目間相似度的評分兩部分組成,兩部分的權(quán)重不同會對最終預(yù)測結(jié)果產(chǎn)生影響。表2為不同權(quán)重下實驗的Precision值和MAE值,基于用戶間相似度的評分,簡稱為(byUser),基于項目間相似度的評分,簡稱為(byMovie)。從表2中可以看出,隨著byUser在總評分中權(quán)重的增加,實驗的Precision逐漸提高至最高點后下降,MAE逐漸降低至最低點后升高。當(dāng)byUser與byMovie占比分別為0.45和0.55時,實驗的Precision最高,當(dāng)byUser與byMovie占比分別為0.55和0.45時,實驗的MAE達到最低。
圖2 核函數(shù)帶寬與MAE值的關(guān)系
表2 byUser與byMovie權(quán)重對實驗結(jié)果的影響
3.3.2 實驗對比分析
在ML-100K數(shù)據(jù)集下,將文中的推薦方法分別與基于Pearson相關(guān)系數(shù)的協(xié)同過濾算法(P-CF)、基于修正余弦相似度的協(xié)同過濾算法(Cos-CF)、基于核方法的協(xié)同過濾算法(K-CF)進行對比。
圖3 不同鄰居集數(shù)量下各算法Precision值對比
圖3、圖4分別為在不同鄰居集數(shù)量的情況下,四種算法的精確度(Precision)和平均絕對誤差(MAE)的值,實驗設(shè)置鄰居集大小分別為10、15、20、25、30。由圖3、圖4可知,文中提出的算法在鄰居集大小不同的情況下,均較其他三種算法具有較高的精確度和較低的MAE值。其他三種算法在鄰居集較大的情況下,精確度才逐漸提高,MAE值逐漸下降。而鄰居集越大,在一定程度上算法的運行時間也會增加。文中提出的方法在鄰居集數(shù)量較少時,就可以得到遠優(yōu)于其他算法的精確度和MAE值,不會受到鄰居集大小的限制。
圖4 不同鄰居集數(shù)量下各算法MAE值對比
通過將文中提出的方法與其他三種算法進行對比,提出的融合上下文信息與核密度估計的個性化協(xié)同過濾推薦算法在Precision值上均高于其他三種算法,MAE值上均低于其他三種算法,該算法受鄰居集大小影響較小,證明了提出的方法的有效性和穩(wěn)定性。
針對傳統(tǒng)的協(xié)同過濾算法在稀疏性和無法充分利用數(shù)據(jù)信息等問題,提出了融合上下文信息與核密度估計的協(xié)同過濾推薦方法。該方法融合了用戶和項目的上下文信息,分別計算用戶和項目的上下文分類相似度,利用核密度估計方法對用戶和項目的興趣分布建模,然后用KL散度計算興趣相似度,將相似性度量值進行排序,獲取相似性高的近鄰集合,最后通過評分預(yù)測規(guī)則得到預(yù)測評分,將合適的項目推薦給用戶。通過在公開的電影數(shù)據(jù)集上驗證,證明了該方法在提高推薦系統(tǒng)性能的有效性,并且效果穩(wěn)定。