張瀟藝 高 尚 鄒海濤
(江蘇科技大學(xué)計(jì)算機(jī)學(xué)院 鎮(zhèn)江 212003)
當(dāng)下推薦系統(tǒng)具有廣泛的應(yīng)用方向和極高的商業(yè)價(jià)值,也是各種前沿研究的重要課題。利用某種推薦算法,可以生成一個(gè)根據(jù)用戶喜好程度高低排序的序列,并根據(jù)此序列向用戶推薦商品、新聞等內(nèi)容。常用的基于協(xié)同過(guò)濾的推薦算法包括了基于相似度的協(xié)同過(guò)濾算法[1~3]、隱因子模型[4]、圖模型[5~6]、深度學(xué)習(xí)模型[7~8]等。其中,隱因子模型使用矩陣分解算法[4]計(jì)算出用戶和被推薦物品的隱含因子,并利用隱含因子預(yù)測(cè)用戶評(píng)價(jià)。矩陣分解具有精度高,速度快的優(yōu)點(diǎn),可以滿足更為苛刻的客觀限制條件。
盧建鵬[9]提出引入時(shí)間分段的圖模型,考慮到了用戶的興趣衰減。俞騁超[10]使用循環(huán)神經(jīng)網(wǎng)絡(luò)模型處理用戶的歷史瀏覽數(shù)據(jù),但是模型的可解釋性不足,且模型復(fù)雜,訓(xùn)練耗時(shí)。Hao Ma,Dengyong Zhou 等[11]提出了在矩陣分解中加入社會(huì)化正則項(xiàng)的方法。Hao Ma,Irwin King 等[12]和楊陽(yáng)等[13]在矩陣分解的基礎(chǔ)上引入用戶好友的偏好,提升預(yù)測(cè)結(jié)果。但是很多場(chǎng)景下用戶的隱性好友關(guān)系并非容易獲取。
現(xiàn)有的矩陣分解算法利用數(shù)據(jù)集的信息不全面,難以更好預(yù)測(cè)用戶的喜好。本文嘗試在矩陣分解算法中融入用戶的興趣特征影響和商品的公共偏好影響。通過(guò)使用一般的矩陣分解方法預(yù)分解測(cè)試集,得到低精度的用戶興趣特征信息。再融合低精度特征信息并結(jié)合商品的公共偏好進(jìn)一步改進(jìn)模型,優(yōu)化矩陣分解結(jié)果。在Netflix和Movielens等公共數(shù)據(jù)集上實(shí)驗(yàn),結(jié)果表明此方法可以提升算法的用戶評(píng)分預(yù)測(cè)精度和推薦結(jié)果的質(zhì)量。相比于原模型改進(jìn)明顯。
假設(shè)數(shù)據(jù)集為S,S內(nèi)的每個(gè)元素為用戶i,物品j,以及i對(duì)j的評(píng)分rij所組成的三元組(i,j,rij)。其中用戶的總數(shù)為m,商品的總數(shù)為n,那么用戶對(duì)商品的評(píng)分矩陣就為一個(gè)m×n的矩陣R。推薦系統(tǒng)的目的就是填補(bǔ)矩陣R中除訓(xùn)練集數(shù)據(jù)以外的缺失值。
隱藏因子模型的基本假設(shè)認(rèn)為用戶對(duì)物品的偏好以及物品本身的特質(zhì)可以用若干隱藏因子組成的向量表示。矩陣分解算法使用用戶對(duì)物品評(píng)分矩陣的分解向量作為用戶和物品的代表向量?;镜木仃嚪纸夥椒ò延脩艉蜕唐范加成涞揭粋€(gè)k維的隱因子向量空間,用戶和商品的關(guān)系被模型處理為空間中兩個(gè)向量的內(nèi)積。其中代表用戶i的向量用ui?Rk表示,代表物品j的向量用vj?Rk表示。預(yù)測(cè)的用戶i對(duì)物品j評(píng)分結(jié)果r?ij即為
不妨直接建立隨機(jī)數(shù)值的m×k用戶矩陣U和n×k物品矩陣V。最小化損失函數(shù)迭代優(yōu)化兩個(gè)矩陣的值。
而在隱因子模型的基礎(chǔ)上,引入用戶興趣的矩陣分解模型使用訓(xùn)練集SA中用戶i的評(píng)價(jià)子集Si算得此用戶的興趣向量fi,并將這一向量代入到優(yōu)化求解過(guò)程中。興趣向量fi的表示如下:
為了便于計(jì)算,需要?dú)w一化興趣向量。fi,m表示用戶i對(duì)于屬性m的興趣多寡。
將用戶興趣向量與矩陣分解法結(jié)合,得到的新分解模型為
其中α表示二者的權(quán)重參數(shù),F(xiàn)i表示歸一化后用戶i的興趣向量。
用戶興趣的引入,一定程度上提升了模型的精度,但是增加了算法的復(fù)雜度,導(dǎo)致運(yùn)算耗時(shí)增加。原模型也沒(méi)能很好地結(jié)合商品已有的評(píng)價(jià)信息。實(shí)際上大部分物品的評(píng)分高低更多還是由商品本身的特質(zhì)決定。有理由相信,在大眾層面上給出的商品評(píng)價(jià),個(gè)體有較大概率依從或者至少相關(guān)。因此算法在速度和精度上,依然存在改進(jìn)的空間。
本文嘗試在計(jì)算用戶興趣向量之前,先使用傳統(tǒng)矩陣分解算法預(yù)分解。樸素矩陣分解算法的時(shí)間復(fù)雜度低于引入用戶興趣的矩陣分解算法,那么可以在保證一定精度的情況下快速分解矩陣。利用預(yù)分解得到的U和V矩陣計(jì)算用戶的興趣向量矩陣F,表達(dá)式為
F是一個(gè)m×k的矩陣,每一行代表一位用戶的興趣特征向量。再對(duì)F的每一行歸一化以便于下一步計(jì)算。此時(shí)模型的預(yù)測(cè)結(jié)果表示為
利用預(yù)分解的U和V矩陣直接計(jì)算用戶的興趣向量矩陣,可以在確保精度的情況下避免一般興趣分解模型在梯度下降優(yōu)化的過(guò)程中同步優(yōu)化用戶興趣向量帶來(lái)的耗時(shí)增加,還可以增益最終結(jié)果的精度。
同時(shí)本文還考慮引入待預(yù)測(cè)物品的平均偏好[14]Gj作為模型的參數(shù)之一。商品的平均偏好即某商品在不少于10 人評(píng)分的情況下所有評(píng)分的均值,這是為了防止過(guò)于稀疏的數(shù)據(jù)引入額外的誤差。商品j的平均偏好Gj表示為
其中,p為商品j評(píng)論的總個(gè)數(shù)。用戶的真實(shí)評(píng)分與物品的平均偏好存在一定的相關(guān)性。不妨先計(jì)算數(shù)據(jù)集中物品的平均偏好,并在梯度下降的損失函數(shù)中引入它。
再考慮到每個(gè)用戶在評(píng)分時(shí)的評(píng)分偏好不同。有的用戶更容易打高分,而有的用戶更容易打低分。本文采用一個(gè)權(quán)重函數(shù)θ,篩選掉與平均偏好差別較大的用戶,減少對(duì)模型的不利影響。在偏差小于一定閾值γ時(shí)權(quán)重θ為一個(gè)隨偏差變小而增大的函數(shù),大于這個(gè)閾值γ時(shí)則為0。在偏差δ小于一定的閾值γ時(shí),設(shè)定權(quán)重函數(shù)為
此函數(shù)的取值范圍為[0,1)。
經(jīng)過(guò)改進(jìn)的預(yù)測(cè)結(jié)果表示為
后文將進(jìn)一步比較原模型與改進(jìn)后的模型,并分析實(shí)驗(yàn)結(jié)果,得出初步結(jié)論。
本文選擇了兩個(gè)真實(shí)數(shù)據(jù)集實(shí)驗(yàn)。其一為Netflix 數(shù)據(jù)集,這個(gè)數(shù)據(jù)集包含了6040 位用戶,3706 部電影以及536828 條用戶對(duì)電影的評(píng)分結(jié)果。另一個(gè)為MovieLens 數(shù)據(jù)集,這個(gè)數(shù)據(jù)集包含了6039 位用戶,3952 部電影以及1000209 條用戶對(duì)電影的評(píng)分結(jié)果。用戶評(píng)分的范圍都為[0,5],其中0 分表示用戶最不喜歡,5 分表示用戶非常喜歡。每位用戶至少對(duì)50 條電影作出評(píng)價(jià)。圖1是兩個(gè)數(shù)據(jù)集用戶評(píng)分?jǐn)?shù)分布的情況。
圖1 用戶評(píng)分分布情況圖
本文使用平均絕對(duì)誤差(MAE),標(biāo)準(zhǔn)差(RMSE),歸一化折損累計(jì)增益[15](nDCG)三個(gè)指標(biāo)衡量算法的預(yù)測(cè)結(jié)果精度。
為了衡量對(duì)用戶的推薦準(zhǔn)確度,本文將位于每位用戶評(píng)分列表中最新的前20%評(píng)分定為測(cè)試集。利用剩余較早的80%評(píng)分作為訓(xùn)練集,以檢驗(yàn)推薦結(jié)果的準(zhǔn)確性。
MAE 和RMSE是評(píng)價(jià)預(yù)測(cè)評(píng)分誤差的主要指標(biāo)。推薦結(jié)果中,二者的值越小說(shuō)明預(yù)測(cè)的誤差越小,模型越精確。設(shè)測(cè)試集為T,那么以上二者的表示為
nDCG則是排序質(zhì)量的一種測(cè)試指標(biāo)。折損累計(jì)增益(DCG)則增加了對(duì)薦列表中位置相對(duì)靠后增益值的懲罰之后再求和。nDCG是DCG 歸一化的結(jié)果,用DCG 結(jié)果除以理想化排序下的IDCG 結(jié)果。nDCG 的值越接近于1,說(shuō)明推薦的結(jié)果越好。假設(shè)根據(jù)模型預(yù)測(cè)用戶i的推薦列表為r1,…,rh,根據(jù)真實(shí)評(píng)分得到的列表為R1,…,Rh,H為推薦列表的長(zhǎng)度,rh、Rh為項(xiàng)目的評(píng)分。
本文實(shí)驗(yàn)選取的推薦列表長(zhǎng)度為10。因?yàn)檫x取的用戶至少有50 條評(píng)分,因此可以保證單用戶測(cè)試集的長(zhǎng)度大于等于10。
4.3.1 應(yīng)用預(yù)分解的模型參數(shù)優(yōu)化
參數(shù)α影響了最終預(yù)測(cè)結(jié)果中一般的分解結(jié)果和用戶興趣向量的貢獻(xiàn)度比例。參數(shù)α在(0,1)之間變化,參數(shù)α越大,則說(shuō)明預(yù)測(cè)結(jié)果中用戶興趣向量的影響越大。在Netflix 數(shù)據(jù)集上的實(shí)驗(yàn)結(jié)果(圖4)表明,隨著當(dāng)參數(shù)α從0開始增加,結(jié)果中的MAE,RMSE 逐漸變小,nDCG 逐漸變大,達(dá)到一個(gè)閾值后,MAE和RMSE開始增加,nDCG回落。在Netflix 數(shù)據(jù)集上MAE 和RMSE 的閾值為0.6,nDCG的閾值為0.7,本文出于優(yōu)化排序結(jié)果的目的,以nDCG 的最優(yōu)化參數(shù)為準(zhǔn)。選擇0.7 作為Netflix 數(shù)據(jù)集上的參數(shù)α。MoviesLens 數(shù)據(jù)集的實(shí)驗(yàn)結(jié)果如圖5 所示??梢?jiàn)MAE,RMSE 以及nDCG 的閾值分別為0.7 和0.8,本實(shí)驗(yàn)選取0.8 作為MoviesLens數(shù)據(jù)集上的參數(shù)α。
圖4 預(yù)分解模型在Netflix上隨α 的波動(dòng)
圖5 預(yù)分解模型在MovieLens上隨α 的波動(dòng)
4.3.2 兼用應(yīng)用預(yù)分解和平均偏好的混合模型參數(shù)優(yōu)化
如圖2 和圖3 所示,經(jīng)過(guò)實(shí)驗(yàn)驗(yàn)證了某一用戶的評(píng)分與平均偏好之間的偏差大小,在劃分的訓(xùn)練集和測(cè)試集中存在一定的相關(guān)性和一致性。若偏差很大說(shuō)明公共偏好對(duì)于此用戶不具備參考的價(jià)值。根據(jù)兩個(gè)數(shù)據(jù)集上的實(shí)驗(yàn)可以得到如圖8 和圖11 的結(jié)果。在兩個(gè)數(shù)據(jù)集上權(quán)重函數(shù)θ的參數(shù)γ都應(yīng)選取為0.8。
圖2 Netflix相同用戶分別于訓(xùn)練集及測(cè)試集中與平均偏好偏差大小的比較
圖3 MovieLens相同用戶分別于訓(xùn)練集及測(cè)試集中與平均偏好偏差大小的比較
圖8 混合模型的nDCG在Netflix上隨γ 的波動(dòng)
參數(shù)α和β決定不同項(xiàng)目的比重,并影響最終模型的預(yù)測(cè)結(jié)果。根據(jù)實(shí)驗(yàn)結(jié)果可知MAE、RMSE與nDCG 的最優(yōu)化參數(shù)不相等。Netflix 結(jié)果如圖6、圖7,MovieLens 結(jié)果如圖9、圖11。在Netflix 數(shù)據(jù)集上選取參數(shù)α為0.3,參數(shù)β為0.2,MovieLens數(shù)據(jù)集上選取參數(shù)α為0.5,參數(shù)β為0.1。
圖6 混合模型在Netflix上隨α 的波動(dòng)
圖7 混合模型的nDCG在Netflix上隨β 的波動(dòng)
圖9 混合模型在MovieLens上隨α 的波動(dòng)
圖10 混合模型的nDCG在MovieLens上隨β 的波動(dòng)
圖11 混合模型的nDCG在MovieLens上隨γ 波動(dòng)
本文選取標(biāo)準(zhǔn)的矩陣分解算法,以及未優(yōu)化過(guò)的用戶興趣特征分解模型作為對(duì)比。
結(jié)果如表1 和表2 所示,本文發(fā)現(xiàn)在使用了用戶興趣模型后,Netflix 數(shù)據(jù)集的評(píng)分預(yù)測(cè)精度(MAE 以及RMSE)和用戶推薦的質(zhì)量表現(xiàn)(nDCG)則明顯改善。而MovieLens數(shù)據(jù)集上的結(jié)果表現(xiàn)優(yōu)于應(yīng)用預(yù)分解前,但是均不如樸素的矩陣分解。這一結(jié)果可能由數(shù)據(jù)集本身的特征造成,MovieLens數(shù)據(jù)集相比RMSE 數(shù)據(jù)集的評(píng)分?jǐn)?shù)更多,單一用戶和電影的評(píng)分也更密集。因此我們可以發(fā)現(xiàn),同樣采用樸素的矩陣分解模型,MovieLens 數(shù)據(jù)集的表現(xiàn)遠(yuǎn)優(yōu)于Netflix 數(shù)據(jù)集。直接引入用戶興趣特征反而造成結(jié)果的損失。而加入預(yù)分解的用戶興趣分解模型后,改進(jìn)模型的數(shù)值預(yù)測(cè)精度和排序質(zhì)量相比引入了用戶興趣特征的矩陣分解提升顯著。
表1 Netflix上預(yù)分解模型與其他算法推薦結(jié)果的比較
表2 MovieLens上預(yù)分解模型與其他算法推薦結(jié)果的比較
結(jié)果如表3 和表4 所示,新模型在兩個(gè)數(shù)據(jù)集上表現(xiàn)不一。在Netflix數(shù)據(jù)集上,新模型犧牲了一定的用戶評(píng)分預(yù)測(cè)精度(MAE 和NDCG)但是提高了推薦結(jié)果的質(zhì)量(nDCG)。在MovieLens 數(shù)據(jù)集上,所有指標(biāo)都有所提升,但是推薦結(jié)果的提升幅度相比前一個(gè)數(shù)據(jù)集較小。
表3 在兩個(gè)數(shù)據(jù)集上使用混合模型進(jìn)一步優(yōu)化后的推薦結(jié)果對(duì)比
一般可以認(rèn)為在推薦系統(tǒng)中推薦結(jié)果的質(zhì)量相比于用戶評(píng)分的預(yù)測(cè)精度要更為重要。因?yàn)楦鶕?jù)用戶預(yù)測(cè)評(píng)分產(chǎn)生的秩次直接決定了最終的推薦結(jié)果和推薦效率。本文實(shí)驗(yàn)參數(shù)選取偏向于提升nDCG 的結(jié)果。通過(guò)本次實(shí)驗(yàn)可以證明本方法在提升最終推薦結(jié)果方面的有效性。
提升推薦系統(tǒng)的表現(xiàn)具有強(qiáng)的現(xiàn)實(shí)意義。市場(chǎng)經(jīng)濟(jì)下,精準(zhǔn)把握潛在消費(fèi)者的喜好可以創(chuàng)造巨大的商業(yè)價(jià)值,因而推薦系統(tǒng)會(huì)是很長(zhǎng)一段時(shí)間內(nèi)研究的重點(diǎn)。本文嘗試從Netflix以及MovieLens兩個(gè)數(shù)據(jù)集出發(fā),以加入用戶興趣特征的矩陣分解模型為基礎(chǔ),探索提升推薦系統(tǒng)表現(xiàn)的改進(jìn)模型。實(shí)驗(yàn)結(jié)果證明本文提出的新方法有效和可靠。