陳梅梅,董晨光,王 淇,戴偉輝
1(東華大學(xué) 旭日工商管理學(xué)院,上海200051)
2(復(fù)旦大學(xué) 管理學(xué)院,上海200433)
E-mail:cmm@dhu.edu.cn
電子商務(wù)的深入發(fā)展要求企業(yè)盡可能滿足不同用戶的興趣愛(ài)好,個(gè)性化推薦技術(shù)應(yīng)運(yùn)而生.基于內(nèi)存的協(xié)同過(guò)濾算法由于其推薦準(zhǔn)確、效率高等特點(diǎn)在電商、影視、圖書、音樂(lè)等平臺(tái)得到廣泛應(yīng)用,但是,數(shù)據(jù)稀疏性一直是該類算法面臨的一大瓶頸問(wèn)題[1].用戶-項(xiàng)目評(píng)分矩陣是協(xié)同過(guò)濾推薦算法的重要輸入,源于用戶的瀏覽、交易行為或評(píng)價(jià)結(jié)果.但在眾多的項(xiàng)目中,每個(gè)用戶都存在著大量未評(píng)分項(xiàng)目,因而,數(shù)據(jù)稀疏問(wèn)題不可避免,且給協(xié)同過(guò)濾推薦算法中用戶/項(xiàng)目相似性的精確計(jì)算帶來(lái)了很大困難,并最終影響推薦準(zhǔn)確度的提升.因此,對(duì)比協(xié)同過(guò)濾算法中數(shù)據(jù)稀疏性導(dǎo)致推薦精度問(wèn)題的現(xiàn)有解決方案,選擇簡(jiǎn)單有效的方案并針對(duì)其存在的不足加以改進(jìn),具有重要的理論和現(xiàn)實(shí)意義.
為了降低數(shù)據(jù)稀疏性對(duì)協(xié)同過(guò)濾推薦的影響,現(xiàn)有研究中的主流方案一般有4類.
先對(duì)用戶或者項(xiàng)目進(jìn)行聚類,再在幾個(gè)具有相似性關(guān)系的組內(nèi)分別對(duì)用戶進(jìn)行推薦[2],通過(guò)縮小近鄰用戶的范圍,在確保個(gè)性化同時(shí)最大限度地降低數(shù)據(jù)稀疏性影響,但用戶或項(xiàng)目的聚類會(huì)導(dǎo)致一些有用個(gè)性化信息丟失.
利用用戶/項(xiàng)目的特征信息,基于用戶/項(xiàng)目屬性以及用戶/項(xiàng)目之間的相似關(guān)系計(jì)算用戶[3-5]或項(xiàng)目[6]特征相似度,通過(guò)避開(kāi)對(duì)用戶-項(xiàng)目評(píng)分矩陣的依賴,在一定程度上緩解數(shù)據(jù)稀疏性對(duì)推薦的影響,但融入基于社交網(wǎng)絡(luò)等的用戶/項(xiàng)目特征信息一定程度上會(huì)增加算法復(fù)雜度以及數(shù)據(jù)采集、清理和存儲(chǔ)的要求.
主要采用奇異值分解法SVD(Singular Value Decomposition)[7,8],通過(guò)將高維度的評(píng)分矩陣映射到低維度,能有效降低矩陣規(guī)模和數(shù)據(jù)稀疏性,但在矩陣運(yùn)算的過(guò)程中將一個(gè)矩陣分解為多個(gè)矩陣的乘積,難免會(huì)丟失用戶相似性信息.為此,林建輝等提出了一種基于SVD和模糊聚類的協(xié)同過(guò)濾算法,降維同時(shí)縮小近鄰范圍,緩解數(shù)據(jù)稀疏性同時(shí)提升可拓展性[9];劉晴晴等提出基于SVD的混合協(xié)同過(guò)濾推薦算法,先用SVD方法分解用戶-項(xiàng)目評(píng)分矩陣,通過(guò)隨機(jī)梯度下降法填充稀疏矩陣,并優(yōu)化相似度計(jì)算方法以有效提高推薦準(zhǔn)確性[10];Nilashi等則提出了基于SVD和本體論的混合協(xié)同過(guò)濾推薦方法,降維的同時(shí)利用本體論提高推薦的準(zhǔn)確性[11].王運(yùn)等在傳統(tǒng)的概率矩陣分解算法基礎(chǔ)上,利用用戶項(xiàng)目評(píng)分?jǐn)?shù)據(jù)及項(xiàng)目信息提出了融合用戶偏好和項(xiàng)目相似度的概率矩陣分解推薦算法,雖沒(méi)有根本降低矩陣分解技術(shù)計(jì)算復(fù)雜度,但仿真實(shí)驗(yàn)表明該算法獲得了更好的評(píng)分預(yù)測(cè)準(zhǔn)確性[12],一定程度上緩解了該類方法推薦失真的問(wèn)題.但由于奇異值分解的復(fù)雜度,計(jì)算耗時(shí)較長(zhǎng)[13].
對(duì)用戶未評(píng)分項(xiàng)目進(jìn)行評(píng)分預(yù)測(cè),回填到評(píng)分矩陣中進(jìn)行協(xié)同過(guò)濾推薦,個(gè)性化程度和精確度都有所提高[14].缺省值預(yù)測(cè)常用的方法如下:使用N個(gè)近鄰用戶對(duì)項(xiàng)目i的平均評(píng)分作為用戶u對(duì)未知項(xiàng)目i的預(yù)測(cè)評(píng)分P(u,i)[15-17],這種方法將近鄰用戶同等對(duì)待,忽視了不同近鄰用戶特征對(duì)預(yù)測(cè)評(píng)分的貢獻(xiàn)程度的影響,大大降低了預(yù)測(cè)結(jié)果的個(gè)性化程度.彭石等提出一種基于加權(quán)Jaccard系數(shù)的綜合項(xiàng)目相似度度量方法[18],使用項(xiàng)目綜合相似度對(duì)評(píng)分矩陣進(jìn)行填充,但是項(xiàng)目屬性的選取沒(méi)有統(tǒng)一規(guī)則,所以可靠性和普適性不強(qiáng);盧棪提出了一種以迭代的方式進(jìn)行缺失值預(yù)測(cè)評(píng)分矩陣填充方法[19],這種方法在每一次迭代中僅考慮項(xiàng)目間的相似度來(lái)生成預(yù)測(cè)評(píng)分.
向小東等使用Slope-One算法計(jì)算得到的評(píng)分預(yù)測(cè)值來(lái)填充評(píng)分矩陣中的未評(píng)分項(xiàng)目,該方法有效地降低數(shù)據(jù)稀疏性,相比其它方法算法簡(jiǎn)單,易于實(shí)現(xiàn),執(zhí)行效率高[20],但依然只從項(xiàng)目相似度角度進(jìn)行未知項(xiàng)目的評(píng)分預(yù)測(cè);劉林靜等提出了一種基于用戶相似性的加權(quán)Slope-One 算法,將用戶間的相似性作為預(yù)測(cè)評(píng)分權(quán)重[21],但去除評(píng)價(jià)次數(shù)小于0.01%的極度不活躍用戶僅考慮活躍用戶的影響作用,失去了一定的有效信息;張玉連等提出的加權(quán)Slope-One算法在預(yù)測(cè)評(píng)分時(shí)進(jìn)一步考慮了不同項(xiàng)目的用戶評(píng)論數(shù)量差異的影響[22];李桃迎等則針對(duì)Slope-One算法未考慮用戶興趣變化和用戶相似性的問(wèn)題,提出了基于用戶興趣遺忘函數(shù)和用戶最近鄰居篩選策略的改進(jìn)方案,以期提高推薦的質(zhì)量[23];王衛(wèi)紅提出基于用戶自身屬性的加權(quán)Slope One算法,將用戶對(duì)項(xiàng)目類別的評(píng)分添加到評(píng)分矩陣以降低數(shù)據(jù)稀疏性的同時(shí),在計(jì)算用戶間相似度時(shí)考慮了用戶年齡、性別和職業(yè)等屬性,提升了推薦準(zhǔn)確性和算法可拓展性[24].但無(wú)論是基于用戶相似性還是考慮用戶自身屬性的加權(quán)Slope-One算法,用戶-項(xiàng)目評(píng)分中仍然忽略了用戶話語(yǔ)權(quán)這一重要用戶本身屬性的影響.
用戶/項(xiàng)目聚類和用戶/項(xiàng)目相似度計(jì)算改進(jìn)兩類方法并沒(méi)有根本解決數(shù)據(jù)稀疏性問(wèn)題本身,且存在部分丟失或忽視最能反映用戶偏好的用戶/項(xiàng)目信息、過(guò)于依賴用戶/項(xiàng)目特征數(shù)據(jù)等缺陷;基于評(píng)分預(yù)測(cè)對(duì)用戶-項(xiàng)目矩陣的缺失數(shù)據(jù)進(jìn)行填充的矩陣填充法,克服了SVD等矩陣降維方法計(jì)算復(fù)雜的缺點(diǎn),近年來(lái)引起了學(xué)術(shù)界和企業(yè)界的關(guān)注.因此,本文擬對(duì)矩陣缺省項(xiàng)預(yù)測(cè)的Slope-One算法和現(xiàn)有的加權(quán)Slope-One算法原理及局限進(jìn)行分析,在考慮評(píng)分用戶數(shù)量不同對(duì)于計(jì)算項(xiàng)目評(píng)分偏差影響的同時(shí),充分考慮用戶屬性的不同對(duì)于評(píng)分預(yù)測(cè)的影響,提出一種兼顧用戶話語(yǔ)權(quán)這一重要用戶屬性的改進(jìn)的加權(quán)Slope-One算法,以期在解決數(shù)據(jù)稀疏性問(wèn)題同時(shí)進(jìn)一步提升評(píng)分預(yù)測(cè)的精度.
Slope-One算法是一個(gè)增量算法,基于該算法的協(xié)同過(guò)濾推薦對(duì)評(píng)分很少的用戶也可以產(chǎn)生推薦,并且精確度比基于用戶和基于項(xiàng)目的協(xié)同過(guò)濾推薦算法的表現(xiàn)要好[20,21],Slope-One算法核心的思想是根據(jù)所有用戶對(duì)項(xiàng)目的評(píng)分推算出項(xiàng)目集合中兩兩項(xiàng)目之間的評(píng)分差值,從而根據(jù)項(xiàng)目之間的評(píng)分差值和用戶已有的評(píng)分記錄來(lái)近似地預(yù)測(cè)該用戶對(duì)目標(biāo)項(xiàng)目的評(píng)分.
下面用一個(gè)簡(jiǎn)單的例子來(lái)闡述Slope-One算法的原理.假設(shè)有U1、U2、U3、U4、U5這5個(gè)用戶分別對(duì)I1、I2、I3、I4這4個(gè)項(xiàng)目的評(píng)分記錄,如圖1(a)所示,其中:“-”表示未評(píng)分,“?”代表需要預(yù)測(cè)的評(píng)分.
原始的Slope-One算法預(yù)測(cè)用戶U1對(duì)項(xiàng)目I3評(píng)分的流程如下:
Step 1.篩選用戶集合.
先篩選出對(duì)目標(biāo)項(xiàng)目I3進(jìn)行過(guò)評(píng)分的所有用戶的集合,即{U2,U4,U5},如圖1(b)所示.
Step 2.篩選項(xiàng)目集合.
在用戶集合{U2,U4,U5}中,尋找與目標(biāo)用戶U1同時(shí)進(jìn)行過(guò)評(píng)分的所有項(xiàng)目,包括目標(biāo)項(xiàng)目在內(nèi)構(gòu)成項(xiàng)目集合{I2,I3,I4},如圖1(c)所示,從而鎖定Slope-One算法所需要的用戶-項(xiàng)目評(píng)分?jǐn)?shù)據(jù).
圖1 Slope-One算法原理示意圖Fig.1 Schematic diagram of Slope-One algorithm
Step 3.預(yù)測(cè)目標(biāo)項(xiàng)目評(píng)分.
項(xiàng)目j與項(xiàng)目i的評(píng)分偏差devj,i如公式(1)所示:
(1)
用戶u對(duì)項(xiàng)目j預(yù)測(cè)評(píng)分P(u)j如公式(2)所示:
(2)
其中:Uj,i表示同時(shí)對(duì)項(xiàng)目j和i評(píng)過(guò)分的用戶集合;Ij表示用戶u所有已評(píng)分且滿足條件(i≠j∩Uj,i≠φ)的項(xiàng)目集合;ru,i和ru,j分別表示用戶u對(duì)項(xiàng)目i和j的評(píng)分;card()表示集合中的元素個(gè)數(shù).
原始的Slope-One算法中,項(xiàng)目之間共現(xiàn)的次數(shù)無(wú)論是多少,最終考慮的都是平均評(píng)分差,那么考慮項(xiàng)目之間共現(xiàn)次數(shù)的影響.對(duì)于項(xiàng)目i和j來(lái)說(shuō),在計(jì)算評(píng)分偏差devj,i的時(shí)候并沒(méi)有考慮評(píng)分用戶數(shù)量差異對(duì)devj,i可信度的影響,假如有1000個(gè)用戶都給項(xiàng)目i和j打了分,而只有一個(gè)用戶給項(xiàng)目i和k打分,那么devj,i的可信度是要遠(yuǎn)遠(yuǎn)高于devj,k的.在此基礎(chǔ)之上,加權(quán)Slope-One考慮了共現(xiàn)次數(shù),項(xiàng)目和目標(biāo)項(xiàng)目共現(xiàn)次數(shù)越多,所預(yù)測(cè)的得分置信度越高.
加權(quán)Slope-One算法考慮到兩兩項(xiàng)目之間共現(xiàn)次數(shù)即不同的評(píng)分用戶數(shù)量對(duì)于計(jì)算項(xiàng)目評(píng)分偏差時(shí)的貢獻(xiàn)不同,對(duì)不同項(xiàng)目計(jì)算得到的平均偏差進(jìn)行加權(quán),改進(jìn)后的計(jì)算如公式(3)所示:
(3)
其中,card(Uj,i)是對(duì)項(xiàng)目i和j都做出過(guò)評(píng)價(jià)的用戶數(shù)量.
加權(quán)Slope-One算法在原始的Slope-One算法基礎(chǔ)上既考慮了項(xiàng)目平均評(píng)分差異,又針對(duì)項(xiàng)目的評(píng)分用戶數(shù)量進(jìn)行了加權(quán)處理,通過(guò)用戶評(píng)分?jǐn)?shù)量的加權(quán)得到項(xiàng)目之間的評(píng)分偏差的加權(quán)平均,從而克服了原始Slope-One算法在項(xiàng)目的評(píng)分預(yù)測(cè)中不同項(xiàng)目的評(píng)分用戶數(shù)量差異對(duì)評(píng)分偏差的影響[21].
但是傳統(tǒng)的加權(quán)Slope-One算法仍然是基于項(xiàng)目考慮評(píng)分用戶數(shù)量的差異,卻忽略了用戶本身屬性尤其是不同用戶活躍度差異的影響.比如,用戶a評(píng)論總數(shù)是2000次,而用戶b只有20次,兩個(gè)用戶的活躍度不同,活躍度越高的用戶,對(duì)于推薦系統(tǒng)中同一項(xiàng)目評(píng)分預(yù)測(cè)的貢獻(xiàn)越大,意味著該用戶的話語(yǔ)權(quán)越高.因而,傳統(tǒng)的加權(quán)Slope-One算法忽略了用戶話語(yǔ)權(quán)的作用,限制了評(píng)分預(yù)測(cè)的可信度,進(jìn)而一定程度上影響基于該算法的協(xié)同過(guò)濾推薦的準(zhǔn)確性.
本文在傳統(tǒng)的加權(quán)Slope-one算法考慮不同項(xiàng)目之間評(píng)分用戶數(shù)量差異影響的基礎(chǔ)上,進(jìn)一步考慮了不同活躍度用戶的話語(yǔ)權(quán)差異對(duì)評(píng)分預(yù)測(cè)的影響,提出改進(jìn)的加權(quán)Slope-One算法.
作為協(xié)同過(guò)濾推薦算法重要輸入的用戶-項(xiàng)目評(píng)分矩陣,評(píng)分次數(shù)不同的用戶,其活躍度存在差異,對(duì)評(píng)分預(yù)測(cè)的話語(yǔ)權(quán)顯然不能等同對(duì)待,充分考慮用戶話語(yǔ)權(quán)的大小對(duì)評(píng)分偏差的影響,可以有效避免出現(xiàn)愛(ài)好大相徑庭的用戶被計(jì)算為相似用戶的問(wèn)題.當(dāng)然,為了避免人為刷評(píng)論或者惡意評(píng)論等行為的影響,需要對(duì)用戶-項(xiàng)目評(píng)分?jǐn)?shù)據(jù)進(jìn)行有用性甄別.以一個(gè)例子說(shuō)明如下:假如現(xiàn)在用戶U2,評(píng)分次數(shù)為100,他對(duì)于項(xiàng)目I2和I3的評(píng)分分別是2和5,I2和I3的共同評(píng)分用戶數(shù)是30;另一用戶U4,評(píng)分次數(shù)為20,其對(duì)項(xiàng)目I2和I3的評(píng)分分別是5和2,I2和I3的共同評(píng)分用戶數(shù)是50;而用戶U5的評(píng)分次數(shù)是50;其他的用戶-項(xiàng)目評(píng)分同圖1,那么,根據(jù)加權(quán)Slope-One算法首先據(jù)公式(1)計(jì)算項(xiàng)目I2和I3、項(xiàng)目I3和I4的評(píng)分偏差分別是:
如果考慮用戶評(píng)分?jǐn)?shù)量差異作為權(quán)重,項(xiàng)目I2和I3、項(xiàng)目I3和I4的評(píng)分偏差則分別是:
顯然,考慮用戶話語(yǔ)權(quán)有利于消除了加權(quán)平均評(píng)分差所帶來(lái)的偶然因素導(dǎo)致的加權(quán)評(píng)分差為0的現(xiàn)象,這個(gè)方法也大大降低了由于偶然因素導(dǎo)致的愛(ài)好不一樣的用戶被計(jì)算為相似用戶的概率.因此這種基于用戶話語(yǔ)權(quán)的加權(quán)Slope-One算法總結(jié)如公式(4)和公式(5):
(4)
(5)
其中,Nu代表數(shù)據(jù)集中每個(gè)用戶的評(píng)分次數(shù),它反映了用戶活躍度.
針對(duì)協(xié)同過(guò)濾算法中數(shù)據(jù)稀疏的問(wèn)題,本文在傳統(tǒng)加權(quán)Slope-One算法基礎(chǔ)上提出了考慮用戶話語(yǔ)權(quán)的改進(jìn)算法,用戶活躍度越高則對(duì)項(xiàng)目評(píng)分的話語(yǔ)權(quán)越大.據(jù)此對(duì)用戶未評(píng)分項(xiàng)目進(jìn)行預(yù)測(cè)以實(shí)現(xiàn)用戶-項(xiàng)目評(píng)分矩陣的填充,作為協(xié)同過(guò)濾算法的輸入.
U為用戶集合,I是具有預(yù)測(cè)評(píng)分的候選項(xiàng)目集合,M0是用戶-項(xiàng)目初始評(píng)分矩陣,Mi為用戶-項(xiàng)目填充后的評(píng)分矩陣,N為給每個(gè)用戶推薦的項(xiàng)目個(gè)數(shù),L0是初始候選列表,L1是候選列表,Len(ui)為用戶評(píng)分列表填充長(zhǎng)度,L(u)為給所有用戶的最終推薦列表,則基于改進(jìn)加權(quán)Slope-One算法的協(xié)同過(guò)濾推薦流程描述如圖2所示.
圖2 基于改進(jìn)的加權(quán)Slope-One算法協(xié)同過(guò)濾推薦流程Fig.2 Flow chart of collaborative filtering recommendation algorithm based on improved weighted Slope-One algorithm
本文仿真實(shí)驗(yàn)選取了稀疏度不同的兩個(gè)數(shù)據(jù)集Movie-Lens和Amazon-Clothes作為實(shí)驗(yàn)數(shù)據(jù).Movie-Lens數(shù)據(jù)集是由明尼蘇達(dá)大學(xué)的Grouplens團(tuán)隊(duì)收集的真實(shí)電影評(píng)分?jǐn)?shù)據(jù),經(jīng)清洗得到了包含943個(gè)用戶對(duì)1682部電影共100000條有效評(píng)分?jǐn)?shù)據(jù),其中每個(gè)用戶至少對(duì)20部電影進(jìn)行了評(píng)分,平均評(píng)論數(shù)為106次.Amazon-Clothes數(shù)據(jù)集由加州大學(xué)Julian McAuley教授團(tuán)隊(duì)收集的亞馬遜服裝銷售的真實(shí)評(píng)分?jǐn)?shù)據(jù),經(jīng)清洗得到了包含6962個(gè)用戶對(duì)5000個(gè)項(xiàng)目的226956條有效評(píng)分?jǐn)?shù)據(jù),平均評(píng)論數(shù)33次.兩個(gè)數(shù)據(jù)集的評(píng)分值均為1~5之間的整數(shù),數(shù)值越高用戶滿意度越高.
借鑒文獻(xiàn)[21]關(guān)于數(shù)據(jù)稀疏度的計(jì)算方法,Movie-Lens數(shù)據(jù)集的稀疏度為0.937,相對(duì)較低;Amazon-Clothes數(shù)據(jù)集的稀疏度為0.9934,相對(duì)較高.
本實(shí)驗(yàn)主要目的是驗(yàn)證本文提出的基于改進(jìn)評(píng)分矩陣填充算法的協(xié)同過(guò)濾推薦的準(zhǔn)確性.采用五折交叉法,將數(shù)據(jù)集隨機(jī)分為5個(gè)不相交的子集,每次實(shí)驗(yàn)選擇其中一個(gè)子集作為測(cè)試集,其余的4個(gè)子集作為訓(xùn)練集,如此重復(fù)5次的平均結(jié)果作為最終結(jié)果.每個(gè)數(shù)據(jù)集的4個(gè)訓(xùn)練集用于本文算法計(jì)算用戶對(duì)項(xiàng)目的預(yù)測(cè)評(píng)分,而測(cè)試集則不參與預(yù)測(cè)評(píng)分,僅用于評(píng)估本文算法的推薦效果,之后將預(yù)測(cè)評(píng)分與實(shí)際評(píng)分進(jìn)行MAE值的比較.
基于奇異值分解(SVD)的協(xié)同過(guò)濾算法通過(guò)降維來(lái)減小數(shù)據(jù)稀疏性的影響[7,8],因此作為仿真對(duì)比的算法之一;其次,選擇原始的協(xié)同過(guò)濾算法和基于傳統(tǒng)加權(quán)Slope-One的協(xié)同過(guò)濾算法,作為本文基于改進(jìn)加權(quán)Slope-One的協(xié)同過(guò)濾算法的對(duì)照組.
本文采用調(diào)整余弦相似度(Adjusted Cosine Similarity)[6]計(jì)算相似度;采用平均絕對(duì)偏差MAE(Mean Absolute Error)作為推薦準(zhǔn)確度的評(píng)價(jià)指標(biāo),對(duì)比上述4種算法在兩個(gè)不同稀疏度的數(shù)據(jù)集Movie-Lens和Amazon-Clothes上的MAE表現(xiàn).MAE越小,算法準(zhǔn)確性越高[1].
按照Slope-One填充的評(píng)分矩陣,先通過(guò)仿真實(shí)驗(yàn)1來(lái)得到最優(yōu)的填充比例,即對(duì)每個(gè)用戶填充的預(yù)測(cè)評(píng)分?jǐn)?shù)目,來(lái)驗(yàn)證矩陣填充比例變化對(duì)本文算法的絕對(duì)誤差的影響,實(shí)驗(yàn)1中,矩陣填充比例分別取10%、20%、30%、40%、50%、60%,70%.本文改進(jìn)Slope-One算法在Movie-Lens數(shù)據(jù)集和Amazon-Clothes數(shù)據(jù)集上的MAE值表現(xiàn)如圖3所示.
圖3 不同填充比例下本文算法的MAE值表現(xiàn)Fig.3 Comparison of MAE values of proposed algorithm under different filling ratios
由圖3可知,本文算法在Movie-Lens數(shù)據(jù)集上的表現(xiàn)要好于在Amazon-Clothes數(shù)據(jù)集,同時(shí)本文算法在兩種數(shù)據(jù)集上的MAE值均在填充比例在30%左右趨于穩(wěn)定,因此后續(xù)實(shí)驗(yàn)中本文算法填充比例將采用30%.
采用最優(yōu)填充比例30%使用本文改進(jìn)加權(quán)Slope-One算法對(duì)兩個(gè)數(shù)據(jù)集的評(píng)分矩陣進(jìn)行填充,然后分別使用另外3種算法對(duì)2個(gè)數(shù)據(jù)集進(jìn)行仿真實(shí)驗(yàn)2確定近鄰數(shù)N的大小.在實(shí)驗(yàn)2中分別取N=10,20,30,40,50,60,70,80,90,觀察近鄰數(shù)的多少對(duì)推薦準(zhǔn)確性的影響.如圖4所示,整體而言,對(duì)于4種算法,隨著近鄰數(shù)的增大,MAE 值逐漸降低,并在N= 50 時(shí)逐漸趨于穩(wěn)定,因此,最優(yōu)近鄰數(shù)目選擇50.
圖4 不同近鄰數(shù)下4種算法MAE值對(duì)比Fig.4 Comparison of MAE values of four algorithms under different neighbor numbers
對(duì)4種算法進(jìn)行MAE值仿真對(duì)比實(shí)驗(yàn)3,結(jié)果如圖5所示.
由圖5可知,從算法精度來(lái)看,4種算法中,本文算法在不同稀疏度的兩個(gè)數(shù)據(jù)集上的平均絕對(duì)誤差值都表現(xiàn)最佳;表現(xiàn)其次的是基于SVD的協(xié)同過(guò)濾算法和原始加權(quán)Slope-One算法;原始的協(xié)同過(guò)濾算法表現(xiàn)最差.表明本文算法相對(duì)其它3種算法能夠更有效地降低數(shù)據(jù)稀疏對(duì)推薦準(zhǔn)確度的影響.
圖5 4種算法在2個(gè)數(shù)據(jù)集上的MAE值對(duì)比Fig.5 Comparison of MAE values of four algorithms on two datasets
從數(shù)據(jù)集角度來(lái)看,各算法在數(shù)據(jù)稀疏度略高的Amazon-Clothes數(shù)據(jù)集上的總體表現(xiàn)都略微比Movie-lens數(shù)據(jù)集差,說(shuō)明稀疏度的升高的確會(huì)影響算法的準(zhǔn)確度;SVD協(xié)同過(guò)濾算法和原始的加權(quán)Slope-One算法在Amazon-Clothes數(shù)據(jù)集仿真中的表現(xiàn)差別不大,但是在Movie-lens數(shù)據(jù)集仿真中,原始的加權(quán)Slope-One算法明顯要比SVD協(xié)同過(guò)濾算法表現(xiàn)好,說(shuō)明基于原始加權(quán)Slope-One的協(xié)同過(guò)濾推薦算法在稀疏度較低的數(shù)據(jù)集上相對(duì)SVD略有優(yōu)勢(shì)一些;本文提出的基于改進(jìn)加權(quán)Slope-One的協(xié)同過(guò)濾推薦算法在不同稀疏度的數(shù)據(jù)集上的仿真中表現(xiàn)穩(wěn)定且都相對(duì)最優(yōu),進(jìn)一步驗(yàn)證了本文改進(jìn)算法的優(yōu)越性.
針對(duì)目前基于內(nèi)存的協(xié)同過(guò)濾算法中數(shù)據(jù)稀疏性導(dǎo)致的推薦結(jié)果準(zhǔn)確度不高的問(wèn)題,本文在加權(quán)Slope-One算法基礎(chǔ)上提出了兼顧項(xiàng)目之間差異和用戶之間差異的改進(jìn)算法,在對(duì)用戶-項(xiàng)目評(píng)分矩陣進(jìn)行填充預(yù)測(cè)時(shí)考慮用戶話語(yǔ)權(quán)的影響;并通過(guò)仿真實(shí)驗(yàn)確定了該算法的最優(yōu)填充比例和最優(yōu)近鄰數(shù)等重要參數(shù),有效緩解數(shù)據(jù)稀疏性的同時(shí),確保用戶-項(xiàng)目的評(píng)分預(yù)測(cè)最大限度地體現(xiàn)用戶相似性.基于Movie-Lens和Amazon-Clothes兩個(gè)不同稀疏度數(shù)據(jù)集的仿真實(shí)驗(yàn)顯示,相對(duì)于經(jīng)典協(xié)同過(guò)濾算法、基于SVD的協(xié)同過(guò)濾算法以及原始加權(quán)Slope-One算法3種算法,本文提出的基于改進(jìn)加權(quán)Slope-One的協(xié)同過(guò)濾算法的推薦結(jié)果的MAE值最低.
為了揭示4種算法在不同稀疏度數(shù)據(jù)集上的表現(xiàn)和適用性,本文采用的兩個(gè)數(shù)據(jù)集的稀疏度差別還不夠突出,今后將會(huì)嘗試在稀疏度反差更大的若干個(gè)數(shù)據(jù)集上分別驗(yàn)證4種算法的性能表現(xiàn).