李明秀 王淑軍 賈如 陳立榮
摘 ?要:協(xié)同過濾算法是實(shí)現(xiàn)推薦系統(tǒng)最重要的技術(shù)之一。隨著時(shí)間的推移,用戶對(duì)物品的偏好會(huì)不斷地發(fā)生變化,物品自身的流行度也會(huì)隨時(shí)間不斷地發(fā)生變化。目前常用的推薦算法如基于鄰域的協(xié)同過濾算法itemCF、userCF和隱語義模型算法FunkSVD、BiasSVD、SVD++都沒有考慮到時(shí)間因素對(duì)推薦系統(tǒng)推薦質(zhì)量的影響。而時(shí)間信息是一種非常重要的上下文信息,應(yīng)該在算法中加以利用。本文使用Sigmoid函數(shù)和流行度函數(shù)將時(shí)間因素融入到了BiasSVD算法中,成功的設(shè)計(jì)出了一個(gè)融合時(shí)間信息的新算法Time-BiasSVD。在MovieLens數(shù)據(jù)集上的驗(yàn)證結(jié)果表明:該算法與已有協(xié)同過濾算法,以及融合時(shí)間信息的算法timeSVD++相比,能更準(zhǔn)確地預(yù)測(cè)用戶實(shí)際評(píng)分,提高推薦系統(tǒng)的推薦質(zhì)量。
關(guān)鍵詞:偏置項(xiàng);協(xié)同過濾;時(shí)間因素;Sigmoid函數(shù);流行度函數(shù)
中圖分類號(hào):TP399 ? ? 文獻(xiàn)標(biāo)識(shí)碼:A
Abstract:Collaborative filtering algorithm is one of the most important techniques to implement recommendation system.As time goes by,users' preferences for items will change constantly and the popularity of items will also change over time.At present,the commonly used recommendation algorithms,such as neighborhood-based collaborative filtering algorithm itemCF,userCF and implicit semantic model algorithm FunkSVD,BiasSVD,SVD ++,do not take into account the impact of time factors on the recommendation quality of the recommendation system.In this paper,the Sigmoid function and the popularity function are used to design a new algorithm by integrating the time factor into the BiasSVD algorithm.The verification results on the MovieLens dataset show that the proposed algorithm can accurately predict the user's actual score and improve the recommendation quality of the recommendation system compared with the existing collaborative filtering algorithms and the timeSVD ++ algorithm.
Keywords:bias;time factor;collaborative filtering;Sigmoid function;popularity function
1 ? 引言(Introduction)
隨著大數(shù)據(jù)時(shí)代的到來,網(wǎng)絡(luò)空間中蘊(yùn)含的信息量幾何式增長(zhǎng)。在這種背景下,用戶如何快速的獲得自己需要的信息就變成了一個(gè)非常嚴(yán)峻的問題。推薦系統(tǒng)可以幫助用戶發(fā)現(xiàn)他們可能喜歡的物品,這有效地解決了信息過載的問題。
協(xié)同過濾(Collaborative Filtering,簡(jiǎn)稱CF)[1,2]是目前推薦系統(tǒng)中應(yīng)用最廣泛、最成功的技術(shù)。目前在工業(yè)界中得到最廣泛應(yīng)用的協(xié)同過濾算法是基于鄰域的協(xié)同過濾算法?;卩徲虻膮f(xié)同過濾算法包括兩種,基于用戶相似度[3,4]和基于物品相似度[5]。隱語義模型(Latent Factor Model,簡(jiǎn)稱LFM)[6]使用用戶的歷史評(píng)分?jǐn)?shù)據(jù),挖掘出數(shù)據(jù)中隱含的特征。時(shí)間信息是一種非常重要的上下文信息,模型能反映最新的數(shù)據(jù)表達(dá)的內(nèi)容與特性并且能捕捉數(shù)據(jù)本質(zhì)的長(zhǎng)期趨勢(shì)是推薦算法要解決的重要問題。
本文在隱語義模型的基礎(chǔ)上提出了一種融合時(shí)間信息的新思路,并設(shè)計(jì)出了融合時(shí)間信息的協(xié)同過濾算法Time-BiasSVD。其核心思想是:通過構(gòu)建一條權(quán)重變化曲線將用戶興趣按照評(píng)分產(chǎn)生的時(shí)間賦予不同的權(quán)重,使得每條記錄對(duì)用戶的影響不同。距離當(dāng)前推薦時(shí)間越近的記錄權(quán)重越大,對(duì)用戶的影響越明顯。而物品本身也存在不同時(shí)間段內(nèi)流行度不同的問題,因此物品也是一個(gè)和時(shí)間相關(guān)的量。將Sigmoid函數(shù)與物品的流行度融入到當(dāng)前流行的BiasSVD算法中就實(shí)現(xiàn)了本文的Time-BiasSVD算法。實(shí)驗(yàn)結(jié)果表明,該算法比已有隱語義模型算法能更有效地預(yù)測(cè)用戶的評(píng)分。同時(shí)相比較于koren等人提出的timeSVD++算法,本文提出的使用Sigmoid函數(shù)和流行度函數(shù)將時(shí)間因素分別融入到用戶和物品偏置項(xiàng)的新思路使得推薦系統(tǒng)的推薦精度也有了明顯的提高。
2 ? 相關(guān)工作(Related research)
2.1 ? 隱語義模型
奇異值分解(Singular Value Decomposition,簡(jiǎn)稱SVD)SVD可以將一個(gè)龐大的原始矩陣拆分成為三個(gè)小的矩陣[7]。在損失原始矩陣小部分準(zhǔn)確度的同時(shí)大大降低存儲(chǔ)空間的使用。但是SVD也面臨稀疏矩陣和時(shí)間復(fù)雜度過高這兩個(gè)非常嚴(yán)重的問題[8,9]。
Simon Funk后來提出的FunkSVD又被稱為隱語義模型。該算法既減少了對(duì)存儲(chǔ)空間的利用,又避免了傳統(tǒng)SVD矩陣分解面臨的時(shí)間復(fù)雜度過高和稀疏矩陣的問題。
加入偏置項(xiàng)的隱語義模型BiasSVD算法在FunkSVD算法的基礎(chǔ)上增加了兩個(gè)偏置項(xiàng)參數(shù),分別用來代表用戶在評(píng)分過程中由于用戶自身性格等因素產(chǎn)生的誤差,以及項(xiàng)目本身屬性導(dǎo)致用戶實(shí)際評(píng)分產(chǎn)生的誤差。BiasSVD算法將FunkSVD算法中的兩個(gè)矩陣P和Q引入,并增加基礎(chǔ)平均分和兩個(gè)偏置項(xiàng)參數(shù),這五個(gè)參數(shù)就組成了BiasSVD算法的預(yù)測(cè)評(píng)分函數(shù)。在許多場(chǎng)合的實(shí)際應(yīng)用中發(fā)現(xiàn),BiasSVD算法的推薦準(zhǔn)確度高于FunkSVD算法。
2.2 ? 基于時(shí)序信息的推薦算法
Koren等人提出的timeSVD++算法[10]將物品偏差進(jìn)行了分割,給每個(gè)分割段使用數(shù)值不同的物品偏差,將變成了。
孫光福等人提出的SequentialMF算法[12]使用用戶的評(píng)分?jǐn)?shù)據(jù)和評(píng)分時(shí)間信息來構(gòu)建用戶和產(chǎn)品的消費(fèi)網(wǎng)絡(luò)圖,并根據(jù)圖計(jì)算影響力最大的近鄰集,再把近鄰集用到概率矩陣分解模型中然后分別計(jì)算出用戶和項(xiàng)目的特征向量,根據(jù)該特征向量預(yù)測(cè)重構(gòu)評(píng)分矩陣,再對(duì)用戶進(jìn)行推薦。
與上述相關(guān)工作的不同之處,本研究基于不同偏置項(xiàng)各自的特點(diǎn)設(shè)計(jì)出了使用多種偏置項(xiàng)融合時(shí)間信息的協(xié)同過濾算法Time-BiasSVD,主要貢獻(xiàn)如下:一是本文創(chuàng)新的使用了變型的Sigmoid函數(shù),并利用它模擬用戶興趣偏置項(xiàng)隨時(shí)間的變化趨勢(shì);二是本文在項(xiàng)目偏置項(xiàng)中找出了電影流行度和平均評(píng)分的關(guān)系,進(jìn)而將物品偏置項(xiàng)中的流行度分離出來,給物品偏置項(xiàng)也融入了時(shí)間信息。
3 ?基于多種偏置項(xiàng)融合時(shí)間信息的協(xié)同過濾算法(Collaborative filtering algorithm based on integrating the time factor into multiple biases)
3.1 ? 基本定義
定義1(用戶-物品評(píng)分矩陣)R={ru,i},R表示用戶對(duì)物品的評(píng)分矩陣。ru,i表示用戶u對(duì)物品i的評(píng)分,為1—5的整數(shù)。
定義2(用戶-隱含特征矩陣)P={pu,k},P表示用戶與隱含特征之間權(quán)重的矩陣。pu,k表示用戶u對(duì)第k種特征的喜歡程度。取值范圍為0—1的浮點(diǎn)數(shù)。
定義3(隱含特征-物品矩陣)Q={qi,k},Q是表示物品在其所屬特征中占重要程度的矩陣。qi,k表示物品i在特征k中所占的重要度。取值為0—1的浮點(diǎn)數(shù)。
定義4(用戶偏置項(xiàng))代表預(yù)測(cè)函數(shù)中用戶的評(píng)分中用戶自身性格等因素產(chǎn)生的誤差。
定義5(項(xiàng)目偏置項(xiàng))代表物品本身屬性導(dǎo)致的評(píng)分誤差。
定義6(用戶興趣隨時(shí)間跨度增大變化函數(shù))代表一個(gè)物品對(duì)用戶的刺激隨著時(shí)間跨度的增大而呈現(xiàn)出的S型下降趨勢(shì)。數(shù)據(jù)集中每個(gè)評(píng)分記錄都會(huì)有一個(gè)時(shí)間戳,t代表用戶歷史評(píng)分記錄中的時(shí)間戳和當(dāng)前為用戶推薦物品的時(shí)間戳之間的差值。
定義7(物品在所屬時(shí)間片內(nèi)的流行度)l(h)代表物品在某一時(shí)間段內(nèi)的流行度。h代表某個(gè)具體的時(shí)間片。
定義8(物品的評(píng)分與流行度之間的關(guān)系)代表物品得到的評(píng)分與物品在某一時(shí)間段內(nèi)的流行度之間存在的正相關(guān)關(guān)系。其中的x就是定義7中的l(h)。
3.2 ? BiasSVD算法
RMSE是根號(hào)下預(yù)測(cè)值與真實(shí)值之間差的平方與總預(yù)測(cè)次數(shù)N的比值。常被用來衡量協(xié)同過濾算法的好壞。FunkSVD的核心思想是實(shí)現(xiàn)RMSE在訓(xùn)練集上最小。
3.3 ? 時(shí)間信息融入用戶偏置項(xiàng)
用戶的評(píng)分習(xí)慣會(huì)隨時(shí)間的推移而發(fā)生變化,以用戶對(duì)電影的評(píng)分為例。
若干年前某用戶觀看了一部電影,這部電影給用戶產(chǎn)生了一個(gè)刺激,這個(gè)刺激給用戶造成的影響反映為用戶對(duì)這部的電影的評(píng)分。但是隨著時(shí)間的推移,以下幾種原因會(huì)改變用戶對(duì)某類電影的評(píng)分:第一,用戶看的電影變多導(dǎo)致用戶閱歷增加;第二,同類型的電影看得太多導(dǎo)致對(duì)這類電影的新鮮度降低;第三,經(jīng)歷的事情變多導(dǎo)致用戶的興趣發(fā)生變化,原來感興趣的類型現(xiàn)在可不感興趣了,反之亦然。
這些因素都會(huì)影響用戶的評(píng)分習(xí)慣,最可能的表現(xiàn)是用戶對(duì)電影進(jìn)行打分的時(shí)候更加嚴(yán)苛。
在生態(tài)學(xué)中可以使用“S”型曲線[13]來對(duì)種群數(shù)量變化進(jìn)行解釋。即某種生物數(shù)量的增長(zhǎng)隨著時(shí)間的遞增并不是呈J型增長(zhǎng),而是S型增長(zhǎng)。因?yàn)楫?dāng)種群密度增長(zhǎng)到某個(gè)數(shù)值之后,會(huì)遭受一系列客觀因素的制約,導(dǎo)致其增長(zhǎng)趨勢(shì)受到制約,符合S型增長(zhǎng)趨勢(shì)。
使用“S型”曲線解釋用戶對(duì)電影的評(píng)分也是合理的:從現(xiàn)在的時(shí)間向前推,越接近評(píng)分記錄產(chǎn)生的時(shí)間,這部電影給用戶帶來的刺激越大,但用戶對(duì)此類電影的評(píng)分也不可能是呈現(xiàn)J型增長(zhǎng)。因?yàn)樵诮o用戶推薦物品的時(shí)間點(diǎn)與評(píng)分記錄產(chǎn)生的時(shí)間點(diǎn)之間,用戶也會(huì)受到各種其他刺激的影響。
同時(shí),依據(jù)心理學(xué)中提出的觀點(diǎn),以及郭新明等人的相關(guān)研究[14]發(fā)現(xiàn),用戶的遺忘規(guī)律不會(huì)完全依照線性變化方式。用戶對(duì)于新產(chǎn)生的興趣在其產(chǎn)生的初期關(guān)注度會(huì)很高,具有極小的立即遺忘可能性;當(dāng)用戶度過這段時(shí)期后,對(duì)該興趣的關(guān)注度就會(huì)隨著時(shí)間的延伸而迅速降低,當(dāng)關(guān)注度降低到一定程度時(shí),用戶重新回憶起這個(gè)興趣的可能性就很小,對(duì)應(yīng)于該興趣的遺忘速度,就是表現(xiàn)出速率迅速減小的特點(diǎn)。
綜上所述:本文使用變型的Sigmoid函數(shù)來描述這個(gè)變化趨勢(shì)。變型的Sigmoid函數(shù)在一開始表現(xiàn)出來的特點(diǎn)是,數(shù)值一開始維持較高水平且?guī)缀醪粫?huì)遞減;在后期,迅速降低隨后逐漸變得平緩并最終趨于0。
4 ? 實(shí)驗(yàn)結(jié)果及分析(Experiment results and analysis)
本節(jié)首先介紹實(shí)驗(yàn)所用數(shù)據(jù)集,然后說明評(píng)價(jià)標(biāo)準(zhǔn)及對(duì)比算法,最后給出Time-BiasSVD算法與其他算法的對(duì)比實(shí)驗(yàn)結(jié)果,并對(duì)實(shí)驗(yàn)結(jié)果進(jìn)行分析。
4.1 ? 數(shù)據(jù)集及試驗(yàn)環(huán)境
本文使用MovieLens數(shù)據(jù)集進(jìn)行結(jié)果驗(yàn)證。
MovieLens數(shù)據(jù)集主要包含三個(gè)版本,小規(guī)模數(shù)據(jù)集有十萬條數(shù)據(jù);中等規(guī)模數(shù)據(jù)集有100余萬條數(shù)據(jù);大規(guī)模的數(shù)據(jù)集過大,由于機(jī)器配置問題暫時(shí)無法考慮。
通過對(duì)中等規(guī)模和小規(guī)模的MovieLens數(shù)據(jù)集進(jìn)行數(shù)據(jù)分析。發(fā)現(xiàn)中等規(guī)模的MovieLens數(shù)據(jù)集上每個(gè)用戶的所有評(píng)分記錄多集中于兩小時(shí)內(nèi)。因此,本文猜測(cè)獲取該數(shù)據(jù)集的方式為直接對(duì)用戶進(jìn)行采訪,一名用戶一次性對(duì)多部電影進(jìn)行評(píng)分。
由于本文的算法需要在較長(zhǎng)時(shí)間跨度上描述用戶興趣變化趨勢(shì)和物品流行度。所以中等規(guī)模的MovieLens數(shù)據(jù)集并不適合用來測(cè)試本文的Time-BiasSVD算法。因此本文選用擁有十萬條數(shù)據(jù)的MovieLens數(shù)據(jù)集進(jìn)行試驗(yàn)驗(yàn)證。
數(shù)據(jù)集中包含了1997年9月19日到1998年4月22日的943個(gè)用戶對(duì)1682部電影的評(píng)分記錄。每個(gè)用戶至少評(píng)價(jià)了20部電影。評(píng)分?jǐn)?shù)據(jù)集中有四個(gè)屬性列,分別是用戶ID、電影ID、評(píng)分值和時(shí)間戳。評(píng)分為1—5的整數(shù)。
本文根據(jù)實(shí)際生活中對(duì)推薦算法的應(yīng)用,使用時(shí)間點(diǎn)對(duì)數(shù)據(jù)集進(jìn)行劃分。使用歷史數(shù)據(jù),對(duì)未來的數(shù)據(jù)進(jìn)行預(yù)測(cè)。使用時(shí)間戳891368000對(duì)數(shù)據(jù)集進(jìn)行劃分,訓(xùn)練集數(shù)據(jù)72026條,測(cè)試集7974條。
4.2 ? 評(píng)價(jià)指標(biāo)
4.3 ? 參數(shù)設(shè)置
本文選取了四種算法作為對(duì)比算法:
(1)隱語義模型FunkSVD算法,沒有考慮用戶或者項(xiàng)目本身具有的偏置項(xiàng)因素,也沒有將時(shí)間信息考慮到算法中。
(2)加入偏置項(xiàng)的隱語義模型BiasSVD算法,將用戶偏置項(xiàng)和項(xiàng)目偏置項(xiàng)因素進(jìn)行了考慮,但是沒有考慮時(shí)間因素對(duì)評(píng)分行為的影響。
(3)SVD++算法加入了隱式數(shù)據(jù)描述的用戶對(duì)物品的偏好,但是也沒有考慮時(shí)間因素對(duì)用戶行為的影響。
(4)Koren等人的timeSVD++算法。該算法也是在SVD++算法的基礎(chǔ)上分別在用戶偏置項(xiàng)與物品偏置項(xiàng)中融入了時(shí)間信息。
在實(shí)驗(yàn)中,首先進(jìn)行特征處理,在原始的評(píng)分?jǐn)?shù)據(jù)集的基礎(chǔ)上根據(jù)公式(13)進(jìn)行流行度計(jì)算,為每部電影增加一個(gè)流行度屬性,方便下文計(jì)算。本文將參數(shù)P、Q和矩陣、等參數(shù)的初始值通過均值為0的正態(tài)分布隨機(jī)抽取獲得。在訓(xùn)練集上迭代時(shí),使用批量梯度下降算法不斷更新這些參數(shù)值,直到函數(shù)收斂為止。設(shè)置最大迭代次數(shù)3000次,跳出迭代條件為本輪RMSE與上輪RMSE之間差值小于1e-5。
在實(shí)驗(yàn)中,對(duì)每個(gè)算法選取好合適的參數(shù)后,再將P、Q矩陣中的隱含特征數(shù)量K分別設(shè)定為10、20、50。并在每個(gè)K值下進(jìn)行多次實(shí)驗(yàn),取平均值為最后的RMSE結(jié)果。
4.4 ? 實(shí)驗(yàn)結(jié)果與分析
實(shí)驗(yàn)比較了五種算法在不同隱含特征參數(shù)下的結(jié)果。在實(shí)驗(yàn)中分別設(shè)定隱含特征數(shù)量為10、20、50。表2給出了不同算法在不同隱含特征參數(shù)下RMSE的結(jié)果,根據(jù)表2可以得出以下結(jié)論:
(1)隨著隱含特征的增大,各個(gè)算法精度都有一定的提高。
(2)BiasSVD算法與FunkSVD算法相比,結(jié)果有了不小的提高,這說明在算法中融合偏置因素對(duì)結(jié)果的提升是有作用的。
(3)本文設(shè)計(jì)的Time-BiasSVD算法相比BiasSVD算法和FunkSVD算法,以及SVD++算法在結(jié)果上都有較大的提升,這說明本文提出的融合時(shí)間信息的方法可以有效的提高推薦精度。
(4)本文設(shè)計(jì)的Time-BiasSVD算法與Koren等人的timeSVD++算法相比,在推薦精度上也有較大提高。
5 ? 結(jié)論(Conclusion)
本文使用用戶對(duì)電影的評(píng)分信息,以及給予評(píng)分的時(shí)間信息,設(shè)計(jì)出了融合時(shí)間信息的協(xié)同過濾算法Time-BiasSVD。使用變形的Sigmoid函數(shù)將時(shí)間信息融入到BiasSVD算法的用戶偏置項(xiàng)中,同時(shí)使用流行度函數(shù)將時(shí)間信息融入到了物品偏置項(xiàng)中。經(jīng)過實(shí)驗(yàn)結(jié)果對(duì)比,本文提出的Time-BiasSVD算法與SVD++、FunkSVD,以及工業(yè)界常用的傳統(tǒng)推薦算法,例如傳統(tǒng)隱語義模型算法和koren等人的timeSVD++算法相比,推薦精度有了顯著提高。
由于影響推薦效果的因素還有很多,在算法中考慮的因素仍然有豐富的空間。為了更符合用戶的動(dòng)態(tài)需求,而不是他過去的需求,可以考慮一些影響用戶未來需求的因素:比如潮流的因素,用戶所在社交網(wǎng)絡(luò)的環(huán)境特點(diǎn),用戶的消費(fèi)水平動(dòng)態(tài)變化等。在接下來的研究里,我們將繼續(xù)挖掘偏置項(xiàng)的特點(diǎn)對(duì)算法進(jìn)行改進(jìn),尋找更加完善的模型,以便能夠快速智能地得出個(gè)性化的推薦方案,有效地保證甚至提高推薦系統(tǒng)的推薦精度。
參考文獻(xiàn)(References)
[1] 劉青文.基于協(xié)同過濾的推薦算法研究[D].合肥:中國科學(xué)技術(shù)大學(xué),2013.
[2] 孔維梁.協(xié)同過濾推薦系統(tǒng)關(guān)鍵問題研究[D].武漢:華中師范大學(xué),2013.
[3] 王明佳,韓景倜.基于用戶對(duì)項(xiàng)目屬性偏好的協(xié)同過濾算法[J].計(jì)算機(jī)工程與應(yīng)用,2017,53(6):106-110.
[4] 錢曉捷,張路一.融合評(píng)分結(jié)構(gòu)特征與偏好距離的協(xié)同過濾推薦算法[J].計(jì)算機(jī)工程,2017,43(5):185-190.
[5] 李強(qiáng),何興盛,傅忠謙.基于用戶與物品間差異的推薦算法研究[J].中國科學(xué)技術(shù)大學(xué)學(xué)報(bào),2016,46(2):113-119.
[6] Zhou X,He J,Huang G,et al.A Personalized Recommendation Algorithm Based on Approximating the Singular Value Decomposition (ApproSVD)[C].Ieee/wic/acm International Conferences on Web Intelligence and Intelligent Agent Technology.IEEE,2013:458-464.
[7] 鄭鵬,王應(yīng)明,梁薇.基于信任和矩陣分解的協(xié)同過濾推薦算法[J].計(jì)算機(jī)工程與應(yīng)用,2018,54(13):34-40.
[8] Ar Y,Bostanci E.A genetic algorithm solution to the collaborative filtering problem[J].Expert Systems with Applications,2016,61:122-128.
[9] 臣健美,孫亞軍.基于用戶近鄰的N維張量分解推薦算法[J].計(jì)算機(jī)工程,2017,43(11):193-197.
[10] Koren,Yehuda.Collaborative filtering with temporal dynamics[C].ACM,2009:447-456.
[11] Bakir C.Collaborative Filtering with Temporal Dynamics with Using Singular Value Decomposition[J].Tehnicki Vjesnik,2018,25(1):130-135.
[12] 孫光福,吳樂,劉淇,等.基于時(shí)序行為的協(xié)同過濾推薦算法[J].軟件學(xué)報(bào),2013,24(11):2721-2733.
[13] 孫雀,盧劍波,張鳳鳳,等.植物物種多樣性與島嶼面積的關(guān)系[J].生態(tài)學(xué)報(bào),2009,29(5):2195-2202.
[14] 郭新明,弋改珍.混合模型的用戶興趣漂移算法[J].智能系統(tǒng)學(xué)報(bào),2010,5(2):91-94.
作者簡(jiǎn)介:
李明秀(1998-),女,本科生.研究領(lǐng)域:推薦系統(tǒng).
王淑軍(1996-),男,碩士生.研究領(lǐng)域:分布式系統(tǒng),知識(shí)圖譜.
賈 ?如(1982-),女,博士,講師.研究領(lǐng)域:推薦系統(tǒng),數(shù)據(jù)挖掘.
陳立榮(1980-),女,講師,博士生.研究領(lǐng)域:電子商務(wù)信譽(yù)與信任.本文通訊作者.