秦 婧,張青博,王 斌
(東北大學(xué)計(jì)算機(jī)科學(xué)與工程學(xué)院,沈陽(yáng)110169)
從1992 年的第一個(gè)郵件推薦系統(tǒng)[1]問世至今20 多年中,推薦系統(tǒng)在電商、醫(yī)療、商品、新聞等各領(lǐng)域都得到了廣泛應(yīng)用。推薦系統(tǒng)中物品被用戶評(píng)分或選擇的次數(shù)是一種典型的長(zhǎng)尾現(xiàn)象,符合帕累托法則(Pareto’s principle)。從圖1 中可以看出,MovieLens1M[2]數(shù)據(jù)集中的電影觀看數(shù)量即為長(zhǎng)尾現(xiàn)象,大多數(shù)的電影被觀看的次數(shù)少于500 次。此外,用戶僅對(duì)3 706 部電影進(jìn)行了評(píng)分,而余下的近200 部電影無(wú)人評(píng)分。由于用戶對(duì)電影的評(píng)分次數(shù)存在長(zhǎng)尾現(xiàn)象,因此,推薦系統(tǒng)在向用戶推薦物品時(shí)也隨之出現(xiàn)了長(zhǎng)尾現(xiàn)象,即推薦物品的覆蓋率偏低。傳統(tǒng)的推薦方法包括基于近鄰的推薦方法、基于內(nèi)容的推薦方法、矩陣分解的推薦方法以及混合的推薦方法等,由于數(shù)據(jù)集中數(shù)據(jù)稀疏問題嚴(yán)重,導(dǎo)致推薦結(jié)果會(huì)出現(xiàn)推薦物品的總量大多不足30%,甚至低于10%。此外,推薦物品的總量并沒有因?yàn)橥扑]列表的長(zhǎng)度變化而使推薦物品數(shù)量顯著增加,反而呈現(xiàn)出緩慢增長(zhǎng)趨勢(shì)。以基于用戶的協(xié)同過濾(User-based Collaborative Filtering,UserCF)算法[1]、基于物品的協(xié)同過濾(Item-based Collaborative Filtering,ItemCF)[3]算法和奇異值分解(Singular Value Decomposition,SVD)推薦算法為例,使用MovieLens1M 實(shí)現(xiàn)電影推薦,假設(shè)目標(biāo)用戶數(shù)量為100,在推薦列表長(zhǎng)度分別為10、15、20 時(shí),推薦結(jié)果中不重復(fù)電影的數(shù)量隨推薦列表長(zhǎng)度的變化如圖2所示。
從圖2 中可以看出:ItemCF 算法在推薦列表長(zhǎng)度為10 時(shí)推薦了188 部不重復(fù)的電影,在推薦列表長(zhǎng)度為20 時(shí)推薦了286 部不重復(fù)電影;但推薦列表長(zhǎng)度為10 時(shí)ItemCF 算法應(yīng)為100 個(gè)用戶推薦的電影總量(包含重復(fù)的電影)為1 000 部,推薦列表長(zhǎng)度為20 時(shí),則ItemCF 算法應(yīng)為100 個(gè)用戶推薦的電影總量為2 000 部。顯然,推薦列表的長(zhǎng)度從10 增長(zhǎng)到20,ItemCF 算法推薦的不重復(fù)電影數(shù)量增長(zhǎng)量(1.5 倍)低于向用戶推薦的電影總量的增長(zhǎng)量(2 倍)。在圖2 中的3 個(gè)算法里,UserCF 算法推薦的不重復(fù)電影數(shù)量最多,但在推薦列表長(zhǎng)度為20 時(shí),它向用戶推薦的不重復(fù)電影數(shù)量也僅為494,僅占MovieLens數(shù)據(jù)集中電影總量的10%左右。因此,推薦系統(tǒng)中物品推薦數(shù)量的總體覆蓋率是嚴(yán)重偏低的,從而導(dǎo)致了推薦系統(tǒng)中推薦物品缺乏多樣性。由此,用戶的觀影、閱讀以及購(gòu)買物品等行為受到了局限性的引導(dǎo),影響了用戶的知識(shí)擴(kuò)展和對(duì)新事物的適應(yīng)能力等。
圖1 觀影量的長(zhǎng)尾效應(yīng)Fig.1 Long tail effect of movie viewing
圖2 不重復(fù)推薦電影數(shù)量隨推薦列表長(zhǎng)度(L)的變化Fig.2 Number of non-repeating recommended movies varies with L
為提高推薦結(jié)果中物品的總體覆蓋率和多樣性,特別是增加長(zhǎng)尾物品的推薦數(shù)量,本文提出了一種基于卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)建立的推薦模型以及關(guān)注長(zhǎng)尾物品的推薦算法FLTI(Focusing on Long Tail Item)。
本文工作如下:1)分析了推薦列表中熱門物品與長(zhǎng)尾物品的關(guān)系,建立了熱門物品與長(zhǎng)尾物品的對(duì)應(yīng)關(guān)系;2)基于CNN 建立推薦框架,并基于此框架提出了關(guān)注長(zhǎng)尾物品的推薦算法FLTI;3)在公開的數(shù)據(jù)集MovieLens1M 和BookCrossing上進(jìn)行實(shí)驗(yàn),并與傳統(tǒng)的UserCF、ItemCF、SVD 推薦算法以及協(xié)同去噪自動(dòng)編碼(Colloborative Denosing Auto-Encoder,CDAE)[4]方法在召回率、覆蓋率、多樣性等方面進(jìn)行了比較,結(jié)果顯示本文方法在覆蓋率和多樣性方面表現(xiàn)更佳。
推薦系統(tǒng)中的長(zhǎng)尾問題研究主要集中在流行度低的物品推薦中,流行度低的物品主要指用戶對(duì)物品的評(píng)分?jǐn)?shù)量少的物品。長(zhǎng)尾推薦包括在線推薦和離線推薦:在線推薦主要是指查詢推薦[5-6],根據(jù)用戶的查詢信息并結(jié)合用戶的歷史信息為用戶推薦符合其偏好的物品;而離線推薦是在未提供查詢關(guān)鍵字以及其他實(shí)時(shí)信息時(shí),將用戶的歷史信息作為依據(jù)為用戶推薦符合其偏好的物品。本文主要研究的是離線推薦算法中的長(zhǎng)尾問題。從近年來(lái)的研究文獻(xiàn)中可以看出,離線的長(zhǎng)尾推薦方法主要有使用多目標(biāo)函數(shù)的優(yōu)化算法[7-9]、二部圖方法[10]、三部圖方法[11-13]、聚類方法[14]等。多目標(biāo)函數(shù)優(yōu)化包括評(píng)價(jià)模型準(zhǔn)確率、覆蓋率、多樣性等目標(biāo)的函數(shù),如Hamedani 等[7]分別提出了在AICF(Attribute-aware Item-based Collaborative Filtering)方 法 和 AMOSA(Archived Multi-Objective Simulated Annealing)方法基礎(chǔ)上優(yōu)化推薦列表的方法,使得推薦列表的準(zhǔn)確度、多樣性方面有所提高,并減少了推薦列表中的流行度;Pang 等[8]提出了基于NSGA-II(Nondominated Sorting Genetic Algorithm II)算法的權(quán)重相似度計(jì)算方法,并同時(shí)將準(zhǔn)確率和覆蓋率作為目標(biāo)函數(shù)優(yōu)化推薦算法,實(shí)驗(yàn)表明該推薦算法在保證準(zhǔn)確率的同時(shí)提高了覆蓋率;Wang 等[9]提出了將準(zhǔn)確率和新穎度作為目標(biāo)函數(shù)建立推薦模型,實(shí)驗(yàn)表明該推薦算法相比傳統(tǒng)的推薦算法在準(zhǔn)確率、新穎度、多樣性等方面均有所提高。
Yin 等[10]提出了二部圖算法解決長(zhǎng)尾推薦問題。Johnson等在文獻(xiàn)[11]中提出了使用三部圖方法用于長(zhǎng)尾推薦,即使用user-genre和genre-item的形式來(lái)構(gòu)建三部圖。Luke等[12]在Johnson 提出的三部圖方法[11]的基礎(chǔ)上,優(yōu)化了user-genre 的關(guān)聯(lián)關(guān)系,在genre-item 關(guān)系圖中建立了更多的路徑,將Johnson提出的“full genre”關(guān)系轉(zhuǎn)換為“basic genre”關(guān)系,即將由多個(gè)類別構(gòu)成的類別信息轉(zhuǎn)換為單一的類別分別表示。比如,一部電影的類別是“Action,Adventure,Comedy”,則拆分為“Action”“Adventure”“Comedy”三個(gè)基本類別,通過提高圖的聯(lián)通性,從而改善了推薦效果。Johnson 等在文獻(xiàn)[13]中基于三部圖的推薦算法加入了馬爾可夫過程方法用于表示長(zhǎng)尾物品的區(qū)域,從而提高了推薦物品的多樣性。Grozin 等[14]使用基于session 距離的商品聚類方法來(lái)實(shí)現(xiàn)交叉銷售的長(zhǎng)尾推薦,與直接使用類型、產(chǎn)品相似度聚類相比在歸一化折損累積增益(Normalized Discounted Cumulative Gain,NDCG)指標(biāo)評(píng)測(cè)上效果更優(yōu)。
此外,Takama 等[15]還提出了基于用戶的個(gè)人價(jià)值觀來(lái)建立推薦模型,從而改善長(zhǎng)尾物品的推薦;Abdollahpouri 等[16]提出了基于物品流行度權(quán)重的方法來(lái)解決長(zhǎng)尾物品的推薦。
盡管以上方法在覆蓋率、多樣性、準(zhǔn)確性等各方面都有不同程度的改善,但很少考慮長(zhǎng)尾物品的推薦率,以及針對(duì)推薦列表中物品重復(fù)率高且頻繁推薦項(xiàng)較多等現(xiàn)象的改善。
目前,深度學(xué)習(xí)在推薦系統(tǒng)中得到了廣泛的應(yīng)用[17]。深度學(xué)習(xí)主要包括循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)[18]和CNN[19]。其中,基于RNN 技術(shù),研究人員提出了長(zhǎng)短時(shí)記憶網(wǎng)絡(luò)(Long Short-Term Memory,LSTM)和門限循環(huán)單元(Gated Recurrent Unit,GRU)。RNN 適用于序列數(shù)據(jù)的應(yīng)用,比如用戶的點(diǎn)擊流數(shù)據(jù)、用戶的實(shí)時(shí)位置數(shù)據(jù)等,它可以根據(jù)序列中的上一個(gè)狀態(tài)預(yù)測(cè)下一個(gè)狀態(tài);CNN 則主要適用于圖像、文本等內(nèi)容的特征提取和分析。由于本文研究的推薦算法是離線的推薦算法,并且在推薦數(shù)據(jù)源中包含了大量的文本信息,因此,選用CNN處理文本特征。
為了明確本文中長(zhǎng)尾物品的推薦方法,本章將具體化問題描述及相關(guān)定義。關(guān)注長(zhǎng)尾物品的推薦,問題描述如下:
給定數(shù)據(jù)集D,為給定的目標(biāo)用戶Users={U1,U2,…,Un}推薦長(zhǎng)度為L(zhǎng) 的物品集合Recommended_Items={I1,I2,…,In},p為長(zhǎng)尾物品數(shù)量占推薦列表中總物品數(shù)量的比例,使Recommended_Items滿足以下條件:1)在Recommended_Items 中含有指定比例p的長(zhǎng)尾物品;2)符合用戶的歷史偏好。
其中,長(zhǎng)尾物品是指物品的評(píng)分次數(shù)低于用戶對(duì)物品評(píng)分次數(shù)中位數(shù)的物品。
為了明確后續(xù)算法中所提及的定義,先介紹本文中用到的頻繁推薦項(xiàng)(Frequent Recommended Item,F(xiàn)RItem)、非頻繁推薦項(xiàng)(Infrequent Recommended Item,IRItem)、物品長(zhǎng)尾系數(shù)(Item Long Tail Coefficient,ILTC)等概念的定義。
定義1FRItem 和IRItem。FRItem 是指為目標(biāo)用戶Users所推薦的物品集Recommended_Items 中出現(xiàn)的次數(shù)高于物品出現(xiàn)次數(shù)中位數(shù)的項(xiàng)目,低于物品出現(xiàn)次數(shù)中位數(shù)的項(xiàng)目則為IRItem。
定義2ILTC。由物品的推薦次數(shù)和評(píng)分次數(shù)共同加權(quán)得出,第i個(gè)物品的物品長(zhǎng)尾系數(shù)計(jì)算公式如下:
其中:i 代表物品集合Items 中一個(gè)物品,α 的值代表推薦次數(shù)的權(quán)重值,rec_times 和rec_total 分別代表物品i 的推薦次數(shù)和推薦物品的總次數(shù),rat_times 和rat_total 分別代表物品i 的評(píng)分次數(shù)和評(píng)分總次數(shù)。
長(zhǎng)尾物品推薦框架主要由數(shù)據(jù)處理層、推薦算法層、推薦列表生成層構(gòu)成,如圖3 所示。從圖3 可以看出,長(zhǎng)尾物品推薦框架的核心是推薦算法層,輸入是目標(biāo)用戶群,而輸出則是向目標(biāo)用戶群推薦的物品列表。
圖3 長(zhǎng)尾物品推薦框架Fig.3 Recommend framework for long tail items
數(shù)據(jù)處理層 首選從數(shù)據(jù)源中分別選取用戶和物品的特征,然后將用戶和物品的特征作標(biāo)準(zhǔn)化處理,并將用戶和物品的各特征作全連接。其中,將含有文本內(nèi)容多的特征使用CNN 的方式來(lái)處理文本內(nèi)容以提高相似度計(jì)算的準(zhǔn)確性,如在MovieLens 數(shù)據(jù)集中,將電影名稱特征使用CNN 方法得到文本的向量表示。最后,將用戶對(duì)物品的評(píng)分作為目標(biāo),通過設(shè)置損失函數(shù)Huber 來(lái)訓(xùn)練得到用戶對(duì)物品的預(yù)測(cè)評(píng)分值。Huber 損失函數(shù)適用于回歸問題,對(duì)于離群點(diǎn)不敏感,降低了離群點(diǎn)對(duì)于損失函數(shù)的權(quán)重值,能有效避免模型過擬合,如式(2)所示。
其中:δ 是邊界值,用于判斷數(shù)據(jù)是否為異常點(diǎn);y 為預(yù)測(cè)評(píng)分值;f(x)為實(shí)際評(píng)分值。
數(shù)據(jù)處理層的評(píng)分回歸模型的整體結(jié)構(gòu)如圖4所示。
推薦算法層 在數(shù)據(jù)處理層得到的回歸模型基礎(chǔ)上實(shí)現(xiàn)推薦算法,包括使用模型的正向傳播可以獲得用戶對(duì)物品的預(yù)測(cè)評(píng)分,計(jì)算物品的相似度和計(jì)算用戶的相似度。關(guān)注長(zhǎng)尾物品的推薦算法FLTI 首先根據(jù)目標(biāo)用戶已評(píng)分的物品,找到與其相似的物品產(chǎn)生推薦物品候選集;然后根據(jù)物品候選集物品的推薦次數(shù)的中位數(shù)拆分為頻繁推薦項(xiàng)集和非頻繁推薦項(xiàng)集,并查找非候選集與頻繁推薦項(xiàng)集相似的物品;最后,將符合用戶偏好的非候選集中的物品推薦給選擇過頻繁推薦項(xiàng)中物品的目標(biāo)用戶,并滿足長(zhǎng)尾比例p 的要求。具體的過程如圖5所示。
相似度計(jì)算方法根據(jù)數(shù)據(jù)處理層模型的表示,使用矩陣乘法并結(jié)合使用向量相似度計(jì)算的余弦相似度方法來(lái)計(jì)算物品的相似度和用戶相似度。
圖4 數(shù)據(jù)處理層模型Fig.4 Data processing layer model
圖5 FLTI算法的推薦流程Fig.5 Recommendation flow of FLTI algorithm
推薦列表生成層 為了讓目標(biāo)用戶能更多關(guān)注長(zhǎng)尾物品,在推薦列表排序中引入了長(zhǎng)尾系數(shù)。根據(jù)用戶對(duì)候選列表的預(yù)測(cè)評(píng)分以及長(zhǎng)尾系數(shù)對(duì)由推薦算法模型得到的候選物品列表進(jìn)行排序,對(duì)于預(yù)測(cè)評(píng)分相同的物品,按照長(zhǎng)尾系數(shù)升序排列。
為了提高FLTI 算法的效率,通過數(shù)據(jù)處理層得到的模型,將用戶對(duì)物品的評(píng)分結(jié)果保存到文件中,在推薦算法中直接讀取該文件即可獲得用戶對(duì)物品的評(píng)分。
FLTI 算法主要是通過替換頻繁推薦項(xiàng)的方法實(shí)現(xiàn)的,并在替換時(shí)選擇在候選項(xiàng)中用戶預(yù)測(cè)評(píng)分最高的項(xiàng)目作為替換項(xiàng),具體描述如下:
算法1 關(guān)注長(zhǎng)尾物品的推薦算法FLTI。
輸入 數(shù)據(jù)集D,長(zhǎng)尾比例P,推薦列表長(zhǎng)度L,目標(biāo)用戶Users;
輸出 目標(biāo)用戶的候選列表項(xiàng)CandidateDict。
for u in Users
獲取與用戶u相似的按照評(píng)分值降序排列的前L個(gè)物品
將用戶和對(duì)應(yīng)的物品列表添加到推薦列表候選集字典
temp_items中
end for
根據(jù)物品推薦次數(shù)的中位數(shù),將temp_items 拆分為頻繁推薦項(xiàng)字典(frequent_items)和非頻繁推薦字典(infrequent_items)
for f_item in frequent_items
在非候選集中,獲取與f_item相似的L個(gè)物品存放到
temp_frequent_items字典中
end for
獲得用戶推薦列表中不符合長(zhǎng)尾比例p的用戶集合
candidate_users_items
for u,i in candidate_users_items
if i是frequent_items中的物品
將i 替換為temp_frequent_items 中用戶評(píng)分最高的物品,且用戶u的候選推薦列表中沒有該物品
重新計(jì)算用戶推薦列表中物品的長(zhǎng)尾比例,若未滿足長(zhǎng)尾比例,則繼續(xù)更新候選推薦列表。
若candidate_users_items 中仍有不滿足長(zhǎng)尾比例的用戶,則將candidate_users_items 中推薦次數(shù)最多的非長(zhǎng)尾項(xiàng)目替換為與其相似度最高的長(zhǎng)尾項(xiàng)目,且不在用戶的候選推薦列表中。
return CandidateDict
在算法1 中,為了減少內(nèi)存使用,將數(shù)據(jù)集中的長(zhǎng)尾物品以及運(yùn)算結(jié)果的中間步驟保存到文件中。此外,算法1 中重點(diǎn)關(guān)注了長(zhǎng)尾項(xiàng)目的推薦比例,長(zhǎng)尾比例的高低將直接影響推薦效果,若將長(zhǎng)尾比例設(shè)置為1,則表示推薦列表中的所有物品均為長(zhǎng)尾物品,此時(shí),長(zhǎng)尾項(xiàng)目會(huì)成為頻繁推薦項(xiàng),而之前的頻繁推薦項(xiàng)則會(huì)成為長(zhǎng)尾物品,依然會(huì)導(dǎo)致推薦結(jié)果中覆蓋率和多樣性下降;若將長(zhǎng)尾比例設(shè)置為0 或者0.1,則所有的推薦列表均能滿足要求,不能提升長(zhǎng)尾物品在推薦列表中的數(shù)量。因此,為了避免由于長(zhǎng)尾比例設(shè)置過大而導(dǎo)致的新的長(zhǎng)尾現(xiàn)象,建立統(tǒng)計(jì)頻繁推薦項(xiàng)的替換次數(shù)以及替換的長(zhǎng)尾物品數(shù)量的字典,并在加入到候選推薦列表時(shí),選擇替換次數(shù)少且與要替換的物品相似度高的物品優(yōu)先替換。
此外,通過算法1 完成推薦候選集的篩選后,為了保證推薦列表中最大限度滿足用戶的偏好并優(yōu)先選擇長(zhǎng)尾物品,首先將候選集中用戶對(duì)物品的預(yù)測(cè)評(píng)分排序,若評(píng)分相同則按照物品的長(zhǎng)尾系數(shù)排序。
實(shí)驗(yàn)環(huán)境:CPU 為Inter Core i5-4690K@3.5 GHz,內(nèi)存為16 GB;操作系統(tǒng)為Windows 10;軟件為TensorFlow1.13.1 和Python 3.6.4。
實(shí)驗(yàn)數(shù)據(jù)集為公開的數(shù)據(jù)集MovieLens1M(https://grouplens.org/datasets)和BookCrossing。其中,Movielens 1M數(shù)據(jù)集中存放了6 040 位用戶對(duì)3 883 部電影的評(píng)分信息,包含了用戶表(users)、評(píng)分表(ratings)、電影表(movies);BookCrossing 數(shù)據(jù)集中存放了278 858 位用戶對(duì)271 379 本書的評(píng)分信息,包含了用戶表(BX-Users)、評(píng)分表(BX-Book-Ratings)以及圖書表(BX-Books)。
為了驗(yàn)證FLTI 算法的有效性,選擇了三類方法進(jìn)行對(duì)比:一類是基于近鄰的推薦方法,包括基于用戶的協(xié)同過濾(UserCF)算法和基于物品的協(xié)同過濾(ItemCF)算法;一類是基于矩陣分解的推薦方法,即基本的SVD 推薦算法;一類是基于神經(jīng)網(wǎng)絡(luò)的方法CDAE。除了CDAE算法外,其余算法都采用基于Python 語(yǔ)言的surprise(https://surprise.readthedocs.io/en/stable/)庫(kù)中所提供的協(xié)同過濾算法(KNNBasic)和SVD算法。在KNNBasic 方法中通過更改“sim_option”中的屬性值切 換UserCF 和ItemCF 兩 種 算 法:當(dāng)“sim_option”中“user_based”的值為“True”則為基于用戶的協(xié)同過濾算法;當(dāng)“user_based”的值為“False”則為基于物品的協(xié)同過濾算法。實(shí)驗(yàn)方法說明如表1所示。
評(píng)價(jià)標(biāo)準(zhǔn)包括召回率(Recall@L)[10]、覆蓋率(Coverage)[5]和多樣性(Diversity)[10]。
召回率用于驗(yàn)證在推薦列表的準(zhǔn)確性,如式(3)所示:
其中:hit@L 表示推薦列表L 中為目標(biāo)用戶推薦的正確項(xiàng)目個(gè)數(shù),N 表示目標(biāo)用戶在測(cè)試數(shù)據(jù)集中所有正確推薦項(xiàng)目的數(shù)量。
覆蓋率指標(biāo)和多樣性指標(biāo)用于驗(yàn)證推薦結(jié)果的長(zhǎng)尾情況,分別如式(4)和式(5)所示。
其中:R(u)表示為用戶推薦的物品數(shù)量,T 表示數(shù)據(jù)集中物品總量。
其中:R(u)表示為用戶推薦的物品數(shù)量,I 表示向用戶推薦物品的總量。比如,向500個(gè)用戶推薦10部電影,則推薦物品的總量為5 000。
表1 實(shí)驗(yàn)中用到的方法說明Tab.1 Explanation of methods used in experiment
為了提高模型預(yù)測(cè)的準(zhǔn)確性,所有方法均使用五折交叉法來(lái)訓(xùn)練模型。針對(duì)數(shù)據(jù)集MovieLens1M 和BookCrossing 中數(shù)據(jù)特征不同的情況,推薦模型的參數(shù)設(shè)置除了目標(biāo)函數(shù)(即損失函數(shù))和激活函數(shù)都設(shè)置為Huber 和ReLU 外,初始學(xué)習(xí)率(Learning_rate)分別設(shè)置為0.01 和0.001,初始批處理參數(shù)(batch_size)分別設(shè)置為256 和100。為了保證驗(yàn)證結(jié)果的一致性,長(zhǎng)尾比例p均設(shè)置為0.35。
1)召回率。將推薦列表長(zhǎng)度分別設(shè)置為10、15、20,各方法在Movielens 1M 數(shù)據(jù)集和BookCrossing 數(shù)據(jù)集上的召回率測(cè)試結(jié)果如圖6 所示。從Recall@L 的測(cè)試結(jié)果可以看出,F(xiàn)LTR 方法的評(píng)測(cè)值略高于其他對(duì)比方法。由于BookCrossing數(shù)據(jù)集的稀疏程度高于Movielens 數(shù)據(jù)集,實(shí)驗(yàn)中的方法均用到了用戶對(duì)物品的評(píng)分表,因此,Recall@L 的結(jié)果普遍要低于MovieLens上的評(píng)測(cè)結(jié)果。
圖6 兩個(gè)數(shù)據(jù)集上不同方法的召回率對(duì)比Fig.6 Comparison of recall rate of different methods on two datasets
2)覆蓋率和多樣性。在驗(yàn)證覆蓋率和多樣性時(shí),仍設(shè)置推薦列表長(zhǎng)度為10、15、20。驗(yàn)證覆蓋率時(shí),由于對(duì)比方法中只考慮了評(píng)分?jǐn)?shù)據(jù)中的物品,因此,總物品數(shù)量的計(jì)算是參與推薦的總物品數(shù)量。在MovieLens 和BookCrossing 數(shù)據(jù)集上的覆蓋率結(jié)果如圖7所示,多樣性的實(shí)驗(yàn)結(jié)果如圖8所示。從圖7、8可以看出,F(xiàn)LTI相比對(duì)比方法有明顯的優(yōu)勢(shì),特別是在Movielens 數(shù)據(jù)集上,當(dāng)FLTI 方法在推薦列表長(zhǎng)度為20 時(shí),覆蓋率到達(dá)了40%以上,而ItemCF方法的覆蓋率僅為20%。
綜上所述,F(xiàn)LTI 算法在MovieLens 數(shù)據(jù)集和BookCrossing數(shù)據(jù)集上的覆蓋率和多樣性的結(jié)果都有所提高,當(dāng)長(zhǎng)尾比例為0.35時(shí),在Movielen 數(shù)據(jù)集上且推薦列表長(zhǎng)度為10時(shí)的覆蓋率和多樣性提升比例最多,分別為51%和59%;并且在數(shù)據(jù)稀疏程度高的BookCrossing 數(shù)據(jù)集上效果更優(yōu)。在FLTI算法中,隨著長(zhǎng)尾比例的提高,覆蓋率和多樣性也將不斷提高,但準(zhǔn)確率和召回率會(huì)有所降低,因此,在實(shí)際應(yīng)用中,需要根據(jù)不同數(shù)據(jù)集的稀疏情況以及推薦系統(tǒng)的實(shí)際需求來(lái)調(diào)整長(zhǎng)尾比例。
圖7 兩個(gè)數(shù)據(jù)集上不同方法的覆蓋率對(duì)比Fig.7 Comparison of coverage rate of different methods on two datasets
圖8 兩個(gè)數(shù)據(jù)集上不同方法的多樣性對(duì)比Fig.8 Comparison of diversity of different methods on two datasets
本文針對(duì)推薦系統(tǒng)中的推薦物品存在的長(zhǎng)尾現(xiàn)象,提出了一種關(guān)注長(zhǎng)尾物品的推薦框架以及推薦算法FLTI。在關(guān)注長(zhǎng)尾物品的推薦框架中使用三層結(jié)構(gòu)實(shí)現(xiàn)了長(zhǎng)尾物品推薦:在數(shù)據(jù)預(yù)處理層中使用深度學(xué)習(xí)的方法全面地將用戶特征、物品特征結(jié)合在一起,并將數(shù)據(jù)特征中的文本內(nèi)容部分通過CNN 卷積,以便更好地實(shí)現(xiàn)對(duì)特征的語(yǔ)義分析;在推薦模型層中,關(guān)注了長(zhǎng)尾物品推薦的比例,并使長(zhǎng)尾物品盡可能符合用戶的偏好;在推薦列表生成層中,使用了用戶對(duì)物品的預(yù)測(cè)評(píng)分以及長(zhǎng)尾系數(shù)對(duì)推薦列表中的物品排序。在公開數(shù)據(jù)集MovieLens1M 和BookCrossing 上與推薦系統(tǒng)中的基本算法UserCF、ItemCF、SVD 以及CDAE 進(jìn)行了對(duì)比,結(jié)果顯示FLTI算法在覆蓋率和多樣性方面較對(duì)比方法占有較大優(yōu)勢(shì)。在后續(xù)的研究工作中,將重點(diǎn)研究使用深度學(xué)習(xí)的方法通過學(xué)習(xí)長(zhǎng)尾物品的特征,使得推薦結(jié)果中出現(xiàn)更多的長(zhǎng)尾物品,且提高推薦物品的準(zhǔn)確率。