牛奉高,王恩慧,徐倩麗
(山西大學(xué) 數(shù)學(xué)科學(xué)學(xué)院,山西 太原 030006)
在當(dāng)前大數(shù)據(jù)、信息爆炸的時(shí)代,人們很難找到自己真正需要或者可能感興趣的信息。推薦系統(tǒng)的產(chǎn)生就是為了解決這一問題。目前,不僅僅是電商網(wǎng)站,新聞、音樂、影視等許多網(wǎng)站都加入了適合自己平臺的推薦系統(tǒng),這樣有利于讓用戶發(fā)現(xiàn)他需要或者感興趣的信息,同時(shí)信息平臺也可以把自己的特色項(xiàng)目展示給用戶,實(shí)現(xiàn)用戶和平臺的雙贏[1]。推薦系統(tǒng)中用戶對項(xiàng)目的評分?jǐn)?shù)據(jù)是最能直觀地反映用戶偏好和用戶期望的信息。隨著各大信息平臺前景的不斷提升,項(xiàng)目數(shù)量和用戶數(shù)量都急劇上升,并不是每個(gè)用戶對其體驗(yàn)過的項(xiàng)目都評分,也不是所有商品都有相應(yīng)的用戶對其評分,因此用戶-項(xiàng)目評分矩陣就會極其稀疏,這就會影響用戶或者項(xiàng)目的相似性度量,進(jìn)而影響推薦系統(tǒng)的推薦精準(zhǔn)度。
隨著推薦算法的改進(jìn)與提升,解決數(shù)據(jù)稀疏性問題的方法也相應(yīng)增多。文獻(xiàn)[2]將用戶評分的均值差引入對用戶的相似度計(jì)算中,并將相似向量的均值引入評分矩陣并實(shí)現(xiàn)降維。文獻(xiàn)[3]提出了將k近鄰算法引入傳統(tǒng)的協(xié)同過濾算法中,分步填充用戶-項(xiàng)目評分矩陣,有效地緩解了數(shù)據(jù)稀疏性的問題。文獻(xiàn)[4]通過分析傳統(tǒng)項(xiàng)目間相似性度量方法存在的缺陷,引入基于項(xiàng)目的評分預(yù)測,提高了推薦精度。文獻(xiàn)[5]在計(jì)算項(xiàng)目之間相似度時(shí)引入評分值以及特征向量,提高了推薦質(zhì)量。文獻(xiàn)[6]用Adaboots算法,通過引入閾值,將評分預(yù)測問題轉(zhuǎn)化為分類問題,通過加權(quán)思想訓(xùn)練出多個(gè)模型并且集成起來做最終的評分預(yù)測。
以上文獻(xiàn)提出的解決推薦系統(tǒng)數(shù)據(jù)稀疏性問題的方法有一定的緩解效果,但是還存在評分矩陣填充度不高或者信息失真等的問題,因此本文在傳統(tǒng)的基于項(xiàng)目的相似性推薦算法中引入CLSVSM模型,通過項(xiàng)目間的共現(xiàn)強(qiáng)度計(jì)算預(yù)測評分,補(bǔ)全評分矩陣,最后進(jìn)行項(xiàng)目推薦。
基于項(xiàng)目評分的推薦算法也稱為基于項(xiàng)目的協(xié)同過濾推薦算法,該算法的核心思想是向用戶推薦與他們曾經(jīng)喜歡的項(xiàng)目相似的項(xiàng)目。該算法分為兩步:一是計(jì)算項(xiàng)目之間的相似度;二是通過物品的相似度和用戶-項(xiàng)目評分矩陣為用戶生成推薦列表。兩個(gè)項(xiàng)目之間的相似性度量思想是計(jì)算樣本之間的“距離”。項(xiàng)目i與項(xiàng)目j的相似性一般記為sim(i,j)。相似度的值越小,項(xiàng)目間的相似性就越高[7]。度量項(xiàng)目之間的相似性主要分為以下3種:
(1)
(2)Pearson相關(guān)系數(shù)相似性:設(shè)Ui,j為對項(xiàng)目i和項(xiàng)目j共同評分過的用戶集,則計(jì)算項(xiàng)目i與項(xiàng)目j之間的相似性sim(i,j)公式表示為:
(2)
(3)修正的余弦相似性:余弦相似度只考慮了向量維度方向上的相似,而未考慮到用戶評分空間問題。在公式(1)的方法中對每個(gè)維度減去平均值。設(shè)Iij為對i和j共同評分過的全部用戶集,Ii和Ij分別表示對i和j打分過的所有用戶,則計(jì)算項(xiàng)目i與項(xiàng)目j的相似性sim(i,j)公式為:
(3)
計(jì)算出項(xiàng)目之間的相似度以后,通常用公式(4)計(jì)算用戶u對項(xiàng)目j的喜好程度:
(4)
式中,N(u)表示用戶喜歡的項(xiàng)目合集;S(j,K)是前K個(gè)與項(xiàng)目j最相似的項(xiàng)目合集;wji表示項(xiàng)目i和項(xiàng)目j的相似度;rui表示用戶u對項(xiàng)目i的喜好程度(文章中如果用戶對電影評分,則認(rèn)為rui=1)。
項(xiàng)目之間的相似度計(jì)算需要用到用戶對項(xiàng)目的評分,但是用戶-項(xiàng)目評分矩陣稀疏很使得推薦系統(tǒng)的推薦精準(zhǔn)度難以提高。評分預(yù)測不僅要填充稀疏矩陣,關(guān)鍵是提高評分預(yù)測的精確度。評分預(yù)測問題最基本的數(shù)據(jù)集就是用戶評分?jǐn)?shù)據(jù)集,評分記錄可以表示為一個(gè)三元組(u,i,r),表示用戶u給項(xiàng)目i賦予了評分r。評分預(yù)測一般是使用離線數(shù)據(jù)實(shí)驗(yàn),預(yù)測用戶對未體驗(yàn)過的項(xiàng)目的喜好程度[8]。通常獲取用戶歷史評分?jǐn)?shù)據(jù)以后,將數(shù)據(jù)集分成兩部分,一部分是訓(xùn)練集,另一部分是測試集。根據(jù)訓(xùn)練集建立用戶興趣模型來預(yù)測測試集中的用戶評分[9]。傳統(tǒng)的評分預(yù)測算法一般有以下3種:
(1)平均值方法:平均值預(yù)測算法是利用評分平均值預(yù)測用戶對項(xiàng)目的評分,又分為以下兩種算法:
a.全局平均值:它定義為訓(xùn)練集中所有評分記錄的評分平均值:
(5)
式中,U表示用戶,i表示項(xiàng)目,rui為用戶u對項(xiàng)目i的評分,Train表示訓(xùn)練集。
b.用戶分類對項(xiàng)目分類的平均值:該算法是在全局平均值的基礎(chǔ)上,定義兩個(gè)分類函數(shù),一個(gè)是用戶分類函數(shù)φ,一個(gè)是項(xiàng)目分類函數(shù)φ。φ(u)定義了用戶u所屬的類,φ(i)定義了項(xiàng)目i所屬的類。該算法的思想是利用訓(xùn)練集中相同集合的用戶對相同集合的項(xiàng)目評分的平均值預(yù)測用戶對項(xiàng)目的評分:
(6)
(2)基于相似用戶(項(xiàng)目)的方法:
基于相似用戶(項(xiàng)目)的算法包括以下3種預(yù)測方法:
a.基于用戶的算法思想是,預(yù)測一個(gè)用戶對一個(gè)項(xiàng)目的評分,需要加入和這個(gè)用戶興趣相似的用戶對該項(xiàng)目的評分:
(7)
b.基于項(xiàng)目的算法思想是:在預(yù)測用戶u對項(xiàng)目i的評分時(shí),需要加入用戶u對和項(xiàng)目i相似的其他項(xiàng)目的評分:
(8)
牛奉高等人[10]在2014年提出了利用共現(xiàn)潛在語義向量空間模型(Co-occurrence Latent Semantic Vector Space Model,CLSVSM)來進(jìn)行文獻(xiàn)聚合,通過共現(xiàn)分析方法挖掘潛在語義。通常在文本庫中,如果一些詞經(jīng)常同時(shí)出現(xiàn)(共現(xiàn))在同一文本中,則認(rèn)為這些詞具有極強(qiáng)的相關(guān)聯(lián)性。同時(shí)這些詞的集合出現(xiàn)的頻率越高,那么它們的相關(guān)程度就越大,并且表示出一定的語義概念[11]。
共現(xiàn)潛在語義向量空間模型中最大共現(xiàn)強(qiáng)度這一概念解決了高維篇-詞矩陣的稀疏性。它是將傳統(tǒng)矩陣化為布爾矩陣,賦予0和1權(quán)重的文本表示模型進(jìn)行語義補(bǔ)充,權(quán)重表示為某一關(guān)鍵詞在文本中是否出現(xiàn),構(gòu)建文本的篇-詞矩陣[12]。表示關(guān)鍵詞的共現(xiàn)矩陣為:c=AT·A=(cij)m×m,當(dāng)i=j時(shí),cij為第i個(gè)關(guān)鍵詞與第j個(gè)關(guān)鍵詞出現(xiàn)的總頻次。根據(jù)共現(xiàn)矩陣,計(jì)算關(guān)鍵詞之間的共現(xiàn)相對強(qiáng)度矩陣:
(9)
基于CLSVSM的推薦算法思想是:首先通過CLSVSM對評分信息中的項(xiàng)目進(jìn)行共現(xiàn)分析,挖掘項(xiàng)目之間的共現(xiàn)潛在信息,然后利用挖掘出來的信息對原始評分矩陣(用戶-項(xiàng)目評分矩陣)進(jìn)行補(bǔ)全,從而降低評分矩陣的稀疏度,使項(xiàng)目相似度的計(jì)算更加準(zhǔn)確。最后基于補(bǔ)全的評分矩陣計(jì)算出項(xiàng)目相似度進(jìn)行評分預(yù)測,生成推薦。
利用CLSVSM對項(xiàng)目進(jìn)行共現(xiàn)分析的步驟為,先將原始數(shù)據(jù)生成用戶-項(xiàng)目評分矩陣,把矩陣中有評分的設(shè)為1,缺失部分設(shè)為0形成一個(gè)布爾矩陣[13]A,然后利用公式c=AT·A=(cij)計(jì)算項(xiàng)目的共現(xiàn)矩陣,最后根據(jù)共現(xiàn)矩陣以及公式(10)就可以得出項(xiàng)目之間的共現(xiàn)相對強(qiáng)度矩陣B。
共現(xiàn)分析后進(jìn)行原始評分矩陣的補(bǔ)全,利用項(xiàng)目共現(xiàn)潛在關(guān)系補(bǔ)全原始評分矩陣的方法是加權(quán)平均法:以項(xiàng)目之間的共現(xiàn)強(qiáng)度作為標(biāo)準(zhǔn),先找到用戶u評分過的項(xiàng)目集T以及u對它們的評分合集Ru,T={rut|t∈T},然后將項(xiàng)目T中的項(xiàng)目與該用戶沒有評分過的項(xiàng)目i之間的共現(xiàn)強(qiáng)度集合Bi,T={bit|t∈T}作為權(quán)重,計(jì)算Ru,T的加權(quán)平均,并把結(jié)果作為填補(bǔ)信息,填入用戶-項(xiàng)目評分矩陣中。記新的評分矩陣為RQ,建立如公式(11)的模型補(bǔ)全原始評分矩陣,最后根據(jù)基于項(xiàng)目間權(quán)重的評分預(yù)測算法得出預(yù)測評分模型并進(jìn)行評分預(yù)測。文章將基于RQ矩陣進(jìn)行推薦的IBCF稱為CLSVSM_IBCF算法。
(10)
式中,U是電影合集,T為用戶i看過的電影合集,k是用戶i看過的其中一部電影,Bjk為電影j和電影k之間的共現(xiàn)強(qiáng)度。
電影行業(yè)一直保持著高速發(fā)展的態(tài)勢,電影網(wǎng)站點(diǎn)擊量也日益增長,因此文章以電影評分作為實(shí)驗(yàn)對象,選取了著名的Grouplens實(shí)驗(yàn)室成立的movielens站點(diǎn)中的數(shù)據(jù)集。推薦系統(tǒng)中許多推薦算法都是基于該數(shù)據(jù)集。movielens數(shù)據(jù)集不僅容易獲取,數(shù)據(jù)信息也十分齊全,并且數(shù)據(jù)真實(shí)性高具有說服力。實(shí)驗(yàn)選取了movielens數(shù)據(jù)集中的ml-100k的數(shù)據(jù)集,其中包含了943個(gè)人對1 682部電影的評分記錄,每人至少有20條評分?jǐn)?shù)據(jù),共10 000條評分記錄,數(shù)據(jù)集還包括用戶的個(gè)人信息和電影的標(biāo)簽信息,所有的信息都經(jīng)過了脫敏處理。
Step 1 將原始數(shù)據(jù)進(jìn)行融合重鑄,生成維數(shù)為943×1 682的user-item評分矩陣R;
Step 2 設(shè)矩陣R中有評分的項(xiàng)為1,缺失項(xiàng)為0,生成布爾矩陣[14];
Step 3 計(jì)算電影共現(xiàn)矩陣;
Step 4 基于CLSVSM生成電影共現(xiàn)強(qiáng)度矩陣;
Step 5 通過電影之間的共現(xiàn)強(qiáng)度矩陣,利用式(10)對原始評分矩陣進(jìn)行補(bǔ)全;
Step 6 運(yùn)用公式(4)推薦算法進(jìn)行推薦。
文章實(shí)驗(yàn)對比算法是基于項(xiàng)目的相似度評分預(yù)測IBCF模型,通過隨機(jī)抽樣,進(jìn)行了15次實(shí)驗(yàn)比較。把R矩陣中70%的評分?jǐn)?shù)據(jù)設(shè)置為訓(xùn)練樣本,把剩余30%的評分?jǐn)?shù)據(jù)設(shè)置為測試樣本,對于剩余30%的用戶,將每個(gè)人所評分的項(xiàng)目分為已知(known)和未知(unknown)部分:
(1)known數(shù)據(jù)是抽10個(gè)已知,剩下的全標(biāo)記為NA;known數(shù)據(jù)用來做預(yù)測,根據(jù)10個(gè)已知的評分預(yù)測剩下的電影評分;
(2)unknown數(shù)據(jù)是known的補(bǔ)集,把10個(gè)已知的標(biāo)為NA,這樣做的目的是為了用真實(shí)結(jié)果和known數(shù)據(jù)預(yù)測出來的結(jié)果作比較,進(jìn)行模型評價(jià)。
3.3.1 推薦算法測評指標(biāo)
測試推薦系統(tǒng)中推薦算法的優(yōu)劣通常用平均絕對誤差(MAE)的值和均方根誤差(RMSE)的值來進(jìn)行判斷[15]。
(1)MAE:對所有評估用戶u∈U和測試集(testsetu)的所有物品,計(jì)算推薦得分rec(u,i)與實(shí)際分值rui的平均偏差,|testsetu|表示測試結(jié)果的個(gè)數(shù),它的計(jì)算方法為:
(11)
(12)
式中,Test為測試集中用戶對項(xiàng)目的評分?jǐn)?shù)據(jù)集,|Test|為測試集結(jié)果的個(gè)數(shù),評分預(yù)測的目的是要找到最好的模型最小化測試集的RMSE。
3.3.2 實(shí)驗(yàn)結(jié)果分析
文章實(shí)驗(yàn)通過對比傳統(tǒng)的基于項(xiàng)目相似性評分預(yù)測算法與加入CLSVSM計(jì)算電影之間共現(xiàn)強(qiáng)度的基于電影之間權(quán)重的評分預(yù)測算法,文章采用的模型評價(jià)標(biāo)準(zhǔn)為MAE和RMSE,實(shí)驗(yàn)結(jié)果如圖1和圖2。圖1直觀地顯示15次實(shí)驗(yàn)中,基于CLSVSM的項(xiàng)目推薦算法與傳統(tǒng)的基于項(xiàng)目的評分預(yù)測推薦算法相比均具有最小的MAE。從圖2可以看出傳統(tǒng)基于項(xiàng)目的評分預(yù)測推薦算法均高于基于CLSVSM的項(xiàng)目評分預(yù)測推薦算法,對兩種算法的15次實(shí)驗(yàn)結(jié)果的RMSE求均值,IBCF的MAE均值為1.483,CLSVSM-IBCF的MAE均值為1.221,新算法的MAE平均下降幅度為17.6%;IBCF的RMSE均值為1.094,CLSVSM-IBCF的RMSE均值為0.869,新算法的RMSE平均下降幅度為17.7%。表明文章所提出的算法預(yù)測值與真實(shí)值偏差小,提高了推薦系統(tǒng)的推薦精度。同時(shí),通過表1可以看到,新算法的推薦結(jié)果穩(wěn)定性優(yōu)于傳統(tǒng)算法,受數(shù)據(jù)波動影響較小。
表1 IBCF算法與CLSVSM-IBCF算法推薦精確度對比表
圖1 兩種評分預(yù)測算法MAE比較結(jié)果
圖2 兩種評分預(yù)測算法RMSE比較結(jié)果
本文針對電影評分推薦系統(tǒng)中存在的數(shù)據(jù)稀疏問題,在深入分析傳統(tǒng)基于項(xiàng)目的相似度評分預(yù)測算法的前提下,提出利用CLSVSM對用戶評分信息進(jìn)行更深層次的挖掘,將共現(xiàn)分析理論運(yùn)用于推薦系統(tǒng)中,對傳統(tǒng)基于項(xiàng)目評分的推薦算法進(jìn)行改進(jìn)。通過計(jì)算項(xiàng)目之間的共現(xiàn)矩陣和共現(xiàn)強(qiáng)度矩陣計(jì)算項(xiàng)目之間的相似度,在一定程度上彌補(bǔ)了評分矩陣稀疏性問題。從實(shí)驗(yàn)結(jié)果可以看出,文章的推薦算法優(yōu)于傳統(tǒng)相似性度量推薦算法,提高了推薦算法的精確度。