摘要:SlopeOne算法基于簡(jiǎn)單的線(xiàn)性回歸模型,通過(guò)減少響應(yīng)時(shí)間和維護(hù)難度,顯著提高了推薦性能。然而SlopeOne算法沒(méi)有考慮用戶(hù)內(nèi)部的關(guān)聯(lián),同等地使用各個(gè)用戶(hù)數(shù)據(jù)進(jìn)行預(yù)測(cè),容易造成偏差,影響推薦質(zhì)量。本文提出了一種改進(jìn)的Slope One算法,它將用戶(hù)相似度納入考慮并且對(duì)評(píng)分偏差計(jì)算公式進(jìn)行了修正。基于項(xiàng)目的Slope One算法結(jié)合基于用戶(hù)的協(xié)同過(guò)濾算法,提出新的混合推薦算法US-Slope One。在MovieLens數(shù)據(jù)集上的實(shí)驗(yàn)結(jié)果表明,該算法與原Slope One算法相比具有更好的預(yù)測(cè)準(zhǔn)確度和推薦質(zhì)量。
關(guān)鍵詞:協(xié)同過(guò)濾;用戶(hù)相似度;SlopeOne;數(shù)據(jù)挖掘;個(gè)性化推薦
中圖分類(lèi)號(hào):TP391 文獻(xiàn)標(biāo)識(shí)碼:A DOI:10.3969/j.issn.1003-6970.2016.04.015
0 引言
當(dāng)今互聯(lián)網(wǎng)信息量不斷擴(kuò)大,網(wǎng)絡(luò)經(jīng)濟(jì)發(fā)展迅猛,信息過(guò)載成為社會(huì)性問(wèn)題。個(gè)性化推薦系統(tǒng)是解決這一問(wèn)題的一種有效工具。協(xié)同過(guò)濾技術(shù)在推薦系統(tǒng),尤其是在電子商務(wù)中得到了廣泛的應(yīng)用,幾乎所有大型電子商務(wù)平臺(tái)都使用了各種推薦系統(tǒng),對(duì)用戶(hù)的特征和喜好進(jìn)行分析,并提供更具個(gè)性化的推薦。協(xié)同過(guò)濾利用具有相似經(jīng)驗(yàn)的用戶(hù)群體的偏好信息為特定用戶(hù)進(jìn)行商品或信息的推薦。根據(jù)模型的不同,協(xié)同過(guò)濾可分為基于用戶(hù)的協(xié)同過(guò)濾和基于項(xiàng)目的協(xié)同過(guò)濾。
Slope One算法是一種基于項(xiàng)目的協(xié)同過(guò)濾算法,它使用一個(gè)線(xiàn)性回歸模型進(jìn)行預(yù)測(cè),在與其他復(fù)雜的協(xié)同過(guò)濾推薦具有同等推薦精度的前提下,花銷(xiāo)更少,更加易于實(shí)現(xiàn)。它的簡(jiǎn)潔高效使得采用Slope One算法的推薦系統(tǒng)更加易于實(shí)現(xiàn)和維護(hù)。然而,Slope One算法在進(jìn)行推薦時(shí),沒(méi)有考慮到用戶(hù)的作用,用戶(hù)間的內(nèi)在關(guān)聯(lián)對(duì)預(yù)測(cè)結(jié)果起著重要影響。Slope One算法不加區(qū)分地采用所有用戶(hù)評(píng)分?jǐn)?shù)據(jù)來(lái)計(jì)算項(xiàng)目之間的偏差,這就導(dǎo)致一些與當(dāng)前活躍用戶(hù)偏好不同甚至相反的用戶(hù)數(shù)據(jù)同等參與了預(yù)測(cè),這會(huì)削弱擁有高相似度的用戶(hù)的作用效果,使得預(yù)測(cè)精度降低。采用聚類(lèi)或動(dòng)態(tài)k近鄰可以去除部分噪聲數(shù)據(jù),但卻造成了數(shù)據(jù)丟失。數(shù)據(jù)稀疏性問(wèn)題是當(dāng)前推薦系統(tǒng)所面臨的主要問(wèn)題之一。在數(shù)據(jù)極端稀疏的情況下,數(shù)據(jù)的缺失將使得推薦效果很不理想。
因此本文提出了一種改進(jìn)的Slope One算法(US-Slope One),利用用戶(hù)相似度對(duì)用戶(hù)評(píng)分差值進(jìn)行加權(quán),使得擁有不同相似度的用戶(hù)數(shù)據(jù)以不同權(quán)重參與預(yù)測(cè),實(shí)現(xiàn)在盡可能保證不丟失評(píng)分信息的前提下,在非稠密數(shù)據(jù)集中的推薦精度得到提升。
1 Slope one算法理論
1.1 SlopeOne算法
假設(shè)推薦系統(tǒng)中有m個(gè)用戶(hù)和n個(gè)項(xiàng)目,分別建立兩個(gè)集合U={u1,u2,…,um}和I={i1,i2,…,in},U代表用戶(hù)集合,I代表項(xiàng)目集合。推薦算法常用矩陣Rm×n來(lái)表示不同用戶(hù)對(duì)每個(gè)項(xiàng)目的評(píng)分。行向量Rm表示每個(gè)用戶(hù)的評(píng)分,列向量Rn表示每個(gè)項(xiàng)目的得分。為了使計(jì)算更加明確,采用ri,j(1≤i≤m,1≤j≤n)表示用戶(hù)i對(duì)項(xiàng)目j的評(píng)分。
SlopeOne算法采用f(x)=x+b進(jìn)行預(yù)測(cè),其中參數(shù)6是用戶(hù)對(duì)兩項(xiàng)目的平均評(píng)分偏差。Slope One算法先計(jì)算項(xiàng)目ii與其他項(xiàng)目ik之間的平均評(píng)分偏差devjk,再預(yù)測(cè)當(dāng)前活躍用戶(hù)u對(duì)目標(biāo)項(xiàng)目,的可能評(píng)分Predictionu,j。定義Sjk為給項(xiàng)目ij和項(xiàng)目ik都評(píng)過(guò)分的用戶(hù)集合,Rj為與項(xiàng)目ij同時(shí)被評(píng)分的項(xiàng)目集合,count(X)為集合X中的元素個(gè)數(shù)。SlopeOne算法如下:
(1)
(2)
1.2 加權(quán)Slope One算法
為平衡每個(gè)項(xiàng)目對(duì)目標(biāo)項(xiàng)目的影響,同時(shí)對(duì)項(xiàng)目ij和ik評(píng)過(guò)分的用戶(hù)數(shù)目sjk將作為權(quán)重加入兩項(xiàng)目評(píng)分偏差的計(jì)算,其中sjk=count(Sjk)。
(3)
1.3 雙極Slope One算法
雙極Slope One算法考慮到用戶(hù)對(duì)物品的喜好,將項(xiàng)目集合Ijk府劃分為兩部分,一個(gè)是用戶(hù)評(píng)分高于其評(píng)分均值的項(xiàng)目集合Ilikejk,剩下的構(gòu)成Idislikejk。從而分別計(jì)算出喜歡偏差devlikejk和不喜歡偏差devdislikejk。
(4)
同樣的方法,我們可以計(jì)算不喜歡偏差devdislikejk。最后得出評(píng)分預(yù)測(cè)如下:
(5)
2 US-Slope one算法設(shè)計(jì)
如前一章所述,Slope One算法采用所有用戶(hù)評(píng)分?jǐn)?shù)據(jù)而不考慮相似度問(wèn)題,當(dāng)存在大量噪聲數(shù)據(jù)時(shí),預(yù)測(cè)準(zhǔn)確度會(huì)大大降低,導(dǎo)致最終的推薦結(jié)果不理想。然而在數(shù)據(jù)極度稀疏的情況下,往往又希望保留盡可能多的數(shù)據(jù),US-Slope One算法針對(duì)這一問(wèn)題,采用用戶(hù)相似度進(jìn)行加權(quán),使得相似度不同的用戶(hù)數(shù)據(jù)以不同權(quán)重加入預(yù)測(cè)。常用的用戶(hù)相似性度量方法有余弦相似性,修正余弦相似性,皮爾遜相關(guān)系數(shù)以及斯皮爾曼相似性等??紤]到不同用戶(hù)的評(píng)分尺度問(wèn)題,本文采用修正余弦相似性計(jì)算用戶(hù)間相似度。若用戶(hù)ua和ub的共同評(píng)分的項(xiàng)目集合為Iab,用戶(hù)ua和ub對(duì)項(xiàng)目ic的評(píng)分分別為rac和rbc,ra和rb分別表示用戶(hù)ua和ub的評(píng)分均值,則用戶(hù)ua和ub之間的相似度sim(ua,ub)為:
(6)
將用戶(hù)相似度作為評(píng)分偏差計(jì)算的權(quán)值,US-Slope One算法如下:
(7)
3 實(shí)驗(yàn)結(jié)果及分析
3.1 實(shí)驗(yàn)所用數(shù)據(jù)集
本實(shí)驗(yàn)所用的數(shù)據(jù)集是由GroupLens研究產(chǎn)品組田松瑞:基于用戶(hù)相似度加權(quán)的Slope One算法提供的電影評(píng)分?jǐn)?shù)據(jù)集Movielens(http://movielens.umn.edu),該數(shù)據(jù)包括943個(gè)用戶(hù)對(duì)1682部電影的共計(jì)100000條評(píng)分記錄,其中每位用戶(hù)至少對(duì)20部電影進(jìn)行了評(píng)分。評(píng)分值范圍是1到5分,分值越高代表用戶(hù)對(duì)電影的評(píng)價(jià)越好。該數(shù)據(jù)稀疏度為6.30%。實(shí)驗(yàn)時(shí)從該數(shù)據(jù)集中按一定規(guī)則隨機(jī)抽取80%的數(shù)據(jù)作為訓(xùn)練集,其余20%作為測(cè)試集。
3.2 度量標(biāo)準(zhǔn)
用于推薦系統(tǒng)的推薦質(zhì)量評(píng)價(jià)的度量標(biāo)準(zhǔn)主要包括統(tǒng)計(jì)精度度量方法和決策支持精度度量方法兩種。其中統(tǒng)計(jì)精度度量方法的平均絕對(duì)誤差MAE(Means AbsoIute Error)和均方根誤差RMSE(RootMean Square Error)由于更易于理解并且能夠更直觀地對(duì)推薦質(zhì)量進(jìn)行度量,因此成為推薦質(zhì)量評(píng)價(jià)最常用的方法。MAE和RMSE的值越小,代表推薦質(zhì)量越高。本文實(shí)驗(yàn)采用MAE和RMSE作為推薦質(zhì)量的度量標(biāo)準(zhǔn)。
假設(shè)兩個(gè)分組P和Q分別代表預(yù)測(cè)評(píng)分集合和實(shí)際評(píng)分集合,P={p1,P2,…,pN},Q={q1,q2,…,qN}。MAE和RMSE的定義如下:
(8)
(9)
3.3 實(shí)驗(yàn)結(jié)果
本實(shí)驗(yàn)將US-slope One算法與基本Slope One算法和加權(quán)slope One算法以及雙極Slope One算法進(jìn)行比較,得到的MAE值和RMsE值分別如圖1和圖2所示。經(jīng)統(tǒng)計(jì)學(xué)分析,實(shí)驗(yàn)結(jié)果具有代表性。
實(shí)驗(yàn)結(jié)果表明,在稀疏數(shù)據(jù)集上,US-slope One算法的MAE值和RMsE值均明顯低于Slope One算法、加權(quán)Slope One算法和雙極Slope One算法,其推薦精度更高。US-Slope One算法總體推薦性能更好,使用用戶(hù)相似度進(jìn)行加權(quán)能夠在保證數(shù)據(jù)量盡可能完整的基礎(chǔ)上顯著提高了預(yù)測(cè)精度。
4 結(jié)論
本文分析了Slope One推薦算法及其改進(jìn)算法,針對(duì)其在數(shù)據(jù)稀疏情況下利用有限用戶(hù)評(píng)分?jǐn)?shù)據(jù)做出更合理的推薦問(wèn)題,提出了將用戶(hù)相似度作為權(quán)重融入預(yù)測(cè)的US-Slope One算法,在盡可能保證不丟失原始數(shù)據(jù)的基礎(chǔ)上,更加合理地運(yùn)用數(shù)據(jù)。最后,對(duì)本算法以及已有算法在稀疏數(shù)據(jù)集上進(jìn)行試驗(yàn),比較結(jié)果表明本算法提升了現(xiàn)有算法對(duì)于稀疏數(shù)據(jù)集的適應(yīng)性,提高了預(yù)測(cè)精度和推薦性能。