孫克雷,王琰
(安徽理工大學(xué) 計算機科學(xué)與工程學(xué)院,淮南 232001)
隨著互聯(lián)網(wǎng)的普及和迅速發(fā)展,每天都能接收到大量的信息,互聯(lián)網(wǎng)在滿足用戶對信息需求的同時,也使得用戶難以在海量信息中獲得真正對自己有價值的那部分信息,從而降低了信息的利用率,出現(xiàn)了“信息過載”的問題。推薦系統(tǒng)則是為解決這一問題產(chǎn)生的,它是一種幫助用戶在眾多的選擇中做出決策的智能系統(tǒng),當(dāng)用戶瀏覽自己喜歡的物品時,推薦系統(tǒng)會根據(jù)他的喜好相應(yīng)地推薦出與當(dāng)前物品相關(guān)的其他物品,從而提高了查找信息的效率。目前已經(jīng)出現(xiàn)了各種形式的推薦系統(tǒng)[1-2]。
在推薦系統(tǒng)中有許多經(jīng)典的推薦算法,協(xié)同過濾算法就是其中之一,但在生活實踐和實驗研究中發(fā)現(xiàn)它還有一些潛在的問題,例如數(shù)據(jù)稀疏[3-4]、用戶興趣難以獲取[5]和冷啟動[6]等問題?;谶@些急需解決的問題,國內(nèi)外學(xué)者和專家對此都做出了巨大的努力,他們從各個方面剖析問題,并取得了一些成果。
劉東輝[7]等人通過定義時間指數(shù)函數(shù)來反映用戶興趣隨時間增長而發(fā)生變化,并通過建立用戶的特征矩陣,采用一種新的相似度度量方法計算出目標(biāo)用戶的最近鄰居集合。趙文濤[8]等人主要是對用戶相似度進行改進,提出對Logistic時間權(quán)重函數(shù)與用戶特征屬性進行加權(quán)計算,形成一種新的相似性度量模型,在新的模型下更好的求出目標(biāo)用戶的相似集合。陳志敏[9]等人在計算用戶相似性過程中引入與時間相關(guān)的興趣度,使得得到的最近鄰居更加準(zhǔn)確,預(yù)測評分時,通過衡量用戶信任度來體現(xiàn)各鄰居對目標(biāo)用戶最終推薦的貢獻(xiàn)程度。
上述研究將時間指數(shù)函數(shù)加入到相似度的度量中,體現(xiàn)了用戶興趣隨時間變化規(guī)律;但未考慮不同用戶興趣變化速率的差異,針對這個問題,本文提出了一種基于用戶特征和時間權(quán)重的協(xié)同過濾算法。首先在修正的余弦公式中引入用戶特征參數(shù),得出一個新的相似度矩陣;然后由新的相似度矩陣求出鄰居用戶,得到較為精確的最近鄰居集;最后求預(yù)測評分時,引入了時間函數(shù),但在時間函數(shù)中考慮到不同時間范圍用戶的興趣衰減不同,提出了全新的時間函數(shù),以解決用戶興趣變化問題,從而求出新的預(yù)測評分,為用戶做出推薦。
在傳統(tǒng)的協(xié)同過濾算法中,一般假定用戶集合用 U={U1,U2,…,Um}表示,項目集合用 I={I1,I2,…,In}表示,兩者組成一個用戶-項目評分矩陣,且該矩陣是一個m×n階矩陣,并用R(m×n)表示,如表1所示。
表1 用戶-項目評分矩陣R(m×n)
其中,矩陣的行數(shù)為m行,列數(shù)為n列。m行表示有m個用戶,n列表示有n個項目。假設(shè)某一用戶 Ua對項目 Ij(其中 Ua∈U,Ij∈I)的評分為 Ra,j,這個評分反映了用戶Ua對項目Ij產(chǎn)生興趣的程度。
基于用戶的協(xié)同過濾算法首先利用傳統(tǒng)的相似度公式求出目標(biāo)用戶的最近鄰居集[10],再根據(jù)鄰居用戶的評分矩陣來得出目標(biāo)用戶的預(yù)測評分。這里采用修正的余弦來度量用戶u和v的相似度,其表達(dá)式為:
其中,u,v分別代表用戶u和用戶v;Iuv表示用戶u和用戶v共同評分的項目集合,Iu和Iv分別表示用戶u,v評分的項目集合;Ru,j和Ru代表用戶u對項目j的評分和平均評分,Rv,j和Rv代表用戶v對項目j的評分和平均評分。計算結(jié)果sim(u,v)的值落在[-1,1]區(qū)間中,如果sim(u,v)的絕對值越大,則表明用戶u、v間的相關(guān)程度就越大。
根據(jù)公式(1)求出兩兩用戶的相似度值所構(gòu)建的相似度矩陣,從大到小排序選出s個近鄰用戶作為最近鄰居集S,使用公式(2)可以計算目標(biāo)用戶u對推薦項目的預(yù)測評分,如式2所示:
其中Pu,j表示目標(biāo)用戶u對項目j的預(yù)測評分,sim(u,v)表示用戶u和用戶v的相關(guān)系數(shù)。
該算法利用Movie Lens數(shù)據(jù)集,首先根據(jù)數(shù)據(jù)集中的用戶信息表提取用戶特征信息,并對特征進行分類標(biāo)記,經(jīng)過量化處理后得到實驗所需數(shù)據(jù)。再把其引入到修正的余弦相似性計算中,計算出基于用戶特征的用戶相似性,從而得到較為精確的最近鄰居集。然后在求預(yù)測評分時加入時間函數(shù),通過給評分賦予權(quán)重來反應(yīng)用戶的興趣變化,從而降低用戶興趣的遷移對推薦結(jié)果的影響,最終獲得符合用戶喜好和需求的推薦。
2.1.1 用戶特征的提取
用戶特征屬性相對客觀穩(wěn)定,在實際生活中,特征類似的兩個用戶,其興趣往往有較大的相似性,而具有不同特征的用戶,其興趣偏好則存在很大的差異性[11]。一般在注冊一些網(wǎng)站時,用戶需要對自己的基本信息進行備注,如年齡、性別、職業(yè)等。本文將用戶填寫的特征信息進行數(shù)字化處理后形成數(shù)據(jù)集加入到相似度計算中,減小了由傳統(tǒng)方法得到的相似用戶對目標(biāo)用戶的影響,從而找出較為精確的最近鄰居集合。根據(jù)所用的數(shù)據(jù)集,這里簡化地畫出一個用戶特征屬性表,如表2所示:
表2 用戶特征屬性表
2.1.2 基于用戶特征的相似度計算
1)根據(jù)上節(jié)中建立的用戶特征屬性表,把用戶特征主要分為四類即年齡、性別、職業(yè)、郵政編碼。其中根據(jù)年齡段的分類對其編號可表示為{0,1,2,3,…};把用戶的性別分別記為{“M”,“F”},M表示0,F(xiàn)表示1;對職業(yè)的分類,這里把每一種出現(xiàn)的職業(yè)都進行編號,結(jié)果可為{0,1,2,3,…}。
2)根據(jù)第一步得到的特征數(shù)據(jù)集,可以計算用戶之間的特征相關(guān)性。特征相關(guān)性表示兩用戶之間相同特征的個數(shù)在特征總數(shù)中所占的比重,并用sim1表示。其中兩用戶之間的特征屬性比較我們用Compare函數(shù)表示。計算過程如下:
假設(shè)有一個關(guān)于m、n的用戶特征矩陣A=[m,n],其中m表示用戶個數(shù),n表示特征個數(shù)。Au,j表示用戶u的第j個特征,Av,j為用戶v的第j個特征,當(dāng)Au,j=Av,j時,Compare值為1,當(dāng)Au,j≠Av,j時,Compare值為0。Compare值為1時表示用戶u,v的特征相同,Compare值為0時表示用戶u,v特征不同,特征相似性計算如下所示:
3)結(jié)合以上兩個步驟將求出的公式(3)加入到修正的余弦相似性系數(shù)中,進一步計算得出改進的基于用戶特征的相似度sim(u,v),公式如下:
用戶的興趣愛好是隨著時間發(fā)生變化的,但傳統(tǒng)算法并未考慮到用戶在不同時間的興趣變化,針對推薦系統(tǒng)中興趣遷移的問題,本文引入時間函數(shù)的方法賦予評分時間權(quán)重來體現(xiàn)用戶的興趣偏好差異,用戶對項目評分的時間越遠(yuǎn),其權(quán)重越小,評分的時間越近,其權(quán)重就越大,使用戶興趣的遷移對推薦算法產(chǎn)生的影響有所緩解,以實現(xiàn)更加準(zhǔn)確的實時推薦。
通過實驗研究發(fā)現(xiàn)用戶興趣的變化符合某種非線性遞減的規(guī)律,本文通過時間衰減函數(shù)f(u,t)來表示這種規(guī)律,公式如下:
其中,f(u,t)為時間衰減函數(shù),t表示當(dāng)前時刻,tu,j表示用戶u對項目j評分的時間,I表示用戶u對項目j的評分集合,k表示時間范圍,每當(dāng)取不同的k值時,反映每個不同范圍內(nèi)用戶對項目的興趣衰減變化情況,從而得出用戶興趣發(fā)生遷移的轉(zhuǎn)折點。
針對傳統(tǒng)的協(xié)同過濾算法未能反映出用戶自身特征和用戶興趣隨時間變化的問題對推薦結(jié)果產(chǎn)生的影響,本文提出了基于用戶特征和時間權(quán)重的推薦算法。首先根據(jù)2.1節(jié)中的用戶特征參數(shù)(公式3)求出新的相似性關(guān)系(公式4),再結(jié)合2.2小節(jié)中提出的時間函數(shù)(公式5)給項目評分賦予時間權(quán)重,共同引入最終的預(yù)測評分公式,從而能夠在考慮到用戶本身屬性的同時又能夠反應(yīng)出用戶的興趣變化,最后得出目標(biāo)用戶u對任意項目j(j∈I)新的預(yù)測評分,其表達(dá)式為:
其中S'表示加入用戶特征之后新的最近鄰居集,從公式(6)中可以看出,用戶u對未評分項j的最終預(yù)測評分Qu,j是在傳統(tǒng)的預(yù)測評分Pu,j基礎(chǔ)上,通過用戶u的最近鄰居加權(quán)得到。其中權(quán)重由兩部分組成,一是在求最近鄰居與目標(biāo)用戶的相似度中融入了用戶特征,相似度越高,權(quán)重就越大;二是根據(jù)相似用戶對目標(biāo)用戶未評分項的評分時間進行時間加權(quán),評分時間離當(dāng)前時間越短,權(quán)重越大,反之權(quán)重越小。
輸入:用戶-評分矩陣,用戶-特征矩陣,用戶-項目-評分時間矩陣。
輸出:推薦項目列表。
Step1.計算傳統(tǒng)的預(yù)測評分。首先利用公式(1)得到目標(biāo)用戶的鄰居用戶,再利用所得鄰居用戶通過公式(2)計算出目標(biāo)用戶未評分過的項目的傳統(tǒng)預(yù)測評分。
Step2.獲取用戶特征參數(shù)。加入的用戶特征參數(shù)是為了減小由傳統(tǒng)方法得到的相似用戶對目標(biāo)用戶的影響。首先利用公式(3)求出兩個用戶之間的特征相關(guān)性,然后將其加入到修正的余弦相似度公式(4)中,最后得到一種新的用戶特征相似度。
Setp3.構(gòu)造體現(xiàn)用戶興趣遷移的時間函數(shù)。用戶興趣容易受外界環(huán)境因素的影響,興趣經(jīng)常會發(fā)生改變,針對傳統(tǒng)推薦算法沒有考慮到用戶興趣會隨著時間的推移而發(fā)生遷移的問題,本文通過公式(5)的時間函數(shù),解決了用戶興趣偏好發(fā)生變化的問題,使時間最近產(chǎn)生的興趣權(quán)重最大,從而提高了推薦的效果。
Step4.生成推薦列表。根據(jù)公式(6)在最終預(yù)測評分中引入時間函數(shù),得出新的預(yù)測評分,形成Top-N推薦列表。
針對以下三個問題進行實驗研究:(1)選取用戶發(fā)生興趣遷移的K值;(2)不同推薦數(shù)目對推薦性能的影響;(3)在推薦性能上本文算法與其他算法相對比的結(jié)果。
本文使用Movie Lens網(wǎng)站提供的數(shù)據(jù)作為實驗數(shù)據(jù)集[12]。Movie Lens數(shù)據(jù)集有3個不同大小的版本,本文選用其中的ml-100k數(shù)據(jù)集。該數(shù)據(jù)集記錄了943個用戶對1682部電影的十萬條評分信息。每個用戶可以給電影評5個不同等級的分?jǐn)?shù)(1-5分),用戶對電影評分的高低代表了用戶對電影的喜愛程度,而且每個用戶對電影進行評分的數(shù)量都超過了20部。本文利用數(shù)據(jù)集中三個用戶文件即u.base、u.test和u.user進行實驗研究。其中u.base主要存放了80%的實驗數(shù)據(jù),用作訓(xùn)練集;u.test中存放了20%的實驗數(shù)據(jù),用作測試集,訓(xùn)練集和測試集主要由用戶ID、項目ID、評分以及時間戳構(gòu)成;u.user主要存放著用戶特征信息包括性別、年齡、職位、郵編。
為實現(xiàn)實驗結(jié)果本文使用Matlab軟件平臺進行相關(guān)實驗,在實驗結(jié)果中對算法的推薦性能進行評價,評價的標(biāo)準(zhǔn)是平均絕對誤差(Mean Absolute Error,MAE)[13,17],因為MAE主要用于度量預(yù)測評分與實際評分之間的偏差,如果偏差越小,則預(yù)測的準(zhǔn)確度就越高。MAE的定義為:
上式中設(shè)定用戶的預(yù)測評分集合pi表示為{p1,p2,...,pn},真實評分集合qi表示為{q1,q2,...,qn}。
在傳統(tǒng)UserCF算法基礎(chǔ)上,采用加入非線性時間函數(shù),解決了在一段時間內(nèi)用戶發(fā)生興趣偏移的問題。其中,在時間函數(shù)中引入了參數(shù)K作為一種時間段,在參數(shù)K選取中,不同的參數(shù)K間接對實驗的MAE有著不同的影響。K值可分別取值為604800(一周)、2592000(30天)、10368000(一季度)、15768000(半年)和31536000(一年)。得到的實驗結(jié)果如圖1所示。
圖1 選取最佳時間間隔K值
由圖1可得知傳統(tǒng)CF算法是呈現(xiàn)逐漸下降趨勢的,但是推薦的效果不是很好,MAE的值都高于0.9,但是文獻(xiàn)[14]即基于時間加權(quán)的混合推薦算法相對于傳統(tǒng)的推薦算法來說效果會好一點,可以看到隨著K值的增大MAE的值會有先下降在上升的現(xiàn)象。本文算法也有類似現(xiàn)象,但是本文算法在K值為一個月時,MAE值先發(fā)生上升后發(fā)生下降的現(xiàn)象,這說明用戶一開始對項目還處在接受期,還沒有產(chǎn)生興趣,后來隨著時間的推移開始產(chǎn)生興趣,此時MAE一直處于下降趨勢,但是到了半年之后即K為15768000時,MAE值又有小幅上升趨勢,可能的原因是用戶對該項目的興趣正在發(fā)生改變,現(xiàn)在網(wǎng)絡(luò)發(fā)展很快,各種商品琳瑯滿目,更新?lián)Q代特別快,用戶對某一項目感興趣的時間發(fā)生變化也就越來越快。因此,由圖1可得,當(dāng)K值為半年時,用戶對項目的興趣度會發(fā)生轉(zhuǎn)變。
針對本文所提出的算法,根據(jù)不同的推薦數(shù)目(top-10、top-20、top-30、top-40)在相同K值的情況下觀察MAE的大小,實驗的結(jié)果如圖2表示。
圖2 不同推薦數(shù)目的MAE值比較實驗
圖2 的實驗結(jié)果顯示當(dāng)K值相同時不同推薦數(shù)目對應(yīng)的MAE值不同,隨著K值的增大,推薦項目為10的MAE值總是比其他三個推薦項目數(shù)的MAE值高。推薦項目過少可能會導(dǎo)致預(yù)測評分與真實評分偏差過大,從而導(dǎo)致MAE值過高。當(dāng)K值為一個月時,不同推薦數(shù)目的MAE值都出現(xiàn)快速上升現(xiàn)象,隨后又都開始下降,發(fā)生顯著上升和下降的原因可能是用戶首先對項目進行了解,但并沒有產(chǎn)生興趣,后來隨著事件推移發(fā)生興趣,MAE緩慢下降。當(dāng)在一個季度期間時,可以看出推薦項目為30是較好的。當(dāng)K值在一個季度之后,MAE值趨于平緩,此時推薦項目為20的時候,效果較好。
這里將本文算法與傳統(tǒng)UserCF算法、文獻(xiàn)[15]和文獻(xiàn)[16]在推薦性能上進行比較,其中文獻(xiàn)[15]是面向電影推薦的時間加權(quán)協(xié)同過濾算法的研究,文獻(xiàn)[16]是基于時間加權(quán)的協(xié)同過濾算法。實驗結(jié)果比較如圖3所示。
圖3 不同推薦算法的MAE值比較
通過實驗圖3可知,本文算法在準(zhǔn)確性方面優(yōu)于傳統(tǒng)的UserCF算法和圖3中其他兩個算法,因為本文的MAE值總體都比其他算法的MAE值低,即平均絕對誤差較小,所以準(zhǔn)確率略高。不過隨著鄰居數(shù)目的增多,MAE值發(fā)生略微上升現(xiàn)象,這是因為鄰居用戶的不斷增多導(dǎo)致預(yù)測評分公式計算出的預(yù)測評分與實際評分之間的誤差變大,從而使得實驗的MAE值會有略微提高,準(zhǔn)確率也會發(fā)生略微下降。
針對當(dāng)前UserCF算法未能反映出用戶自身特征和用戶興趣隨時間變化對推薦性能產(chǎn)生影響的問題,本文提出了基于用戶特征和時間權(quán)重的推薦算法。該算法中的用戶特征屬性主要包括性別、年齡、職業(yè)等,首先根據(jù)用戶特征信息求出用戶的特征相關(guān)性,為目標(biāo)用戶產(chǎn)生更加準(zhǔn)確的相似用戶。然后再加入時間函數(shù)求出預(yù)測評分,最后給用戶做出推薦。實驗結(jié)果驗證了該算法在推薦的結(jié)果上具有較高的準(zhǔn)確性。但本文算法仍有一些需要改進的地方,其中算法效率還不夠理想,因為隨著鄰居數(shù)目的增加,推薦的性能沒有發(fā)生明顯地提高;另外在時間函數(shù)方面還存在不足之處,因為利用時間函數(shù)求出的預(yù)測評分的準(zhǔn)確性還有待提高,因此如何有效的提升運算效率,并進一步改進推薦的準(zhǔn)確率,這是下一步要研究的工作。
[1]SARWAR B,KARYPIS G,KONSTAN J,et al.Analysis of recommendation algorithms for ecommerce[C]//ACM Conference on Electronic Commerce.New York:ACM,2000:158-167.
[2]SCHAFER J B,KONSTAN J A,RIED J.E-commerce recommendation applications[J].Data Mining and Knowledge Discovery,2001,5(1/2):115-153.
[3]付芬,豆育升,韓鵬,等.基于隱式評分和相似度傳遞的學(xué)習(xí)資源推薦[J].計算機應(yīng)用研究,2017,(12):1-8.
[4]WEI S,YE N,ZHANG S,et al.Collaborative filtering recommendation algorithm based on item clustering and global similarity[C]//2012 Fifth International Conference on Business Intelligence and Financial Engineering(BIFE).IEEE,2012:69-72.
[5]Qi Liu,Enhong Chen,Hui Xiong,et al.Enhancing collaborative filtering by user interest expansion via personalizedranking.[J].IEEETransactionson SystemsMan&Cybernetics,2011,42(1):218-233.
[6]于洪,李俊華.一種解決新項目冷啟動問題的推薦算法[J].軟件學(xué)報,2015,26(06):1395-1408.
[7]劉東輝,彭德巍,張暉.一種基于時間加權(quán)和用戶特征的協(xié)同過濾算法 [J].武漢理工大學(xué)學(xué)報.2012,34(5):144-148.
[8]趙文濤,成亞飛,王春春.基于Logistic時間函數(shù)和用戶特征的協(xié)同過濾算法[J].計算機應(yīng)用與軟件,2017,34(2):285-289.
[9]陳志敏,李志強.基于用戶特征和項目屬性的協(xié)同過濾推薦算法[J].計算機應(yīng)用,2011,31(7):1748-1750.
[10]王茜,王均波.一種改進的協(xié)同過濾推薦算法[J].計算機科學(xué),2010,37(6):226-228.
[11]李永超,羅軍.基于用戶部分特征的協(xié)同過濾算法[J].計算機系統(tǒng)應(yīng)用,2017(26)03:204-208.
[12]MovieLens數(shù)據(jù)集[EB/OL]https://grouplens.org/datasets/movie-lens/.
[13]HERLOCKER L J,KONSTAN A J,TERVEEN G L,et al.Evaluating collaborative filtering recommender systems[J].ACM Transactions on Information Systems,2004,22(1):5-53.
[14]鄭鷺升.基于時間加權(quán)的混合推薦算法研究[D].廈門:廈門大學(xué),2013.
[15]蘭艷,曹芳芳.面向電影推薦的時間加權(quán)協(xié)同過濾算法的研究[J].計算機科學(xué),2017,44(04):295-301+322.
[16]叢曉琪,楊懷珍,劉枚蓮.基于時間加權(quán)的協(xié)同過濾算法研究 [J].計算機應(yīng)用與軟件,2009,26(08):120-121+140.
[17]紀(jì)科.融合上下文信息的混合協(xié)同過濾推薦算法研究[D].北京:北京交通大學(xué),2016.