劉金梅,舒遠(yuǎn)仲,張尚田
(南昌航空大學(xué) 信息工程學(xué)院,江西 南昌 330063)
隨著互聯(lián)網(wǎng)的不斷發(fā)展,產(chǎn)生的數(shù)據(jù)量越來越多,面對海量的數(shù)據(jù),人們很難準(zhǔn)確而快速地找到自己感興趣的物品,為解決此問題,推薦系統(tǒng)應(yīng)運(yùn)而生[1]。推薦算法是推薦系統(tǒng)的核心,常用的推薦算法是協(xié)同過濾算法[2],該文研究的加權(quán)slope one算法[3-4]是協(xié)同過濾算法的一種,它計(jì)算簡潔、容易實(shí)現(xiàn),但是在數(shù)據(jù)稀疏情況下算法預(yù)測效果仍然較差,因此許多學(xué)者針對數(shù)據(jù)稀疏性進(jìn)行了研究。研究者使用了數(shù)據(jù)填充[5]、隨機(jī)游走[6]、神經(jīng)網(wǎng)絡(luò)[7]、矩陣分解[8]等技術(shù),以提高推薦算法的精度。最簡單的方法是對評分矩陣中的空缺值進(jìn)行填補(bǔ)[5]。夏建勛等人[9]采用數(shù)據(jù)的平均值、中位數(shù)和眾數(shù)三種方式進(jìn)行填充,雖然可以緩解數(shù)據(jù)稀疏問題,但是這些填充方法沒有考慮用戶和項(xiàng)目本身的特性;李歡[10]提出一種基于項(xiàng)目相似度的協(xié)同過濾算法,實(shí)驗(yàn)結(jié)果證明可以有效緩解數(shù)據(jù)稀疏問題;馬鐵民等人[11]提出一種結(jié)合用戶相似度,并采用隨機(jī)游走技術(shù)進(jìn)行推薦的方法,可以提高推薦精度;龔敏等人[12]首先根據(jù)用戶特征進(jìn)行聚類,再使用slope one算法預(yù)測并填充數(shù)據(jù),最后根據(jù)填充數(shù)據(jù)進(jìn)行推薦,可有效緩解數(shù)據(jù)稀疏性;王永康等人[13]使用融合時(shí)間信息的隱語義模型對原始評分?jǐn)?shù)據(jù)進(jìn)行填充,同時(shí)時(shí)間因素也能反映用戶的興趣愛好變化,提高了推薦精度。
上述針對數(shù)據(jù)稀疏性問題進(jìn)行的研究都取得了不錯(cuò)的效果,但是該文考慮到用戶評分易受到主觀性以及環(huán)境等其他因素的影響,導(dǎo)致用戶對項(xiàng)目的評分或高或低甚至沒有評分,此種情況下用戶的評分無法準(zhǔn)確地衡量用戶對項(xiàng)目的偏好,而項(xiàng)目的屬性一直都比較穩(wěn)定,因此可以根據(jù)用戶對項(xiàng)目屬性的偏好間接體現(xiàn)用戶對項(xiàng)目的喜好程度,故提出一種新的評分矩陣填充方法?;谔畛浜蟮脑u分矩陣,又考慮到用戶興趣愛好隨時(shí)間會(huì)發(fā)生變化,于是引入時(shí)間因子,提出一種融合用戶屬性偏好特征和時(shí)間因子的加權(quán)slope one算法。
隨著數(shù)據(jù)量的不斷增大,用戶-項(xiàng)目評分矩陣變得越來越稀疏,面對數(shù)據(jù)的稀疏性,常用數(shù)據(jù)的平均數(shù)、中位數(shù)和眾數(shù)等來填充用戶對項(xiàng)目未評分?jǐn)?shù)據(jù)[9]。該文提出一種新的用戶對項(xiàng)目未評分?jǐn)?shù)據(jù)的填充方法,主要是通過用戶對項(xiàng)目的偏好以及用戶對項(xiàng)目的平均分進(jìn)行加權(quán)填充未評分項(xiàng)目。具體方法如下:
設(shè)總共有m個(gè)用戶U={U1,U2,…,Um}和n個(gè)項(xiàng)目I={I1,I2,…,In}組成的用戶-項(xiàng)目評分矩陣Rmn,則用戶-項(xiàng)目評分矩陣如式(1)所示:
(1)
矩陣Rmn為m行n列的用戶項(xiàng)目評分矩陣,其中用戶Ui對項(xiàng)目Ij的評分用Rij表示,若用戶對項(xiàng)目沒有評分,則其值為0。評分反映了用戶對項(xiàng)目的偏好程度。
由式(1)用戶對項(xiàng)目的評分,計(jì)算每個(gè)用戶對項(xiàng)目的平均評分,則平均評分計(jì)算公式如下:
(2)
其中,Rui_avg表示用戶u對項(xiàng)目i的平均評分;sum(Rui)表示用戶u對項(xiàng)目i的評分總和;num(Rui)表示用戶u對項(xiàng)目i評分大于0的項(xiàng)目總數(shù)。
將用戶對項(xiàng)目的平均評分轉(zhuǎn)化成對角矩陣,如式(3)所示:
(R_avg)mm=diag(Rui_avg)
(3)
其中,m為用戶數(shù)量,對角線上的值為用戶對項(xiàng)目的平均評分。
每個(gè)項(xiàng)目都有各自的屬性類型,設(shè)有n個(gè)項(xiàng)目,項(xiàng)目屬性類型共有k個(gè),則構(gòu)建項(xiàng)目-屬性矩陣,如下式所示:
(4)
其中,Tnk為項(xiàng)目-屬性矩陣,矩陣中數(shù)值Tij取值為0或1,若項(xiàng)目i屬于屬性類型j,則Tij取值為1;否則,Tij為0。
根據(jù)項(xiàng)目-屬性矩陣可以計(jì)算出用戶對項(xiàng)目屬性的偏好值,計(jì)算公式如下所示:
(5)
其中,num(Tuj)表示用戶u評價(jià)j類項(xiàng)目的數(shù)量;num(Iu)表示用戶u已評分的所有項(xiàng)目數(shù)量。
當(dāng)某個(gè)項(xiàng)目非常流行時(shí),大多數(shù)人會(huì)對該項(xiàng)目評高分,而此時(shí)項(xiàng)目屬性類別反映的則是該項(xiàng)目的流行度,并不能由此得出用戶對項(xiàng)目的個(gè)性化偏好,因此,需要降低高頻率屬性對項(xiàng)目屬性的影響,于是引入權(quán)重因子優(yōu)化項(xiàng)目-屬性矩陣。權(quán)重因子計(jì)算公式如下所示:
(6)
其中,num(pi)表示用戶喜歡的具有屬性pi的項(xiàng)目數(shù)量;sum(num(pi))表示所有用戶喜歡的具有屬性pi的項(xiàng)目數(shù)量的總數(shù)。
將權(quán)重因子轉(zhuǎn)化為對角矩陣,公式如下所示:
(W)kk=diag(Wpi)
(7)
將式(7)中的權(quán)重因子與原始的項(xiàng)目-屬性矩陣(式(4))相結(jié)合即得到加權(quán)項(xiàng)目-屬性矩陣,公式如下所示:
(8)
由用戶對項(xiàng)目屬性偏好值(式(5))以及加權(quán)項(xiàng)目屬性矩陣,可以得出用戶對項(xiàng)目的偏好值,計(jì)算公式為:
P(u,i)=(Puj)mk*Tnk'
(9)
通過用戶對項(xiàng)目的偏好值(式(9))乘以用戶對項(xiàng)目的平均評分(式(2))來填充原始用戶-項(xiàng)目評分矩陣,填充后的評分矩陣可以有效緩解數(shù)據(jù)稀疏性。
傳統(tǒng)的協(xié)同過濾算法僅僅考慮用戶評分,根據(jù)評分矩陣區(qū)分用戶對項(xiàng)目的喜愛程度,但是在數(shù)據(jù)比較稀疏時(shí),無法準(zhǔn)確地知道用戶的偏好。日常生活中,用戶興趣特征主要體現(xiàn)在一種或者多種項(xiàng)目類別上,也就是對于項(xiàng)目或者商品用戶具有類別屬性偏好[14]。用戶的評級有主觀性,并且很容易受到環(huán)境等其他因素的影響,用戶會(huì)對項(xiàng)目給予較高或較低的評分,最終導(dǎo)致評分?jǐn)?shù)據(jù)的不真實(shí);而每個(gè)項(xiàng)目都有自身的屬性特征,并且項(xiàng)目屬性特征比較穩(wěn)定,因此,可以通過構(gòu)建項(xiàng)目-屬性矩陣代替原始用戶-項(xiàng)目評分矩陣,通過項(xiàng)目-屬性矩陣計(jì)算用戶的偏好,相比于原始的評分矩陣可以更好地反映用戶在多方面的興趣特征,可以有效改善數(shù)據(jù)的稀疏性,可以獲得較準(zhǔn)確的用戶相似度,從而能夠提高推薦精度。
由式(5)計(jì)算出的用戶對項(xiàng)目屬性的偏好度,構(gòu)建用戶-屬性興趣矩陣,如下式所示:
(10)
其中,Pmk表示用戶對項(xiàng)目屬性的興趣矩陣,公式中的值為m個(gè)用戶對項(xiàng)目類型k的偏好值,偏好值越大表明用戶對該類型項(xiàng)目越感興趣。
通過用戶對項(xiàng)目屬性的興趣矩陣,將用戶對項(xiàng)目屬性的興趣矩陣轉(zhuǎn)化為用戶對項(xiàng)目屬性的特征向量。若用戶u對項(xiàng)目i有評分,而項(xiàng)目i所屬類型有k類,如何求出用戶u對項(xiàng)目i屬性的偏好值??梢愿鶕?jù)用戶u對k類偏好值的總和求得用戶u對項(xiàng)目i屬性的偏好度,如式(11)所示:
(11)
其中,num(pi)表示項(xiàng)目i所屬類型的數(shù)量。
用戶u對項(xiàng)目i屬性的偏好度Pui即為屬性興趣特征向量,與原始用戶-項(xiàng)目評分相比,其中包含數(shù)值0的數(shù)量更少。在共同評分很少甚至沒有時(shí),可以通過屬性興趣特征向量計(jì)算用戶間的相似度,相比于原始評分?jǐn)?shù)據(jù),可以有效緩解數(shù)據(jù)稀疏性問題。
用戶對項(xiàng)目的偏好表述了用戶在項(xiàng)目屬性維度上的興趣愛好,相比于傳統(tǒng)的用戶-項(xiàng)目評分矩陣,更能夠體現(xiàn)出用戶對項(xiàng)目的偏好。在數(shù)據(jù)集比較稀疏時(shí),傳統(tǒng)的用戶-項(xiàng)目評分矩陣中含有的數(shù)值0更多,不能精確地體現(xiàn)用戶的偏好;而在用戶-項(xiàng)目屬性矩陣中,即使用戶對此項(xiàng)目沒有評分,但是從項(xiàng)目所屬類型上也可以反映用戶對此項(xiàng)目的偏好,可以較好地緩解數(shù)據(jù)稀疏性,提高推薦的精確度。
人們的興趣愛好不是一成不變的,用戶興趣會(huì)隨著時(shí)間發(fā)生改變,因此,時(shí)間變化會(huì)對預(yù)測結(jié)果產(chǎn)生影響。許多學(xué)者對時(shí)間因素進(jìn)行了研究,因此衡量時(shí)間變化的曲線有很多,最早的遺忘曲線是艾賓浩斯遺忘曲線,如圖1所示。該條曲線能夠體現(xiàn)出人的記憶隨著時(shí)間變化的遺忘程度。其數(shù)學(xué)公式如下所示:
(12)
其中,b表示記憶內(nèi)容保存量,t為時(shí)間間隔,c和k為常數(shù),c=1.25,k=1.84。
圖1 遺忘曲線
從圖1可以看出,用戶的遺忘程度隨著時(shí)間的推移先快后慢,是一種非線性的函數(shù)。Ding等人[15]于2005年首次根據(jù)遺忘曲線提出時(shí)間加權(quán)函數(shù)f(t),用來表述時(shí)間不同,產(chǎn)生的結(jié)果也不相同。時(shí)間加權(quán)函數(shù)f(t)的計(jì)算公式如下:
f(t)=e-αt
(13)
其中,f(t)的取值范圍為(0,1],參數(shù)α控制信息的衰減程度。
在推薦算法中,用戶對項(xiàng)目的興趣會(huì)隨著時(shí)間的變化而變化,而根據(jù)前人的研究可知,用戶對項(xiàng)目的興趣變化規(guī)律符合遺忘曲線的變化規(guī)律,因此可以根據(jù)遺忘曲線來擬合時(shí)間衰減函數(shù)。
該文所使用的時(shí)間衰減函數(shù)在式(13)的基礎(chǔ)上進(jìn)行改進(jìn),用戶的興趣愛好會(huì)隨著時(shí)間在改變,用戶在購買某種商品時(shí),更傾向購買與他近期興趣愛好相似的物品,對久遠(yuǎn)的物品可能興趣度較低,時(shí)間越近越能反映用戶當(dāng)前的興趣愛好。但是在最近較短的一段時(shí)間段內(nèi),用戶的興趣愛好變化程度較小,往往可以認(rèn)為用戶在此時(shí)間段內(nèi)興趣愛好是相同的,同樣在這段時(shí)間內(nèi)用戶興趣的衰減程度是一樣的。于是,將用戶評分時(shí)間分為一個(gè)個(gè)時(shí)間段,每一個(gè)時(shí)間段代表一個(gè)時(shí)間窗口T,引入時(shí)間窗口來修正時(shí)間衰減函數(shù),公式如下所示:
(14)
其中,tui表示用戶u對項(xiàng)目i的評分時(shí)間;t0表示用戶u最初開始評分時(shí)間;T表示時(shí)間保持周期即時(shí)間窗口。利用時(shí)間衰減函數(shù)對原始評級矩陣進(jìn)行處理,解決了原始評級的時(shí)效性問題。
傳統(tǒng)加權(quán)slope one算法是通過計(jì)算項(xiàng)目間評分差異值,再根據(jù)評分差異值以及用戶的歷史評分來預(yù)測用戶對未評分項(xiàng)目的評分,沒有考慮用戶以及項(xiàng)目對預(yù)測結(jié)果的影響,因此該文對加權(quán)slope one算法進(jìn)行改進(jìn)。
(15)
在新的加權(quán)評分矩陣中,f'(t)Rij為用戶i對項(xiàng)目j的時(shí)間加權(quán)評分值,相比于原始的評分矩陣,添加了時(shí)間因素更能夠體現(xiàn)用戶的興趣隨時(shí)間是動(dòng)態(tài)變化的。根據(jù)新的加權(quán)評分矩陣計(jì)算用戶對項(xiàng)目類型的偏好值,從而獲得用戶對項(xiàng)目的偏好度,將用戶對項(xiàng)目的偏好度構(gòu)建成用戶-屬性興趣矩陣,如式(10)所示。
在填充的用戶-項(xiàng)目評分?jǐn)?shù)據(jù)下,用戶相似度使用皮爾遜相關(guān)系數(shù)進(jìn)行計(jì)算,皮爾遜相似度計(jì)算公式如下:
Simpcc(u,v)=
(16)
當(dāng)用戶共同評分?jǐn)?shù)量很少甚至沒有時(shí),此時(shí)新構(gòu)建的用戶-屬性興趣矩陣Pmk相比原始用戶-項(xiàng)目評分矩陣Rmn更能夠體現(xiàn)用戶間的相似度,因此在新構(gòu)建的用戶-屬性興趣矩陣Pmk中,使用余弦相似度計(jì)算用戶間相似度,計(jì)算公式如下:
(17)
其中,Puv表示屬于同一屬性類型的用戶數(shù)量;Pui表示用戶u對屬性類型i的偏好值;Pvi表示用戶v對屬性類型i的偏好值。
將式(16)和式(17)計(jì)算出的用戶相似度通過參數(shù)λ進(jìn)行融合得到最終的用戶相似度,公式如下:
Sim(u,v)=λSimpcc(u,v)+(1-λ)Simpu(u,v)
(18)
由式(18)中獲得的最終用戶相似度,選取前K個(gè)相似度作為目標(biāo)用戶的鄰居,再根據(jù)鄰居對目標(biāo)項(xiàng)目的評分預(yù)測用戶對目標(biāo)項(xiàng)目的評分。原始的加權(quán)slope one預(yù)測公式如下:
(19)
在式(19)的基礎(chǔ)上,該文考慮時(shí)間對預(yù)測結(jié)果的影響,從而用時(shí)間衰減函數(shù)優(yōu)化預(yù)測評分公式,新的預(yù)測公式如下:
(20)
算法詳細(xì)步驟如下:
輸入:用戶-項(xiàng)目評分矩陣Rmn,鄰居數(shù)K。
輸出:目標(biāo)用戶u對項(xiàng)目i的預(yù)測評分。
步驟1:創(chuàng)建用戶-項(xiàng)目評分矩陣Rmn,項(xiàng)目-屬性矩陣Tnk,時(shí)間衰減函數(shù)f'(t),并根據(jù)給定的數(shù)據(jù)集填充矩陣Rmn,Tnk。
步驟2:根據(jù)評分矩陣Rmn,使用式(2)計(jì)算用戶對項(xiàng)目的平均評分。
步驟3:根據(jù)項(xiàng)目-屬性矩陣Tnk,使用式(5)、式(6)分別計(jì)算用戶u對項(xiàng)目屬性偏好以及高頻率屬性所占全部屬性的權(quán)重,并用權(quán)重優(yōu)化項(xiàng)目屬性矩陣,即通過式(8)得到加權(quán)項(xiàng)目-屬性矩陣。
步驟4:根據(jù)用戶對項(xiàng)目屬性偏好值以及加權(quán)項(xiàng)目-屬性矩陣,使用式(9)計(jì)算用戶u對項(xiàng)目i的偏好值,并結(jié)合平均評分來填充用戶對項(xiàng)目未評分矩陣。
步驟7:由步驟4得出的填充矩陣,使用式(16)計(jì)算用戶相似度;在矩陣Pmk中,使用式(17)計(jì)算用戶相似度,將兩個(gè)相似度通過式(18)進(jìn)行融合得到最終用戶相似度。
步驟8:根據(jù)步驟7得到的最終用戶相似度,將相似度進(jìn)行降序排列再選擇前K個(gè)作為用戶鄰居,放入鄰居集合S(K)中。
步驟9:由步驟8的鄰居集合S(K),根據(jù)最近鄰居用戶對未知項(xiàng)目的評分來預(yù)測目標(biāo)用戶對項(xiàng)目的評分,最后再將步驟1中的時(shí)間衰減函數(shù)f'(t)加入到預(yù)測公式中,最后使用式(20)預(yù)測出最終目標(biāo)用戶對項(xiàng)目的評分。
流程如圖2所示。
圖2 算法流程
本實(shí)驗(yàn)在win7 64位操作系統(tǒng)下進(jìn)行,開發(fā)使用的工具是Matlab2014a。
本次實(shí)驗(yàn)所使用數(shù)據(jù)集是Movielens100K數(shù)據(jù)集,此數(shù)據(jù)集是由美國明尼蘇大學(xué)GroupLens項(xiàng)目組提供。用戶對電影評分范圍為1~5分,評分越高表明用戶對電影越喜愛,反之,則表明用戶對電影喜愛程度較低。表1和表2列出了部分電影類別評分信息以及用戶對電影的評分信息。
表1 部分電影信息示例
本次實(shí)驗(yàn)將數(shù)據(jù)集按比例8∶2隨機(jī)劃分為訓(xùn)練集和測試集,根據(jù)訓(xùn)練集中的數(shù)據(jù)通過預(yù)測公式預(yù)測用戶對未評分項(xiàng)目的評分,然后再與測試集中的評分?jǐn)?shù)據(jù)進(jìn)行比較,當(dāng)誤差達(dá)到最小時(shí),此時(shí)的預(yù)測效果最好,采用五折交叉驗(yàn)證法進(jìn)行驗(yàn)證。
表2 部分用戶對電影評分時(shí)間信息
為驗(yàn)證該算法的預(yù)測效果,采用平均絕對誤差(mean absolute error,MAE)和均方根誤差(root mean square error,RMSE)來衡量。
(21)
(22)
其中,Pi為預(yù)測評分,Ti為測試集中實(shí)際評分,N為測試集中評分的總數(shù)。
在填充評分矩陣中計(jì)算用戶相似度時(shí),使用皮爾遜相關(guān)系數(shù)計(jì)算用戶間相似度;當(dāng)共同評分較少或者沒有時(shí),在屬性興趣特征矩陣中,使用余弦相似度計(jì)算用戶相似度,將兩種不同數(shù)據(jù)集中計(jì)算的相似度通過參數(shù)λ進(jìn)行融合。將λ設(shè)置為[0.1,0.9],步長為0.1,鄰居數(shù)K設(shè)置為[100,500],步長為100進(jìn)行實(shí)驗(yàn),從而確定參數(shù)λ以及K的最優(yōu)值。實(shí)驗(yàn)結(jié)果如圖3所示。
圖3 不同參數(shù)λ、K對預(yù)測結(jié)果的影響
從圖3可以看出,在不同鄰居數(shù)K和不同參數(shù)λ下,其預(yù)測結(jié)果也是不相同的。在鄰居數(shù)K為300時(shí),MAE和RMSE值達(dá)到最低,再根據(jù)鄰居數(shù)K為300,尋找一個(gè)最優(yōu)參數(shù)λ。從圖中可以看出,在鄰居數(shù)K為300,參數(shù)λ取值為0.8時(shí),此時(shí)的MAE和RMSE達(dá)到最小值。因此,該文在相似度融合時(shí)將參數(shù)λ設(shè)為0.8,鄰居數(shù)K設(shè)為300,基于設(shè)置的最優(yōu)參數(shù)進(jìn)行下面實(shí)驗(yàn)。
3.2.1 填充評分矩陣與未填充評分矩陣實(shí)驗(yàn)對比
針對用戶-項(xiàng)目評分矩陣稀疏性問題,提出一種基于改進(jìn)的填充評分矩陣方法的加權(quán)slope one算法(FWSOA)。通過用戶對項(xiàng)目平均評分以及用戶對項(xiàng)目偏好來填充用戶對項(xiàng)目未評分?jǐn)?shù)據(jù),利用填充評分矩陣計(jì)算用戶相似度,再通過加權(quán)slope one算法預(yù)測。原始未填充評分矩陣在相似度計(jì)算時(shí)使用皮爾遜相關(guān)系數(shù)計(jì)算相似度,然后利用加權(quán)slope one算法預(yù)測。在MovieLens100K數(shù)據(jù)集進(jìn)行實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果如圖4所示。
圖4 填充矩陣與原始矩陣的MAE和RMSE對比
從圖4可以看出,隨著鄰居數(shù)量的不斷增大,使用填充數(shù)據(jù)集進(jìn)行預(yù)測的效果要好于使用原始評分?jǐn)?shù)據(jù)集的預(yù)測效果,因此填充用戶-項(xiàng)目評分矩陣可以有效緩解數(shù)據(jù)稀疏問題。
3.2.2 時(shí)間修正評分矩陣與未用時(shí)間優(yōu)化評分矩陣實(shí)驗(yàn)對比
用戶興趣愛好隨著時(shí)間會(huì)發(fā)生動(dòng)態(tài)變化,因此提出一種用時(shí)間修正評分的加權(quán)slope one算法(TWSOA)。該算法使用時(shí)間函數(shù)修正原始用戶-項(xiàng)目評分矩陣得到加權(quán)時(shí)間評分矩陣,在新的評分矩陣下,計(jì)算用戶對項(xiàng)目屬性興趣愛好并根據(jù)興趣愛好用余弦相似度計(jì)算用戶相似度;在原始評分矩陣下通過皮爾遜相關(guān)系數(shù)計(jì)算用戶相似度,將計(jì)算的兩個(gè)相似度通過參數(shù)λ相結(jié)合得到最終用戶相似度。相比于單獨(dú)使用皮爾遜相關(guān)系數(shù)計(jì)算相似度,融合相似度可以有效緩解在共同評分很少甚至沒有時(shí)數(shù)據(jù)稀疏性問題。在得出的融合相似度下,選擇相近的前K個(gè)作為用戶鄰居集,再根據(jù)鄰居用戶使用加權(quán)slope one算法進(jìn)行評分預(yù)測,在預(yù)測評分時(shí),引入時(shí)間函數(shù)優(yōu)化預(yù)測評分公式。將TWSOA算法與未用時(shí)間修正的算法(WSOA)進(jìn)行對比,實(shí)驗(yàn)結(jié)果如圖5所示。
圖5 TWSOA算法和WSOA算法與MAE和RMSE關(guān)系
從圖5可以看出,使用時(shí)間優(yōu)化的評分矩陣進(jìn)行預(yù)測時(shí),其預(yù)測誤差相比于原始評分矩陣小,因此,用時(shí)間修正評分矩陣不僅可以反映用戶興趣愛好隨時(shí)間是動(dòng)態(tài)變化的,同時(shí)在預(yù)測評分時(shí)也可以提高預(yù)測精度。
3.2.3 不同算法實(shí)驗(yàn)對比
由上述可知,實(shí)驗(yàn)參數(shù)λ設(shè)置為0.8進(jìn)行如下實(shí)驗(yàn),將該文提出的FTWSOA算法、FWSOA算法、TWSOA算法與文獻(xiàn)[16]中基于加權(quán)slope one和用戶協(xié)同過濾的推薦算法(CF_WSOA)進(jìn)行對比,實(shí)驗(yàn)結(jié)果如圖6所示。
圖6 不同算法實(shí)驗(yàn)對比
從圖6可以看出,該文提出的算法相比于原始的基于加權(quán)slope one和用戶協(xié)同過濾的推薦算法(CF_WSOA),預(yù)測效果均有所提高。在鄰居數(shù)為100時(shí),使用時(shí)間優(yōu)化的加權(quán)slope one算法(TWSOA)誤差比較小,隨著鄰居數(shù)的不斷增多,使用填充評分矩陣以及時(shí)間加權(quán)的加權(quán)slope one算法(FTWSOA)誤差較??;在鄰居數(shù)K取值為300時(shí),使用FTWSOA算法預(yù)測效果達(dá)到最優(yōu);隨著鄰居數(shù)K繼續(xù)增大,使用填充評分矩陣的加權(quán)slope one算法(FWSOA)的效果相比于其他算法效果更好。
3.2.4 使用五折交叉驗(yàn)證法實(shí)驗(yàn)對比
基于參數(shù)λ為0.8,鄰居數(shù)K為300進(jìn)行實(shí)驗(yàn),將提出的FTWSOA算法、FWSOA算法、TWSOA算法與文獻(xiàn)[16]中基于加權(quán)slope one和用戶協(xié)同過濾的推薦算法(CF_WSOA)進(jìn)行對比,使用五折交叉驗(yàn)證法驗(yàn)證不同算法的結(jié)果,實(shí)驗(yàn)結(jié)果如圖7所示。
從圖7可以看出,提出的算法的MAE和RMSE均小于文獻(xiàn)[16]中的CF_WSOA算法。
圖7 不同算法結(jié)果對比
通過填充評分矩陣下的加權(quán)slope one算法(FWSOA)與原始評分矩陣下的加權(quán)slope one算法對比,發(fā)現(xiàn)FWSOA的效果優(yōu)于原始的算法;將使用時(shí)間優(yōu)化的加權(quán)slope one算法(TWSOA)與未使用時(shí)間優(yōu)化的算法(WSOA)進(jìn)行對比,結(jié)果顯示TWSOA算法優(yōu)于WSOA算法;最后,將提出的FTWSOA算法、FWSOA算法、TWSOA算法與其他算法CF_WSOA算法進(jìn)行對比,在MovieLens100K數(shù)據(jù)集上進(jìn)行實(shí)驗(yàn),結(jié)果表明該算法相比于其他算法在MAE和RMSE上均有所減小。