蘇 湛,陳學(xué)謙,艾 均,黃 忠
上海理工大學(xué)光電信息與計算機工程學(xué)院,上海200093
隨著互聯(lián)網(wǎng)可用信息的爆炸式增長,利用有效手段訪問和處理信息變得至關(guān)重要。推薦系統(tǒng)(recommender systems,RS)可以幫用戶篩選和過濾信息,找到感興趣的物品。推薦系統(tǒng)的任務(wù)是預(yù)測目標(biāo)用戶對待預(yù)測物品的評分或?qū)δ繕?biāo)用戶進行物品推薦。預(yù)測是指通過預(yù)測用戶對一個新物品的評價或評分,來判斷用戶是否會喜歡某個物品。推薦是指給用戶推薦一個可能會喜歡的物品清單[1]。如果推薦工作得當(dāng),用戶可以更高效、方便地找到自己需要的物品或信息,商家也可以將自己的產(chǎn)品提供給真正感興趣的用戶,從而提高效益、節(jié)約成本。推薦算法在網(wǎng)站[2]、音樂[3]、電影[4]等多個領(lǐng)域得到了廣泛的研究和應(yīng)用。因此,關(guān)于推薦系統(tǒng)性能提升的研究具有重要意義。
目前推薦系統(tǒng)包括基于協(xié)同過濾的推薦,基于內(nèi)容的推薦技術(shù)和混合推薦技術(shù)三類[5]。
基于協(xié)同過濾算法推薦系統(tǒng)又可以分為基于記憶的協(xié)同過濾算法(memory-based collaborative filtering,Memory-Based CF)和基于模型的協(xié)同過濾算法(model-based collaborative filtering,Model-Based CF)[6]。
基于記憶的協(xié)同過濾算法包括基于用戶的協(xié)同過濾算法(user-based,CF)[7]和基于物品的協(xié)同過濾算法(item-based,CF)[8]。基于用戶的協(xié)同過濾算法主要利用評分?jǐn)?shù)據(jù)來計算用戶之間的相似性,根據(jù)相似性選擇目標(biāo)用戶的鄰居用戶,通過鄰居用戶的評分信息預(yù)測目標(biāo)用戶對待預(yù)測物品的評分值[9]。計算相似性的常用方法有Pearson 相似系數(shù)、余弦相似度、歐氏距離等[1]?;谖锲返膮f(xié)同過濾算法則是通過計算物品之間的相似性,對目標(biāo)用戶進行推薦[10]。
基于模型的協(xié)同過濾算法包括基于聚類模型[11]、最大熵模型[12]和矩陣分解[13]等協(xié)同過濾算法?;谀P偷膮f(xié)同過濾算法通過數(shù)據(jù)降維、抽象特征、概率統(tǒng)計等方法與機器學(xué)習(xí)模型相結(jié)合[14]。通過建模,用已有的部分稀疏數(shù)據(jù)來預(yù)測空白物品和數(shù)據(jù)之間的評分關(guān)系,找到評分最高的物品推薦給用戶。文獻(xiàn)[15] 提出的Slope One 算法是基于模型的協(xié)同過濾算法,通過計算物品之間的距離,然后以線性方式進行預(yù)測。
基于內(nèi)容的推薦算法是應(yīng)用最早的推薦算法,主要應(yīng)用于信息檢索和信息過濾[16],又可以分為基于啟發(fā)式和基于模型兩類。基于啟發(fā)式的算法有K 最鄰近(K-nearest neighbor,KNN)算法和聚類算法,基于模型的算法有貝葉斯、聚類算法和神經(jīng)網(wǎng)絡(luò)等?;趦?nèi)容的推薦算法基本思路是通過用戶過去喜歡的物品,為用戶去推薦和他過去喜歡的物品相似的物品?;趦?nèi)容的推薦算法將物品的屬性分解成多個標(biāo)簽,分析目標(biāo)用戶評價過的物品所對應(yīng)的行為信息(如評論、點贊、收藏、加購物車、購買等),通過尋找出與過去喜歡相似的物品生成推薦列表。其優(yōu)點是用戶之間具有獨立性、新的物品可以立刻得到推薦,但也存在物品特征提取難、無法挖掘用戶潛在興趣、冷啟動等問題。
混合推薦技術(shù)主要分為加權(quán)型、切換型、交叉型、特征組合型、瀑布型、特征增強型、元層次型等[17]。一些研究表明,混合RS 算法比單獨基于內(nèi)容或CF 算法能給用戶更好的推薦。盡管過去幾年推薦系統(tǒng)領(lǐng)域的研究數(shù)量不斷增長,但基于內(nèi)容的方法和CF 方法仍然存在一些挑戰(zhàn)。而混合技術(shù)通過將多種算法結(jié)合,克服了單個算法的缺點,改進了推薦系統(tǒng)的性能,能夠達(dá)到預(yù)期的效果[18]。然而,混合推薦技術(shù)還存在復(fù)雜度高、適用性低等缺點。
近年來,深度學(xué)習(xí)技術(shù)發(fā)展快速,已成為數(shù)據(jù)挖掘和機器學(xué)習(xí)領(lǐng)域的新興熱點,極大地改變了推薦體系結(jié)構(gòu),并為提高推薦系統(tǒng)的性能帶來了更多機會。深度學(xué)習(xí)可以捕捉非線性的用戶項關(guān)系,將更復(fù)雜的抽象編碼表示為更高層的數(shù)據(jù)[19],但也存在可解釋性差、時間復(fù)雜度高等問題。
隨著時代的發(fā)展,出現(xiàn)了越來越多的互聯(lián)網(wǎng)應(yīng)用與服務(wù),當(dāng)推薦系統(tǒng)面對種類繁多的任務(wù)時,難免會暴露一些問題。比如:預(yù)測或排序準(zhǔn)確性低、準(zhǔn)確性與多樣性難以同時提高、算法可擴展性不足、冷啟動、稀疏數(shù)據(jù)的處理、保護用戶隱私等[11]。
本文針對推薦系統(tǒng)中準(zhǔn)確性低、算法可擴展性不足的問題,提出了基于用戶相似性選擇及標(biāo)簽距離(user similarity selection and label distance,SSLD)算法。該算法首先在數(shù)據(jù)集中測試得到最佳的相似性閾值,并以該閾值為基準(zhǔn)對用戶進行相似性的篩選,選出合適的用戶作為待預(yù)測用戶的鄰居。然后利用物品標(biāo)簽信息,將用戶對物品的評分映射為用戶對物品標(biāo)簽的評分,從而計算出用戶距離。最后改進并利用距離預(yù)測公式進行預(yù)測。
本文基于距離模型算法的基礎(chǔ)上進行改進,例如Slope One 算法計算了所有用戶之間的距離,沒有使用用戶之間的相似性。本文將用戶相似性引入該算法,同時將用戶之間對物品的評分距離演化成用戶之間對物品不同標(biāo)簽的評分距離,形成基于用戶相似性選擇及標(biāo)簽距離的算法。算法的整體思想結(jié)構(gòu)如圖1 所示,先將相似性大于閾值的用戶作為鄰居,再計算待預(yù)測用戶與鄰居用戶在物品標(biāo)簽上的距離,最后預(yù)測用戶對物品的評分。
圖1 算法整體思想結(jié)構(gòu)圖Figure 1 Algorithm overall thought structure diagram
基于距離模型算法簡單,但沒有將用戶之間的相似性考慮在內(nèi),因而運行時間短、精度不高?;诖耍疚脑谒惴ㄖ屑尤胗脩舻南嗨菩?。同時考慮到每個用戶有自己不同的鄰居數(shù),用戶與不同的鄰居相似性各有不同,高相似性的鄰居值得參考,低相似性的鄰居不僅參考意義不大,還會干擾其他用戶的預(yù)測評分。為了最大化降低平均絕對誤差(mean absolute error,MAE)和均方根誤差(root mean squared error,RMSE)[20],用皮爾遜相似性[1]公式計算用戶之間的相似性。相似性的閾值設(shè)置為[-1.0,1.0],間隔為0.1,低于閾值的相似性用戶將會被篩選掉,不參與后續(xù)步驟的計算。皮爾遜相似性(PCC)、MAE 和RMSE 的計算公式如式(1)~(3) 所示。
式中:rui為用戶u對物品i的評分;為用戶u對所有物品的平均評分;Iu為用戶u看過的電影集合。
MAE 和RMSE 表示預(yù)測值與實際值的平均誤差,MAE 和RMSE 的值越小,說明預(yù)測越準(zhǔn)確。
兩個數(shù)據(jù)集中不同相似性閾值的誤差值如圖2 所示,橫坐標(biāo)表示不同的相似性閾值,縱坐標(biāo)表示誤差值的大小。圖2(a) 為Movie Lens 數(shù)據(jù)集中的誤差值,當(dāng)閾值Sh=0 時,SSLD 算法的MAE 和RMSE 值最小,預(yù)測精度最高,MAE 的值約為0.659,RMSE 的值約為0.864,預(yù)測效果最為理想。圖2(b) 為Netflix 數(shù)據(jù)集中的誤差值,當(dāng)閾值Sh=0.1 時,SSLD 算法的MAE 和RMSE 值最小,預(yù)測精度最高,MAE 的值約為0.712,RMSE 的值約為0.909,預(yù)測效果最為理想。通過圖2 也可以得知本文算法針對不同的數(shù)據(jù)集,需要尋找其最優(yōu)閾值,以獲得最優(yōu)的預(yù)測結(jié)果,不同數(shù)據(jù)集的最優(yōu)閾值會存在不同。
圖2 兩個數(shù)據(jù)集中不同相似性閾值的MAE 與RMSE 值Figure 2 MAE and RMSE values of different similarity thresholds in two datasets
傳統(tǒng)協(xié)同過濾算法往往只關(guān)注用戶對物品的評分,而忽略了物品包含標(biāo)簽等信息。因此,本文將物品標(biāo)簽信息提取出來,將用戶對物品的評分映射為用戶對不同標(biāo)簽的評分,從而提高預(yù)測精度與排序精度。
根據(jù)篩選后用戶對物品的評分,假設(shè)共有m個用戶對n個物品評過分,用戶集合表示為U,物品的集合表示為I,劃分?jǐn)?shù)據(jù)集為訓(xùn)練集Training Set 和測試集Test Set。設(shè)在推薦系統(tǒng)當(dāng)中每個物品均存在一個或多個標(biāo)簽g,g ∈G,G是標(biāo)簽的集合,設(shè)集合G的長度為t,則G={g1,g2,···,gt}。本實驗數(shù)據(jù)集中的物品為電影,共有19 個標(biāo)簽,即t=19,如表1所示。
表1 電影標(biāo)簽劃分Table 1 Movie label division
矩陣R表示一個U-I關(guān)系,R是一個m×n的實數(shù)矩陣,rui表示是用戶u對物品i的評分。同樣的構(gòu)建一個鄰接矩陣A為m×n的二值矩陣,γui為矩陣A的第u行第i列元素,取值為
每部電影均存在一個標(biāo)簽向量Gi,Gi是一個1×19 的向量,Gi=(gi1,gi2,···,gik,···,gi19),其中g(shù)ik定義為
由此,可以得到用戶、物品和物品標(biāo)簽這3 個節(jié)點構(gòu)成的復(fù)雜網(wǎng)絡(luò)。用戶和用戶之間通過物品來連接,每個用戶與多個物品相連,同樣的每個物品又可以連接多個用戶,如果某用戶評價過某物品,說明某用戶與物品之間存在連邊。用戶與標(biāo)簽節(jié)點之間也不直接相連而是通過物品節(jié)點進行連接,物品節(jié)點與標(biāo)簽節(jié)點相連說明這個物品包含有這個標(biāo)簽,否則不存在連邊。
基于上述網(wǎng)絡(luò)模型,在傳統(tǒng)推薦算法中計算出兩個用戶有共同連邊的物品評分差值,通過求連邊數(shù)平均值作為平均距離。這樣的距離不會因為預(yù)測對象的不同而存在差異,可以理解成用戶的平均距離與待測物品無關(guān),但實際每個人對不同物品會從不同的角度出發(fā)。因此,本文提出了一種基于不同標(biāo)簽度量節(jié)點之間的平均距離推薦算法。不同的平均距離定義如下:
1)全局平均距離全局平均距離是將兩用戶或兩物品之間的平均近距離分解到不同的標(biāo)簽上,不同標(biāo)簽的平均距離代表兩用戶或物品在這個標(biāo)簽上距離的大小,全局平均距離可以用來反映用戶和物品的綜合情況。
2)局部平均距離局部平均距離是根據(jù)待測物品來決定的,通過待測物品從全局平均距離當(dāng)中提取到包含標(biāo)簽的平均距離值,這也是目標(biāo)用戶進行預(yù)測的重要依據(jù)。
3)元平均距離元平均距離是平均距離的最小單位,全局平均距離和局部平均距離都是由元平均距離組成的,元平均距離是每個標(biāo)簽上所對應(yīng)的平均距離值。
本模型以基于用戶的協(xié)同過濾為例,對網(wǎng)絡(luò)中的兩個用戶節(jié)點u和v,其全局平均距離Duv為
式中:n為數(shù)據(jù)集中的物品數(shù)量;γui為用戶u對物品i是否評分;同理,γvi為用戶v對物品i是否評分;rui為用戶u對物品i的評分值;rvi為用戶v對物品i的評分值;Gi是物品i的標(biāo)簽向量。Di是一個對角矩陣,每一個對角元素表示物品i包含標(biāo)簽gt被用戶評價次數(shù)的倒數(shù),計算公式為
式中:Duv是用戶的全局平均距離,該值為一個向量,由元平均距離組成,每個元平均距離就是某個標(biāo)簽上的距離的大小;Duv從整體上反映了用戶之間的距離情況。
在獲得篩選過的用戶對的全局平均距離后,可以用目標(biāo)用戶u對待測物品i進行預(yù)測評分。預(yù)測可以分為兩個步驟:
步驟1生成用戶對局部平均距離由于得到的Duv是全局平均距離,并不能直接參與目標(biāo)用戶預(yù)測物品,全局平均距離反映的是用戶之間的綜合距離情況,對于某個特定物品,不會有全部的標(biāo)簽特征,它只能使用局部平均距離反映該物品的距離情況,所以最重要的是對待測物品生成對應(yīng)的局部平均距離。例如,在目標(biāo)用戶u預(yù)測待測物品i時,需要計算目標(biāo)用戶u在當(dāng)前預(yù)測環(huán)境當(dāng)中包含物品i的特征的局部平均距離,相應(yīng)公式為
步驟2預(yù)測得到所有用戶的標(biāo)量平均距離后,按照該值對目標(biāo)用戶進行評分預(yù)測,預(yù)測公式為
為了比較不同預(yù)測方法的結(jié)果,本文選取Movie Lens 和Netflix 兩個著名的數(shù)據(jù)集[12]對多個算法進行性能測試。
Movie Lens 數(shù)據(jù)集從電影推薦網(wǎng)站中收集了由162 000 名用戶,62 000 部電影,共25 000 000條評分信息組成的數(shù)據(jù),在本實驗中采用100 kB 數(shù)據(jù)集,其中包括了610 個用戶對9 742 部物品的100 836 條評分?jǐn)?shù)據(jù)。
Netflix 數(shù)據(jù)集是Netflix 舉辦公開競賽算法中所用的數(shù)據(jù)集,旨在評選出預(yù)測電影用戶收視率的最佳算法。Netflix 數(shù)據(jù)集包含了48 萬個匿名用戶對1.7 萬個電影標(biāo)題超過1 億次評分。其中評分范圍為1~5,間隔為1。本文隨機抽取1 000 個用戶作為實驗數(shù)據(jù)集進行實驗。
為了從有限的數(shù)據(jù)中更好地評估模型性能,本文基于十折交叉驗證將數(shù)據(jù)集分成10 份,每次都留不同的1 份作為測試集,剩余9 份作為訓(xùn)練集,進行10 次實驗,最后取平均值。通過與對比算法預(yù)測結(jié)果在不同評價指標(biāo)下的對比來驗證本文算法的性能。
為了證明本算法的有效性,本文將SSLD 算法與Slope One 算法、用戶觀點傳播(user opinion spreading,UOS)算法[21]、分配協(xié)同過濾(resource allocation,RA)算法[22]、基于相似性網(wǎng)絡(luò)的社團發(fā)現(xiàn)與預(yù)測加權(quán)(modulized improved opinion spreading,MIOS)算法[23]、基于巴氏距離協(xié)同過濾(collaborative filtering based on bhattacharyya distance,Bhattacharyya)[24]、基于信息熵的協(xié)同過濾(using entropy for similarity measures in collaborative filtering,Entropy)[25]、基于用戶行為概率協(xié)同過濾(rating prediction in recommender systems based on user behavior probability,UBP)[26]等幾種算法進行比較。
1)Slope One 算法核心思想是計算出兩個用戶之間的平均距離,然后以y=x+b的方式來進行預(yù)測。
2)用戶觀點傳播算法將用戶觀點分為正面和負(fù)面,從而判斷用戶之間的相似程度。
3)資源分配協(xié)同過濾算法是利用推薦系統(tǒng)當(dāng)中鏈路預(yù)測的概念來提高性能。其思想是在計算用戶的相似性時,受歡迎的物品應(yīng)當(dāng)影響最小,因為大多數(shù)用戶喜歡受歡迎的物品,所以它們不適合做被推薦時的參考物品。RA 是一種基于受歡迎程度的局部相似性度量,它對兩個用戶的值取決于兩個用戶的共同評分物品評分程度。共同評分的物品越受歡迎,其RA 相似性指數(shù)就越低。而且,根據(jù)共同評分的物品數(shù)量的增加,RA 的值增加,計算出的相似性更可信。
4)基于相似性網(wǎng)絡(luò)的社團發(fā)現(xiàn)與預(yù)測加權(quán)算法通過考慮用戶類型選擇偏好之間的相似性、用戶評級分布之間的相似性以及基于用戶評級的物品之間的相似性來構(gòu)建復(fù)雜網(wǎng)絡(luò)。將相似性計算結(jié)果作為鏈路的權(quán)值,將對象視為網(wǎng)絡(luò)中的節(jié)點。在此基礎(chǔ)上,可以獲得社區(qū)檢測結(jié)果,并考慮社區(qū)信息進行鏈路預(yù)測。
5)基于巴氏距離協(xié)同過濾考慮了兩個用戶間評分值的概率之間的相關(guān)性,又考慮了共同評價物品的分?jǐn)?shù)相似性,最后還加上了用戶之間的杰卡德相似性。
6)基于信息熵的協(xié)同過濾算法將信息熵概念引入至相似性的計算,通過計算用戶之間的信息熵,改進用戶之間的相似性。
7)基于用戶行為概率協(xié)同過濾算法考慮用戶間共同評分的基礎(chǔ)上,進一步考慮了用戶對不同物品所含各類標(biāo)簽的選擇概率。
本實驗采用平均絕對誤差(mean absolute error,MAE)、均方根誤差(root mean squared error,RMSE)來評估算法的預(yù)測準(zhǔn)確性。采用半衰期效用指標(biāo)(half life utility,HLU)[27]、平均折扣累計利潤(discounted cumulative gain,NDCG)[28]和排序準(zhǔn)確度(sorting accuracy,SA)來評估算法的排序準(zhǔn)確性,最后在算法多樣性和可拓展性上進行比較。
2.3.1 預(yù)測準(zhǔn)確性指標(biāo)
MAE 和RMSE 表示預(yù)測值與實際值的平均誤差,MAE、RMSE 值越小,說明預(yù)測越準(zhǔn)確。MAE 和RMSE 如式(2)~(3) 所示。
2.3.2 排序準(zhǔn)確性指標(biāo)
HLU 表示推薦物品的評分與真實評分的差距,同時HLU 認(rèn)為用戶在瀏覽推薦物品時,用戶興趣會隨著物品排序下降而呈指數(shù)形式下降,用戶興趣下降的越慢,HLU 得分越高,所以HLU 得分也越大越好。HLU 計算公式為
式中:m為推薦列表的數(shù)目;rui為用戶u對物品i的評分;為用戶u對物品評分的平均值。h為系統(tǒng)的半衰期,本文h取2。HLU 得分越大,說明系統(tǒng)在有限的個數(shù)要求下的排序結(jié)果越好。
NDCG 認(rèn)為,系統(tǒng)按照用戶的喜愛程度排序能夠增加用戶體驗,將用戶喜歡的物品排在前面能夠獲得較高的得分,排序越往后,得分越低。NDCG 的公式為
式中:DCG 是一個用戶列表的排序得分,前b個結(jié)果重要程度相同,Ri是用戶的喜歡得分,如果用戶對該物品的評分超過平均值,表示用戶喜歡,Ri取值為1,否則取值為0。NDCG 是DCG 的歸一化,取值為0~1 之間,其值越大,說明系統(tǒng)將用戶喜愛的電影排在前面的能力越強,系統(tǒng)推薦能力越好。
在評判一個推薦系統(tǒng)的效果時,對物品的預(yù)測評分準(zhǔn)確與否固然是一個很重要的判斷依據(jù),但是當(dāng)遇到需要為用戶提供一個包含多個物品的列表的組合推薦情況時,這個列表中多個物品之間的相對順序也是一個重要的判斷依據(jù)。排序精度為預(yù)測評分生成的推薦列表的準(zhǔn)確度,從前(上)到后(下),用戶的實際評分應(yīng)該從高到低。
假設(shè)在一個推薦列表中,若某個物品的位置與其評分在此列表中的排名相同,則可判斷這個物品處在此列表中正確的位置上,正確取1、錯誤取0,具體判斷公式為
式中:Si、Sj為推薦列表中用戶對第i、j個位置物品的實際評分;I為指示函數(shù)如式(18) 所示。當(dāng)括號內(nèi)式子成立時,函數(shù)值取1,反之取0;L為推薦列表;OS(Si) 為推薦列表中第i個位置的物品的判斷值。
按照這種假設(shè),對于某個推薦列表,如果其中物品的排序與用戶對這些物品的評分排序越接近,則認(rèn)為推薦系統(tǒng)的SA 值越高。因此SA 值越高代表推薦系統(tǒng)越能把更準(zhǔn)確的物品優(yōu)先推薦給用戶。排序準(zhǔn)確率能反映推薦系統(tǒng)對組合推薦的總體正確率,在計算完推薦列表中每個物品的判斷值后,再利用式(19) 即可得到此列表的SA 值。
式中:分子可解釋為推薦列表中物品排序正確的總數(shù)目;分母為當(dāng)前推薦列表的長度,即列表中物品的數(shù)目;由此可知SA 值越高越好。
2.3.3 多樣性指標(biāo)
多樣性是衡量單個推薦列表中物品之間差異程度的評價指標(biāo)。本文采用衡量物品度值大小的方法來衡量推薦列表的多樣性。列表里兩個被推薦的物品的度值差異越大,物品之間的差異就越大,推薦列表的多樣性也就越大。用來度量單個推薦列表公式為
式中:n是推薦列表中物品數(shù)目;ki是物品i的度值;是當(dāng)前推薦列表所有物品度值平均值。分子也是推薦列表中物品度值的樣本標(biāo)準(zhǔn)差,標(biāo)準(zhǔn)差越大代表列表內(nèi)度值分布越廣泛。Diversity 為最終的多樣性結(jié)果,其值越大,代表推薦列表多樣性越好。
2.3.4 可擴展性指標(biāo)
本文可擴展性指標(biāo)為算法花費時間和需要鄰居的數(shù)目(Neighbor-Used)。算法花費時間越少,表明算法在實際應(yīng)用中可以更快速地為目標(biāo)用戶進行推薦。Neighbor-Used 表明選取多少個鄰居保存到數(shù)據(jù)庫中對目標(biāo)用戶進行預(yù)測,選取的鄰居越少,占用系統(tǒng)資源越少,算法的可拓展性越好。
2.4.1 預(yù)測準(zhǔn)確性指標(biāo)對比
圖3 表示SSLD 算法和不同算法在兩個數(shù)據(jù)集上的MAE 和RMSE 值。圖3 中橫坐標(biāo)表示鄰居數(shù)量,單位為個。圖3(a)~(b) 表示各算法在Movie Lens 數(shù)據(jù)集和Netflix 數(shù)據(jù)集中的MAE 值,圖3(c)~(d) 表示各算法在Movie Lens 數(shù)據(jù)集和Netflix 數(shù)據(jù)集中的RMSE值。Slope One 算法基于所有用戶之間的距離進行預(yù)測,所以預(yù)測準(zhǔn)確性指標(biāo)不會隨著鄰居數(shù)的增加而改變。本文算法在預(yù)測之前對符合相似性閾值的用戶進行篩選,并計算用戶間的距離,所以預(yù)測準(zhǔn)確性指標(biāo)也不受鄰居數(shù)量的影響。
圖3 兩個數(shù)據(jù)集中各算法的MAE 和RMSE 值Figure 3 MAE and RMSE values for each algorithm in the two datasets
相較于Slope One 來說,SSLD 算法的MAE 值在Movie Lens 數(shù)據(jù)集上平均降低了1.84%,在Netflix 數(shù)據(jù)集上平均降低了2.01%。相較于其他算法,SSLD 算法在兩個數(shù)據(jù)集上MAE 的值都有所降低。
相比于Slope One 算法,SSLD 算法的RMSE 值在Movie Lens 數(shù)據(jù)集上平均提高了1.72%,在Netflix 數(shù)據(jù)集上平均提升了1.62%。RMSE 加大了誤差的懲罰,實驗表明SSLD 算法能提高預(yù)測的準(zhǔn)確度。表2 和3 表示SSLD 在兩個數(shù)據(jù)集上相比于其他算法MAE、RMSE的降低百分比。降低百分比數(shù)值越大,則說明SSLD 相較于對比算法預(yù)測精確度提升越大。從表2 和3 中可以得出SSLD 算法的預(yù)測準(zhǔn)確性優(yōu)于其他算法。
表2 Movie Lens 數(shù)據(jù)集中SSLD 算法相比對比算法MAE 與RMSE 降低百分比Table 2 Percentage reduction of MAE and RMSE of SSLD algorithm in Movie Lens dataset compared with other algorithms
表3 Netflix 數(shù)據(jù)集中SSLD 算法相比對比算法MAE 與RMSE 降低百分比Table 3 Percentage reduction of MAE and RMSE of SSLD algorithm in Netflix dataset compared with other algorithms
2.4.2 排序準(zhǔn)確性指標(biāo)對比
圖4 表示了SSLD 算法和不同算法在兩個數(shù)據(jù)集中的HLU 和NDCG 結(jié)果(越大越好)。橫坐標(biāo)表示鄰居數(shù)量,單位為個。圖4(a)~(b) 表示各算法在Movie Lens 數(shù)據(jù)集和Netflix數(shù)據(jù)集中的HLU 值,圖4(a)~(b) 表示各算法在Movie Lens 數(shù)據(jù)集和Netflix 數(shù)據(jù)集中的NDCG 值。與預(yù)測準(zhǔn)確性指標(biāo)同理,Slope One 算法與SSLD 算法的排序準(zhǔn)確性指標(biāo)不受鄰居數(shù)量的影響。
圖4 兩個數(shù)據(jù)集中各算法的HLU 和NDCG 值Figure 4 HLU and NDCG values of each algorithm in the two datasets
SSLD 算法相比于其他算法HLU 指標(biāo)有顯著的提升,相比于Slope One 算法,SSLD 算法的HLU 值在Movie Lens 數(shù)據(jù)集上提高了5.06%,在Netflix 數(shù)據(jù)集上提升了3.64%,說明SSLD 算法在推薦系統(tǒng)中,生成推薦列表可以極大滿足用戶的需求。
SSLD 算法相比于其他算法的NDCG 指標(biāo)也有顯著提升,相較于Slope One 算法,SSLD算法的NDCG 值在Movie Lens 數(shù)據(jù)集上平均提高了2.22%,在Netflix 數(shù)據(jù)集上平均提升了1.38%。這同樣說明了SSLD 算法在推薦系統(tǒng)中,生成推薦列表時的相關(guān)性非常高,用戶更喜歡的物品會優(yōu)先出現(xiàn)在推薦列表的前列,推薦列表的排序質(zhì)量很高。相較于其他推薦算法來說,SSLD 算法能夠提升用戶對推薦系統(tǒng)的滿意程度。
表4 和5 表示在兩個數(shù)據(jù)集上NDCG、HLU 的提升百分比。提升百分比數(shù)值越大,說明SSLD 算法相較于對比算法排序性能提升越高。從表4 和5 中可以看出SSLD 算法的排序性能整體優(yōu)于其他算法。
表4 Movie Lens 數(shù)據(jù)集中SSLD 算法相較于對比算法HLU 與NDCG 提升百分比Table 4 Percentage improvement of HLU and NDCG of SSLD algorithm in Movie Lens data set compared with other algorithms
表5 Netflix 數(shù)據(jù)集中SSLD 算法相較于對比算法HLU 與NDCG 提升百分比Table 5 Percentage improvement of HLU and NDCG of SSLD algorithm in Netflix data set compared with other algorithms
圖5 表示SSLD 算法和不同算法在兩個數(shù)據(jù)集中的Sorting Accuracy 結(jié)果(越大越好),橫坐標(biāo)表示不同算法選取的鄰居數(shù)量,單位為個,圖5(a) 為Movie Lens 數(shù)據(jù)集中各算法在不同鄰居下的Sorting Accuracy 值,圖5(b) 為Netflix 數(shù)據(jù)集中各算法在不同鄰居下的Sorting Accuracy 值。
不難看出,在Movie Lens 數(shù)據(jù)集中,SSLD 算法的得分最高。在Netflix 數(shù)據(jù)集中,RA、MIOS、Bhattacharyya 這3 個算法在鄰居數(shù)量約為40 時,Sorting Accuracy 得分與SSLD 算法相似,但隨著鄰居數(shù)量的增加,3 個算法的得分值開始下降。綜上可以說明,SSLD 算法在排序精確度指標(biāo)上,領(lǐng)先于其他算法。
2.4.3 多樣性指標(biāo)對比
圖6 表示SSLD 算法和不同算法在兩個數(shù)據(jù)集中的Diversity 結(jié)果(值越大表示推薦的結(jié)果越新穎),橫坐標(biāo)表示不同算法選取的鄰居數(shù)量,單位為個。圖6(a) 為Movie Lens 數(shù)據(jù)集中各算法在不同鄰居下的Diversity 值,圖6(b) 為Netflix 數(shù)據(jù)集中各算法在不同鄰居下的Diversity 值。與預(yù)測準(zhǔn)確性指標(biāo)和排序準(zhǔn)確性指標(biāo)同理,Slope One 算法與SSLD 算法的多樣性性指標(biāo)不會隨著鄰居數(shù)量的增加而改變。
圖6 兩個數(shù)據(jù)集中各算法的Diversity 值Figure 6 Diversity values of each algorithm in the two data sets
由圖6 中可以看出,在Movie Lens 數(shù)據(jù)集中,SSLD 算法不如UOS 算法,與Entropy 算法接近,但相比Slope One 算法提升了1.66%。在Netflix 數(shù)據(jù)集中,也與Entropy 算法接近,但相比于Slope One 算法提升了0.86%。這表明SSLD 在實現(xiàn)低誤差的同時,可以擁有良好的多樣性。
2.4.4 可擴展性指標(biāo)對比
圖7 表示算法在兩個數(shù)據(jù)集中預(yù)測所需的鄰居用戶數(shù)量,圖7(a) 為各算法在Movie Lens數(shù)據(jù)集中預(yù)測所需要的鄰居用戶數(shù)量,圖7(b) 為各算法在Netflix 數(shù)據(jù)集中預(yù)測所需要的鄰居用戶數(shù)量。其中Slope One 和SSLD 算法使用固定的用戶數(shù)量進行預(yù)測,所以不會隨著數(shù)據(jù)集中鄰居用戶數(shù)量的增加而變化。相較于Slope One,SSLD 可以選取更少的用戶對目標(biāo)用戶的喜好物品進行預(yù)測與推薦。在兩個數(shù)據(jù)集中,Slope One 分別平均需要51 和114 個鄰居用戶。而SSLD 算法只平均需要32 和60 個鄰居用戶,大大節(jié)約了鄰居用戶數(shù)據(jù)所需要的儲存空間?;诮弲f(xié)同過濾的算法,曲線接近重合,是因為采用的鄰居數(shù)非常相似,不同的是相似性的度量值。該類算法在鄰居數(shù)量為30~40,算法可以達(dá)到最高精度,雖然在最高精度時所用鄰居數(shù)量比SSLD 約少10 個,但SSLD 具有更高的精度。
圖7 兩個數(shù)據(jù)集中各算法所需要的鄰居數(shù)量Figure 7 Number of neighbors needed for each algorithm in the two data sets
圖8 表示每個算法在兩個數(shù)據(jù)集中運行所需的時間。由圖8 可知,在Movie Lens 數(shù)據(jù)集中,SSLD 算法比近些年的算法所需的時間少。在Netflix 數(shù)據(jù)集中,SSLD 算法所需的時間最少。這表明SSLD 算法可以快速地推薦物品給目標(biāo)用戶,用戶可以更快地得到反饋。
圖8 各算法在兩個數(shù)據(jù)集中運行所需要的時間Figure 8 Time required for each algorithm to run in two data
針對推薦系統(tǒng)中存在的預(yù)測及排序精度不高、可拓展性不足等問題。本文從物品的標(biāo)簽特性出發(fā),計算物品之間的標(biāo)簽距離,同時結(jié)合相似性選擇,提出基于用戶相似性選擇及標(biāo)簽距離的算法。
實驗結(jié)果表明,與幾種最新的推薦系統(tǒng)算法相比,SSLD 算法在預(yù)測和排序準(zhǔn)確性、可擴展性方面具有顯著的優(yōu)勢。SSLD 算法可以在較短時間內(nèi),尋找少量的相似鄰居,預(yù)測和排序得更精確。例如,在兩個數(shù)據(jù)集的MAE 指標(biāo)上,SSLD 算法相比較于其他算法提升了1.71%~3.71%,在RMSE 指標(biāo)上平均提升了1.62%~3.94%,HLU 指標(biāo)上平均提升了1.64%~10.5%,在NDCG 指標(biāo)上平均提升了1.38%~5.71%。與Slope One 相比,本文方法所需的鄰居約減少了50%。同時,也揭示了在推薦系統(tǒng)中可以利用多標(biāo)簽的信息等差異,提升推薦系統(tǒng)的效果。
雖然本文算法取得了不錯的效果,但仍有不足之處。比如SSLD 在多樣性指標(biāo)中的排名表現(xiàn)并不理想,需要進一步研究SSLD 多樣性不佳的原因,可以進一步為用戶推薦新穎的物品。同時可以嘗試將深度學(xué)習(xí)等技術(shù)與本文算法進行結(jié)合,提高算法的適用性。