廖天星,王 玲
隨著數(shù)據(jù)信息量的增多,為了幫助用戶快速找到想要的信息,推薦系統(tǒng)作為處理數(shù)據(jù)過(guò)載問(wèn)題的有效手段應(yīng)運(yùn)而生,并且被廣泛地應(yīng)用在各大個(gè)性化網(wǎng)站上,例如亞馬遜網(wǎng)站、豆瓣網(wǎng)站等。在電子商務(wù)中,個(gè)性化的推薦系統(tǒng)已成為當(dāng)下最強(qiáng)大和最流行的工具之一,并為商業(yè)帶來(lái)了巨大的價(jià)值[1]。
在推薦系統(tǒng)中,協(xié)同過(guò)濾推薦系統(tǒng)作為一種成功的推薦系統(tǒng)被廣泛地應(yīng)用[2]。當(dāng)前,協(xié)同過(guò)濾(Collaborative Filtering, CF)推薦算法分為基于記錄(memory-based)的協(xié)同過(guò)濾算法[3]和基于模型(model-based)的協(xié)同過(guò)濾算法[4],而基于內(nèi)存的協(xié)同過(guò)濾又分為基于用戶的協(xié)同過(guò)濾(User-Based Collaborative Filtering, UBCF)和基于項(xiàng)目的協(xié)同過(guò)濾(Item-Based Collaborative Filtering, IBCF)[5-6]?,F(xiàn)在主流的基于用戶的協(xié)同過(guò)濾算法是K-最近鄰(K-Nearest Neighbors, KNN)算法,它的基本思想是尋找與目標(biāo)用戶最相近的k個(gè)鄰居,使用鄰居的評(píng)分來(lái)預(yù)測(cè)目標(biāo)用戶的評(píng)分?;陧?xiàng)目的主流協(xié)同過(guò)濾算法是Slope One[7],它的基本思想是分析其他項(xiàng)目與目標(biāo)項(xiàng)目之間的平均評(píng)分差異來(lái)預(yù)測(cè)出目標(biāo)項(xiàng)目的評(píng)分。由于這些推薦算法在預(yù)測(cè)精度上存在提升的空間,本文提出了高精度M2_KSP算法。該算法將KNN用于用戶的分類方法變?yōu)橛糜陧?xiàng)目的分類方法,將針對(duì)Slope One算法忽略項(xiàng)目間關(guān)聯(lián)的問(wèn)題提出的Slope One加權(quán)算法用于設(shè)計(jì)新的評(píng)分預(yù)測(cè)方法。
M2_KSP算法是一種基于項(xiàng)目的協(xié)同過(guò)濾推薦算法,該算法的提出首先是通過(guò)對(duì)KNN算法的研究,發(fā)現(xiàn)傳統(tǒng)的相似度計(jì)算方法如曼哈頓距離、余弦距離等都太過(guò)于依賴用戶的評(píng)分,忽略了項(xiàng)目屬性[8]的問(wèn)題,為解決此問(wèn)題設(shè)計(jì)了在算法中融入能夠代表項(xiàng)目屬性的標(biāo)簽[9]來(lái)計(jì)算項(xiàng)目間相似度的方法,即M2相似性。然后為了降低評(píng)分預(yù)測(cè)時(shí)的計(jì)算量,設(shè)計(jì)使用M2相似性來(lái)獲得k個(gè)鄰近項(xiàng)目。最后在參考Slope One加權(quán)算法思想下又設(shè)計(jì)了新的評(píng)分預(yù)測(cè)方法,并基于這k個(gè)鄰近項(xiàng)目用戶的評(píng)分預(yù)測(cè)出目標(biāo)用戶的評(píng)分。M2_KSP算法根據(jù)KNN算法和Slope One加權(quán)算法的理論思想而設(shè)計(jì),結(jié)合了這兩個(gè)算法各自的優(yōu)點(diǎn),在減少數(shù)據(jù)計(jì)算量的同時(shí)又確保了預(yù)測(cè)評(píng)分方法的簡(jiǎn)單性。
為了驗(yàn)證本文算法的準(zhǔn)確度,進(jìn)行了與基于曼哈頓距離的KNN算法等協(xié)同過(guò)濾推薦算法的對(duì)比實(shí)驗(yàn)。實(shí)驗(yàn)數(shù)據(jù)使用了著名的MovieLens數(shù)據(jù)集,采用Leave-One-Out方法[10]和推薦系統(tǒng)評(píng)價(jià)指標(biāo)平均絕對(duì)誤差(Mean Absolute Error, MAE)和均方根誤差(Root Mean Square Error, RMSE)來(lái)評(píng)價(jià)算法的性能。實(shí)驗(yàn)結(jié)果表明,本文M2_KSP算法具有較高的預(yù)測(cè)準(zhǔn)確度和很好的算法穩(wěn)定性。
基于項(xiàng)目的協(xié)同過(guò)濾(IBCF)算法的運(yùn)算方式一般為:首先使用Leave-One-Out交叉驗(yàn)證方法將數(shù)據(jù)集劃分為訓(xùn)練集和測(cè)試集,然后基于訓(xùn)練集數(shù)據(jù)采用相似性度量方法找到目標(biāo)項(xiàng)目的相似項(xiàng)目,接著利用相似性作為評(píng)分預(yù)測(cè)算法的權(quán)重預(yù)測(cè)出測(cè)試集的評(píng)分,最后使用推薦算法評(píng)價(jià)指標(biāo)評(píng)價(jià)算法的質(zhì)量。這種推薦算法的評(píng)分預(yù)測(cè)都是基于用戶評(píng)分矩陣的基礎(chǔ)之上,可見(jiàn)用戶的評(píng)分矩陣對(duì)推薦算法而言比較重要,故本文將所有項(xiàng)目M={m0,m1,…,m(m-1)}所對(duì)應(yīng)的全部用戶U={u0,u1,…,u(n-1)}的評(píng)分排列組合成用戶項(xiàng)目評(píng)分矩陣R,如式(1)所示:
R:U×M
(1)
為使得表示更加明了,這里將矩陣表示為R=(Ri, j)n×m,Ri, j表示用戶i對(duì)項(xiàng)目j的評(píng)分。根據(jù)項(xiàng)目的評(píng)分規(guī)則,有0≤Ri, j≤5,表1是用戶評(píng)分矩陣的一個(gè)示例。
表1 用戶評(píng)分矩陣示例
表1中,M={m0,m1,m2,m3}表示不同的項(xiàng)目,U={u0,u1,u2}表示不同的用戶,Ri, j={2,5,0,3,0,3,2,1,3,4,1,2}。如果Ri, j=0,表示用戶i未對(duì)項(xiàng)目j評(píng)分。
對(duì)于預(yù)測(cè)目標(biāo)用戶的評(píng)分,可以通過(guò)KNN協(xié)同過(guò)濾推薦算法預(yù)測(cè)該用戶對(duì)目標(biāo)項(xiàng)目的評(píng)分。由于KNN算法的理念是以用戶為中心,尋找用戶與用戶之間的距離,根據(jù)距離的大小來(lái)尋找鄰近的用戶,以鄰近的用戶都會(huì)有相近的評(píng)分為原理來(lái)預(yù)測(cè)評(píng)分,所以KNN算法的核心是定義用戶間相似度。這種方法對(duì)用戶進(jìn)行了分類,使用參數(shù)k確定用戶鄰居的數(shù)量,通過(guò)設(shè)置閾值來(lái)過(guò)濾掉相似度低的用戶,其中為了衡量用戶間相似度,可以使用歐氏距離和余弦距離[11]計(jì)算用戶間的距離,距離越近越相似。KNN算法預(yù)測(cè)評(píng)分的計(jì)算方法如式(2)所示:
(2)
用于推薦系統(tǒng)的Slope One算法是基于項(xiàng)目之間相互存在的評(píng)分差異,不考慮項(xiàng)目之間的相似性直接根據(jù)評(píng)分的平均差異來(lái)預(yù)測(cè)用戶的評(píng)分。Slope one算法以其簡(jiǎn)單性和不錯(cuò)的推薦質(zhì)量被普遍地應(yīng)用,當(dāng)前一部分人針對(duì)Slope One算法忽略項(xiàng)目間的內(nèi)在關(guān)聯(lián)[12]提出了一種改進(jìn)方法,將項(xiàng)目所占的權(quán)重引入Slope One算法中,即為Slope One加權(quán)算法[13]。在推薦系統(tǒng)中應(yīng)用該算法預(yù)測(cè)目標(biāo)用戶的評(píng)分,其計(jì)算表達(dá)式如式(3)所示:
(3)
本文M2_KSP算法是一種基于項(xiàng)目的協(xié)同過(guò)濾算法,符合一般的基于項(xiàng)目的協(xié)同過(guò)濾算法通常的運(yùn)算方式。該算法首先針對(duì)例如傳統(tǒng)曼哈頓距離計(jì)算方法完全依賴用戶評(píng)分表而忽略項(xiàng)目屬性的問(wèn)題,重新定義了項(xiàng)目相似度計(jì)算方法,提出將項(xiàng)目的標(biāo)簽融入計(jì)算中;然后為了獲得較好的相似度計(jì)算效果又提出了通過(guò)閾值獲得重要標(biāo)簽的方法;最后使用該相似度作為算法的權(quán)重來(lái)更好地預(yù)測(cè)出用戶的評(píng)分。
針對(duì)大多數(shù)推薦算法的相似度計(jì)算都是基于用戶的評(píng)分而忽略了項(xiàng)目的屬性,本文引入了項(xiàng)目的標(biāo)簽來(lái)定義項(xiàng)目相似度。標(biāo)簽可以概括性地描述一個(gè)項(xiàng)目,相當(dāng)于使用離散的語(yǔ)言將項(xiàng)目的特點(diǎn)分離出來(lái)。本文使用項(xiàng)目的標(biāo)簽集建立項(xiàng)目標(biāo)簽矩陣。將項(xiàng)目M={m0,m1,…,m(m-1)}和其所擁有的所有標(biāo)簽T={t0,t1,…,t(n-1)}排列組合成該項(xiàng)目標(biāo)簽數(shù)量矩陣L,如式(4)所示:
L:T×M
(4)
為使得表示更加明了,這里將矩陣表示為L(zhǎng)=(Li, j)n×m,項(xiàng)目j對(duì)應(yīng)標(biāo)簽i的數(shù)量表示為L(zhǎng)i, j。表2是項(xiàng)目標(biāo)簽矩陣的一個(gè)示例。
表2 項(xiàng)目標(biāo)簽數(shù)量矩陣示例
如表2所示,M={m0,m1,m2,m3}表示不同的項(xiàng)目,T={t0,t1,t2}表示不同的標(biāo)簽,Li, j={13,2,0,18,0,16,25,1,21,1,11,1}。如果Li, j=0,表示項(xiàng)目j不含標(biāo)簽i。
傳統(tǒng)的相似性計(jì)算方法強(qiáng)調(diào)根據(jù)用戶的評(píng)分相似可以發(fā)現(xiàn)用戶間相似的偏好,但是由于忽略了項(xiàng)目的屬性則不能更好地刻畫項(xiàng)目間的相似性,所以本文提出用代表項(xiàng)目屬性的標(biāo)簽來(lái)定義新的項(xiàng)目間相似性計(jì)算方法,即M2相似性。M2相似性依據(jù)越相似的項(xiàng)目之間總是具有越多相同的特征屬性的理論,這個(gè)理論類比于相似的用戶間具有更多相同的偏好,這樣在理論上可以找到相似的項(xiàng)目。依據(jù)理論首先將式(4)中每個(gè)標(biāo)簽都看作為物品的一種屬性,那么這里的特征屬性是指項(xiàng)目具有的重要標(biāo)簽,可以通過(guò)設(shè)置標(biāo)簽重要度閾值找到重要標(biāo)簽。為了衡量項(xiàng)目中每個(gè)標(biāo)簽的重要程度,采用了常用于評(píng)估文件中字詞重要性的加權(quán)技術(shù),即詞頻-逆文檔頻率(Term Frequency-Inverse Document Frequency, TF-IDF)方法[14],該方法的計(jì)算表達(dá)式如式(5)所示:
(5)
其中:Wt為目標(biāo)項(xiàng)目i中標(biāo)簽t的重要度;Li,t為目標(biāo)項(xiàng)目i中標(biāo)簽t的數(shù)量;Si為目標(biāo)項(xiàng)目i中所有標(biāo)簽的數(shù)量總和;I表示整個(gè)項(xiàng)目的數(shù)量。
為了量化兩個(gè)項(xiàng)目間的相似性,本文提出將目標(biāo)項(xiàng)目所有重要標(biāo)簽與另一個(gè)項(xiàng)目的重要標(biāo)簽分別對(duì)應(yīng)相乘累和的方法,計(jì)算所得值越大相似度越高,反之則越低。M2相似性具體計(jì)算過(guò)程為首先通過(guò)標(biāo)簽的重要度找到目標(biāo)項(xiàng)目的重要標(biāo)簽,然后將目標(biāo)項(xiàng)目與其他項(xiàng)目按照重要標(biāo)簽的數(shù)量比例對(duì)應(yīng)相乘,同時(shí)并乘上該標(biāo)簽的重要度數(shù)值。故本文提出的M2相似性定義方法不同于傳統(tǒng)相似性如曼哈頓距離、余弦距離的計(jì)算方法,并且有助于下文提及的評(píng)分預(yù)測(cè)算法更快速地預(yù)測(cè)出目標(biāo)用戶的評(píng)分。該相似性的計(jì)算公式如式(6)所示:
(6)
其中:Mi, j2為目標(biāo)項(xiàng)目i和其他項(xiàng)目j之間的相似性;q為重要標(biāo)簽數(shù);Lj,t為其他項(xiàng)目j中標(biāo)簽t的數(shù)量;Sj為其他項(xiàng)目j中所有標(biāo)簽的數(shù)量總和。
參考KNN算法用于預(yù)測(cè)用戶評(píng)分的思想,此處用來(lái)尋找k個(gè)鄰近的項(xiàng)目,這樣做的好處是使用這k個(gè)鄰近項(xiàng)目用戶的評(píng)分來(lái)預(yù)測(cè)出目標(biāo)用戶的評(píng)分,可以減少評(píng)分預(yù)測(cè)算法的計(jì)算量。首先根據(jù)式(6)定義的M2相似性方法計(jì)算出項(xiàng)目間的相似性,然后使用Rank排序方法對(duì)相似度排序即可找到每個(gè)項(xiàng)目M={m0,m1,…,m(m-1)}的前k個(gè)最鄰近項(xiàng)目,在表3中列舉了項(xiàng)目m0的兩個(gè)鄰近項(xiàng)目。
表3 項(xiàng)目 m0 的兩個(gè)鄰近項(xiàng)目示例
如表3所示,k=2,目標(biāo)項(xiàng)目m0的最鄰近兩個(gè)項(xiàng)目為m2、m3。
基于這k個(gè)鄰近項(xiàng)目的用戶評(píng)分,使用參考Slope One加權(quán)算法設(shè)計(jì)的新評(píng)分預(yù)測(cè)算法預(yù)測(cè)用戶評(píng)分的方法本文稱為M2_KSP算法。M2_KSP算法不同于Slope One加權(quán)算法,Slope One加權(quán)算法采用項(xiàng)目間的加權(quán)平均評(píng)分差異來(lái)預(yù)測(cè)評(píng)分,側(cè)重于計(jì)算目標(biāo)項(xiàng)目與單個(gè)項(xiàng)目之間加權(quán)平均評(píng)分的差異;而本文M2_KSP算法則側(cè)重于計(jì)算目標(biāo)項(xiàng)目與所有鄰近項(xiàng)目整體的加權(quán)平均評(píng)分的差異。本文算法的計(jì)算過(guò)程為:首先計(jì)算目標(biāo)項(xiàng)目平均評(píng)分,然后計(jì)算出與鄰近項(xiàng)目整體加權(quán)平均評(píng)分的差值,最后將這個(gè)差值加到目標(biāo)用戶的平均評(píng)分上,由此預(yù)測(cè)出目標(biāo)用戶的評(píng)分。M2_KSP算法的時(shí)間復(fù)雜度為O(n+m),相對(duì)于Slope One加權(quán)算法以及KNN算法的時(shí)間復(fù)雜度更低,其評(píng)分預(yù)測(cè)方法的表達(dá)式如式(7)所示:
(7)
表4 目標(biāo)項(xiàng)目 m0 的評(píng)分矩陣
本文所提出的融合項(xiàng)目標(biāo)簽相似性的協(xié)同過(guò)濾推薦算法(M2_KSP)的運(yùn)算步驟如下所示:
輸入 標(biāo)簽矩陣L和評(píng)分矩陣R,鄰近項(xiàng)目數(shù)k,目標(biāo)用戶i,目標(biāo)項(xiàng)目j。
1) 根據(jù)式(6)生成項(xiàng)目間的相似性矩陣F;
2) 根據(jù)F矩陣形成k個(gè)鄰近項(xiàng)目評(píng)分矩陣;
3) 初始化csum=0;c=0;sum=0;s=0;bsum=0;b=0;
4) fora=0 ton-1
5)csum+=ra, j;c++;
6)
7) end fora
8) forf=0 tom-1
9)sum+=ri, f;s++;
10)
11) end forf
12) forb=0 tok-1
13) if(ri,b<1E-6)
14) continue;
15) end if
16)
17) end forb
18)
19)
本文選擇的是GroupLens Research小組所收集的最新的帶標(biāo)簽的MovieLens數(shù)據(jù)集(http://grouplens.org/datasets/movielens/),該數(shù)據(jù)集含有24 404 096個(gè)評(píng)分,668 953個(gè)標(biāo)簽和40 110部電影。在本次實(shí)驗(yàn)中,隨機(jī)從該數(shù)據(jù)集中選取了前1 000部電影和與之對(duì)應(yīng)相關(guān)的11 102個(gè)用戶,7 951個(gè)標(biāo)簽作為實(shí)驗(yàn)的數(shù)據(jù)來(lái)進(jìn)行實(shí)驗(yàn)。本次實(shí)驗(yàn)數(shù)據(jù)集的稀疏度為97.65%,實(shí)驗(yàn)數(shù)據(jù)的用戶評(píng)分比例如圖1所示。
圖1 用戶評(píng)分比例
平均絕對(duì)誤差(Mean Absolute Error, MAE)是評(píng)價(jià)推薦算法質(zhì)量的標(biāo)準(zhǔn)之一,作為推薦系統(tǒng)的評(píng)價(jià)指標(biāo)被廣泛地應(yīng)用于算法質(zhì)量的評(píng)價(jià)[16]。本文使用MAE作為推薦算法準(zhǔn)確性的度量,在實(shí)驗(yàn)結(jié)果中MAE的值越小表示該算法的平均絕對(duì)誤差越小,即該算法的準(zhǔn)確度越好。MAE的計(jì)算公式如式(8)所示:
(8)
推薦算法的另一個(gè)評(píng)價(jià)指標(biāo)是均方根誤差(Root Mean Square Error, RMSE)[17]。本文為更準(zhǔn)確地衡量該算法的預(yù)測(cè)效果,也使用了RMSE評(píng)價(jià)方法來(lái)衡量預(yù)測(cè)值與真實(shí)值之間的偏差。RMSE的計(jì)算公式如式(9)所示:
(9)
在實(shí)驗(yàn)過(guò)程中,首先使用Leave-One-Out交叉驗(yàn)證方法將實(shí)驗(yàn)的數(shù)據(jù)劃分為訓(xùn)練集和測(cè)試集。為了找到最優(yōu)的標(biāo)簽重要度閾值a,進(jìn)行了閾值a在不同取值時(shí)對(duì)算法的準(zhǔn)確度所造成影響的實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果如圖2所示。接著通過(guò)設(shè)置最優(yōu)閾值a獲得項(xiàng)目的重要標(biāo)簽并且使用重要標(biāo)簽的數(shù)量計(jì)算項(xiàng)目間相似度。然后,對(duì)相似度進(jìn)行rank排序獲得目標(biāo)項(xiàng)目的k個(gè)鄰近項(xiàng)目。最后,基于這k個(gè)鄰近項(xiàng)目的評(píng)分,使用新定義計(jì)算目標(biāo)項(xiàng)目與整個(gè)鄰近項(xiàng)目的平均評(píng)分差異的方法預(yù)測(cè)用戶的評(píng)分。同時(shí),為了比較該算法的預(yù)測(cè)性能,在相同的數(shù)據(jù)集上將本文提出的M2_KSP算法與其他推薦算法進(jìn)行實(shí)驗(yàn)。
對(duì)比算法包括:基于曼哈頓距離的KNN算法(稱為M_KNN)、使用M2相似性作為權(quán)重的Slope One加權(quán)算法(稱為M2_Slope One算法),以及本文M2_KSP算法。M_KNN算法是使用曼哈頓距離計(jì)算相似度的KNN協(xié)同過(guò)濾推薦算法,M2_Slope One是一種使用M2相似性的Slope One加權(quán)協(xié)同過(guò)濾推薦算法,這些算法都是比較流行的協(xié)同過(guò)濾推薦算法。
在M2_KSP算法中通過(guò)設(shè)置閾值a來(lái)找到項(xiàng)目的重要標(biāo)簽,具體方法為判斷項(xiàng)目的標(biāo)簽重要度是否大于a,若是則表明該標(biāo)簽為重要標(biāo)簽。閾值選取越合理越能獲得真正重要的標(biāo)簽。本文為了設(shè)置最佳閾值a進(jìn)行了相關(guān)實(shí)驗(yàn),結(jié)果如圖2所示a的取值為每個(gè)標(biāo)簽的權(quán)重在項(xiàng)目標(biāo)簽權(quán)重總值中所占的比例,隨著k值的變化在a的取值從大到小的過(guò)程中,所取得的算法的平均絕對(duì)誤差值形成折線變化趨勢(shì),且每條折線間的距離越來(lái)越靠近,當(dāng)a的取值分別為0.001、0.000 5、0.000 3時(shí)這三條折線幾乎完全重合,可學(xué)習(xí)到該算法最佳的閾值范圍為0.000 3~0.001,算法的閾值設(shè)置在這個(gè)范圍內(nèi)更加合理,故本文算法的最優(yōu)閾值a取值為0.000 5。
圖2 在閾值a影響下算法的平均絕對(duì)誤差
算法MAERMSEM_KNN0.7640.974M2_SlopeOne0.7270.952M2_KSP0.6880.903
由圖3和表5可知,在MAE評(píng)價(jià)標(biāo)準(zhǔn)下,隨著k的不同取值,本文提出的基于a的最優(yōu)閾值M2_KSP算法取得的最小誤差明顯比M_KNN算法的最小誤差值小很多,即M2_KSP算法的準(zhǔn)確度明顯高于M_KNN算法,同理也略高于M2_Slope One算法。通過(guò)圖3的實(shí)驗(yàn)結(jié)果表明,M2_KSP算法是一種預(yù)測(cè)準(zhǔn)確度較好的協(xié)同過(guò)濾推薦算法。
圖3 不同算法的平均絕對(duì)誤差對(duì)比(k取10~100)
由圖4和表5可知:本文M2_KSP算法在RMSE評(píng)價(jià)標(biāo)準(zhǔn)中相對(duì)于M_KNN算法同樣具有一個(gè)相對(duì)較低的誤差值,并且在k取值大于30時(shí),M2_KSP算法的誤差值低于M2_Slope One算法,由此再次驗(yàn)證了M2_KSP算法預(yù)測(cè)精度好于M_KNN算法,同時(shí)也略優(yōu)于M2_Slope One算法。再結(jié)合圖3的實(shí)驗(yàn)結(jié)果綜合得出,本文提出的M2_KSP協(xié)同過(guò)濾算法的推薦準(zhǔn)確度是更加精準(zhǔn)的,推薦的質(zhì)量也是更加優(yōu)秀的。
圖4 不同算法的均方根誤差對(duì)比
為了觀測(cè)M2_KSP算法的穩(wěn)定性,進(jìn)行了加大k取值范圍的實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果如圖5所示。
圖5 不同算法的平均絕對(duì)誤差對(duì)比(k取100~900)
從圖5中三種算法的誤差對(duì)比分析可知:在相同數(shù)據(jù)集下M2_KSP算法在不同的k值下的平均絕對(duì)誤差值的變化最小,并且穩(wěn)定在最小的誤差值范圍內(nèi);但是M2Slope One算法取得的MAE值變化幅度則更大、穩(wěn)定性更差;M_KNN算法取得的MAE值變化幅度最大且波動(dòng)在最大的誤差值范圍內(nèi)、穩(wěn)定性最差。所以本文提出的M2_KSP算法相比而言具有更好的穩(wěn)定性。綜上所述,M2_KSP算法無(wú)論是在MAE評(píng)價(jià)標(biāo)準(zhǔn)下還是在RMSE評(píng)價(jià)標(biāo)準(zhǔn)下都表現(xiàn)出更精確的預(yù)測(cè)評(píng)分準(zhǔn)確度、更好的推薦質(zhì)量、更優(yōu)秀的算法穩(wěn)定性,故本文提出的M2_KSP算法是一種可行有效的、具有更高準(zhǔn)確性和更好穩(wěn)定性的協(xié)同過(guò)濾推薦算法。
本文參考KNN算法的思想,首先依據(jù)重要標(biāo)簽數(shù)量定義了項(xiàng)目間M2相似性,該相似性旨在尋找目標(biāo)項(xiàng)目最鄰近的k個(gè)項(xiàng)目。然后基于這k個(gè)鄰近項(xiàng)目用戶的評(píng)分,并通過(guò)對(duì)Slope One加權(quán)算法的研究設(shè)計(jì)了M2_KSP評(píng)分預(yù)測(cè)算法。本文算法依據(jù)KNN算法思想和Slope One加權(quán)算法理論設(shè)計(jì)而成,故具有一定的理論依據(jù),同時(shí)也結(jié)合了這兩個(gè)推薦算法各自的優(yōu)點(diǎn),在減少算法計(jì)算量的同時(shí)又保證了算法的簡(jiǎn)單性。實(shí)驗(yàn)結(jié)果表明,本文算法表現(xiàn)出了更好的準(zhǔn)確性,符合預(yù)期的猜想,并且還具有很好的穩(wěn)定性??偠灾?本文算法具有更精確的準(zhǔn)確度、更優(yōu)秀的推薦質(zhì)量和良好的穩(wěn)定性。從圖3~4中可知隨著k值變大,算法的誤差率逐漸降低,即評(píng)分?jǐn)?shù)據(jù)量越多算法的預(yù)測(cè)準(zhǔn)確度越高,而目前用戶評(píng)分矩陣比較稀疏,計(jì)劃未來(lái)在減小評(píng)分矩陣的稀疏度上能提出好的方案。
由于本文算法是采用Leave-One-Out交叉驗(yàn)證方法,該方法在數(shù)據(jù)的樣本數(shù)量較大時(shí)需要消耗的時(shí)間較多,未來(lái)為了更好地實(shí)現(xiàn)實(shí)時(shí)的推薦可以考慮采用并行化計(jì)算方法來(lái)減少計(jì)算所需的時(shí)間。
參考文獻(xiàn)(References)
[1] RICCI F, ROKACH L, SHAPIRA B. Recommender systems: introduction and challenges[M]// RICCI F, ROKACH L, SHAPIRA B. Recommender Systems Handbook. Berlin: Springer, 2015: 1-34.
[2] BOBADILLA J, ORTEGA F, HERNANDO A, et al. Recommender systems survey[J]. Knowledge-Based Systems, 2013, 46: 109-132.
[3] JEONG B, LEE J, CHO H. Improving memory-based collaborative filtering via similarity updating and prediction modulation[J]. Information Sciences, 2010, 180(5): 602-612.
[4] ZHANG H R, MIN F, WANG S S. A random forest approach to model-based recommendation[J]. Journal of Information and Computational Science, 2014, 11(15): 5341-5348.
[5] Lü L, MEDO M, CHI H Y, et al. Recommender systems[J]. Physics Reports, 2012, 519(1): 1-49.
[6] PIRASTEH P, JUNG J J, HWANG D. Item-based collaborative filtering with attribute correlation: a case study on movie recommendation[C]// ACIIDS 2014: Proceedings of the 6th Asian Conference on Intelligent Information and Database Systems. Berlin: Springer, 2014: 245-252.
[7] BASU A, VAIDYA J, KIKUCHI H. Perturbation based privacy preserving slope one predictors for collaborative filtering[C]// IFIPTM 2012: Proceedings of the 6th IFIP WG 11.11 International Conference on Trust Management VI. Berlin: Springer, 2017, 374: 17-35.
[8] KIM H N, JI A T, HA I, et al. Collaborative filtering based on collaborative tagging for enhancing the quality of recommendation[J]. Electronic Commerce Research and Applications, 2010, 9(1): 73-83.
[9] PITSILIS G, WANG W. Harnessing the power of social bookmarking for improving tag-based recommendations [J]. Computers in Human Behavior, 2015, 50: 239-251.
[10] CAWLEY G C. Leave-one-out cross-validation based model selection criteria for weighted LS-SVMs[C]// IJCNN 2006: Proceedings of the 2006 International Joint Conference on Neural Networks. Piscataway, NJ: IEEE, 2006: 1661-1668.
[11] ZHENG M, MIN F, ZHANG H R, et al. Fast recommendations with the M-distance[J]. IEEE Access, 2016, 4: 1464-1468.
[12] 李淋淋,倪建成,于蘋蘋, 等. 基于聚類和Spark框架的加權(quán)Slope One算法[J]. 計(jì)算機(jī)應(yīng)用, 2017, 37(5): 1287-1291, 1310.(LI L L, NI J C, YU P P, et al. Weighted Slope One algorithm based on clustering and Spark framework[J]. Journal of Computer Applications, 2017, 37(5): 1287-1291, 1310.)
[13] TIAN S, OU L. An improved slope one algorithm combining KNN method weighted by user similarity[C]// WAIM 2016: Proceedings of the 2016 International Conference on Web-Age Information Management. Berlin: Springer, 2016: 88-98.
[14] 李鎮(zhèn)君, 周竹榮. 基于Document Triage的TF-IDF算法的改進(jìn)[J]. 計(jì)算機(jī)應(yīng)用, 2015, 35(12): 3506-3510, 3514.(LI Z J, ZHOU Z R. Improvement of term frequency-inverse document frequency algorithm based on Document Triage[J]. Journal of Computer Applications, 2015, 35(12): 3506-3510, 3514.)
[15] ANIDORIFON L, SANTOSGAGO J, CAEIRORODRIGUEZ M, et al. Recommender systems[J]. Communications of the ACM, 2015, 40(3): 56-58.
[16] CREMONESI P, GARZOTTO F, NEGRO S, et al. Looking for “Good” recommendations: a comparative evaluation of recommender systems[C]// INTERACT 2011: Proceedings of the 13th IFIP TC 13 International Conference on Human-Computer Interaction, LNCS 6948. Berlin: Springer, 2017: 152-168.
This work is partially supported by the National Natural Science Foundation of China (41674141).