龔 成,王 潔,汪麗君
(北京工業(yè)大學(xué) 信息學(xué)部,北京 100124)
推薦系統(tǒng)是目前最有發(fā)展和應(yīng)用前景的系統(tǒng),推薦引擎已經(jīng)在電子商務(wù)(例如 Amazon、淘寶、京東等)和一些基于用戶娛樂的社會(huì)化站點(diǎn)(包括音樂、電影和圖書,例如愛奇藝、豆瓣等)上取得了成功。目前推薦系統(tǒng)主要分為兩大類,分別是基于內(nèi)容的推薦系統(tǒng)和基于協(xié)同過濾技術(shù)的推薦系統(tǒng)。
協(xié)同過濾技術(shù)(Collaborative Filtering,CF)[1]是推薦系統(tǒng)中應(yīng)用最早和最為成功的技術(shù)之一,但是隨著商務(wù)網(wǎng)站結(jié)構(gòu)的復(fù)雜化,商品信息和用戶量與日俱增,協(xié)同過濾技術(shù)面臨一系列挑戰(zhàn),主要存在實(shí)時(shí)性差、數(shù)據(jù)稀疏以及推薦質(zhì)量低等問題[2]。原因主要是用戶不能產(chǎn)生足夠多的有效數(shù)據(jù)。
基于隱因子模型的協(xié)同過濾算法是目前解決上述問題應(yīng)用最廣泛的模型。其中,在解決原始矩陣稀疏性問題上,Sarwar等[3]提出利用單值分解對(duì)原始稀疏數(shù)據(jù)進(jìn)行處理,將矩陣分解到較低維的稠密矩陣;Salakhutdunov等[4-5]提出概率矩陣分解用來解決稀疏性,并將其與受限玻爾茲曼機(jī)線性結(jié)合,取得了不錯(cuò)效果。在處理推薦質(zhì)量低問題上,Weston等[6]通過對(duì)用戶模型建立多維度特征集,描述用戶不同的興趣,與項(xiàng)目匹配的最大興趣進(jìn)行推薦,模型是一個(gè)非線性的隱因子模型。為解決協(xié)同過濾中實(shí)時(shí)性差和推薦質(zhì)量低的問題,沈鍵等[7]提出基于滾動(dòng)時(shí)間窗的動(dòng)態(tài)協(xié)同過濾推薦模型,提高了協(xié)同過濾算法的時(shí)效性;項(xiàng)亮[8]將時(shí)間信息作為第三個(gè)維度,然后利用張量分解方式將動(dòng)態(tài)變化模型化。上述兩種模型僅僅模擬了數(shù)據(jù)隨時(shí)間變化的程度,而沒有研究連續(xù)時(shí)間內(nèi)數(shù)據(jù)的動(dòng)態(tài)變化以及預(yù)測(cè)未來時(shí)間內(nèi)的推薦結(jié)果。
基于隱因子模型的協(xié)同過濾算法,主要技術(shù)是通過矩陣分解(Matrix Factorization,MF)對(duì)項(xiàng)目評(píng)分進(jìn)行預(yù)測(cè),其中最常見的是奇異值分解(Singular Value Decomposition,SVD)算法。Koren等[9]改進(jìn)SVD算法并提出新的SVD++算法,在原算法中加入用戶行為的顯示因子記錄,使得算法精確度得到較大提升。但該算法無法處理未來時(shí)間的動(dòng)態(tài)變化,且忽略了用戶個(gè)體的特征信息[10]。
因此,本文在此基礎(chǔ)上改進(jìn)SVD++算法[11],加入含有動(dòng)態(tài)時(shí)序因子的用戶偏置和項(xiàng)目偏置[12],同時(shí)在算法中加入用戶的特征信息影響因子(性別、年齡、職業(yè)),提出一種新的SpecialTSVD++算法。實(shí)驗(yàn)結(jié)果表明,SpecialTSVD++算法對(duì)時(shí)間動(dòng)態(tài)變化帶來的推薦影響進(jìn)行了優(yōu)化處理[13],訓(xùn)練集在算法訓(xùn)練過程中求得的參數(shù)都與時(shí)間相關(guān),推薦結(jié)果更加貼近用戶當(dāng)前需求,顯著提升了推薦系統(tǒng)準(zhǔn)確率。
推薦系統(tǒng)旨在預(yù)測(cè)用戶對(duì)未知項(xiàng)目的偏好程度,可以轉(zhuǎn)化為矩陣填充問題,推薦過程中用戶評(píng)分?jǐn)?shù)據(jù)分布在一個(gè)二維評(píng)分矩陣中[14]。數(shù)據(jù)用二元組 (rui,tui) 表示,其中rui表示用戶u對(duì)項(xiàng)目i的評(píng)分?jǐn)?shù)據(jù),tui表示當(dāng)時(shí)的評(píng)分時(shí)間,如果用戶對(duì)項(xiàng)目沒有評(píng)分,則矩陣中對(duì)應(yīng)項(xiàng)的值為空[15]。推薦系統(tǒng)通過預(yù)測(cè)評(píng)分矩陣中的缺失值達(dá)到推薦目的。
處理協(xié)同過濾中矩陣分解問題時(shí),目前研究都集中在基于梯度下降的矩陣分解模型[16]。該模型表示:?jiǎn)蝹€(gè)用戶和項(xiàng)目可以通過一組維數(shù)相同的潛在特征向量建模[17],而單個(gè)用戶對(duì)項(xiàng)目的評(píng)分可以通過用戶特征向量pu和項(xiàng)目特征向量qi的點(diǎn)乘建模,如式(1)所示。
(1)
因?yàn)槟P驮跁r(shí)間復(fù)雜度和空間復(fù)雜度上都有較大優(yōu)勢(shì)[18],且預(yù)測(cè)精度得到提高,所以在此基礎(chǔ)上研究人員提出了很多改進(jìn)模型,其中效果最優(yōu)的是SVD模型[19]。SVD模型是在矩陣分解模型的基礎(chǔ)上加入基準(zhǔn)預(yù)測(cè),如式(2)所示。
(2)
其中,μ表示全局平均分,bu是用戶u的偏置(bias),表示此用戶相對(duì)于全局平均分的偏差;bi是項(xiàng)目i的偏置,表示此項(xiàng)目相對(duì)于全局平均分的偏差;pu表示用戶u的潛在因子特征向量,qi表示項(xiàng)目i的潛在因子特征向量,該兩個(gè)特征向量的內(nèi)積表示用戶與項(xiàng)目的相互影響作用大小。
SVD++算法模型相對(duì)于SVD更加精細(xì),該模型在SVD基礎(chǔ)上加入了隱式數(shù)據(jù)表達(dá)的物品興趣偏好[20]。用戶對(duì)項(xiàng)目評(píng)分類型的數(shù)據(jù)為顯式數(shù)據(jù),而用戶的行為數(shù)據(jù),如瀏覽電影詳情頁、觀看電影等,稱為隱式數(shù)據(jù)[21]。隱式數(shù)據(jù)反映了用戶的興趣偏好,即隱式反饋。而在現(xiàn)實(shí)推薦系統(tǒng)中,隱式數(shù)據(jù)才是主體數(shù)據(jù)。于是評(píng)分變?yōu)轱@式興趣+偏置+隱式反饋,用戶興趣=顯式興趣+隱式反饋,新的評(píng)分公式如式(3)所示。
(3)
式(3)中,N(u)表示用戶u的行為項(xiàng)目集,即用戶評(píng)價(jià)過的所有項(xiàng)目集合;yj表示項(xiàng)目j所表達(dá)的隱式反饋。此即為SVD++在SVD的基礎(chǔ)上加入隱式反饋因素,更細(xì)致地表達(dá)了用戶興趣。
隨著時(shí)間的延續(xù),用戶對(duì)項(xiàng)目的喜好以及項(xiàng)目受歡迎程度都會(huì)發(fā)生變化[22],但是SVD++模型中并沒有考量時(shí)間對(duì)于用戶以及項(xiàng)目的影響,因?yàn)閭鹘y(tǒng)SVD++模型中所有參數(shù)不包含時(shí)間變量,所有參數(shù)都由梯度下降直接求得,在迭代過程中所有參數(shù)變化都是梯度下降的過程。上文提到評(píng)分矩陣的基本數(shù)據(jù)是二元組形式 (rui,tui)[23],原本評(píng)分矩陣的數(shù)據(jù)稀疏性會(huì)影響推薦的準(zhǔn)確性,所以推薦模型更應(yīng)該考慮如何利用已有數(shù)據(jù)對(duì)推薦結(jié)果產(chǎn)生積極影響。本文在SVD++模型基礎(chǔ)上加入了時(shí)間因子,用來體現(xiàn)用戶偏置、項(xiàng)目偏置和用戶偏好特征向量隨時(shí)間的變化,主要實(shí)現(xiàn)過程是把原來的參數(shù)擬合成時(shí)間函數(shù)形式,并且在SpecialTSVD++算法中加入用戶屬性,可以為用戶提供更加個(gè)性化的推薦。用戶屬性可以通過數(shù)據(jù)集中的注冊(cè)信息表得到,本文從中提取年齡、性別和職業(yè)3個(gè)屬性,用加權(quán)方式豐富了平均分μ的概念,提升了SpecialTSVD++算法的容錯(cuò)率。
SpecialTVD++算法改進(jìn)了SVD++算法中3個(gè)受時(shí)間影響較大的參數(shù),分別是bu、bi和pu。用戶偏置bu會(huì)隨時(shí)間變化而變化,例如,一個(gè)傾向于對(duì)普通電影評(píng)分為4分的用戶,現(xiàn)在對(duì)一部同類電影評(píng)分3分,反映了幾個(gè)可能因素:用戶評(píng)分過程中的自然漂移;最近給出的其它評(píng)分與該評(píng)分之間的關(guān)系;一個(gè)家庭中評(píng)分者的身份隨時(shí)間而變化。對(duì)于項(xiàng)目偏置bi,項(xiàng)目受外界事件影響可能變得流行或者過時(shí),例如若老電影中的普通演員出名了,則該電影的平均評(píng)分也會(huì)隨之提高。用戶偏好pu是時(shí)間變化過程中必須考量的參數(shù),因?yàn)橛脩舯旧硎请S時(shí)間變化的,所以用戶偏好一定是隨時(shí)間變化的,例如小時(shí)候偏向于看動(dòng)畫片,成年之后偏向于看科幻片。SpecialTSVD++算法使用時(shí)間函數(shù)分別表示上述3個(gè)參數(shù)的時(shí)間變化,改進(jìn)的評(píng)分公式如式(4)所示。
(4)
其中,bu(t)、bi(t)和pu(t)是分別對(duì)應(yīng)的時(shí)間函數(shù),下文將分別詳細(xì)介紹各函數(shù)的組成部分和參數(shù)構(gòu)成。
2.1.1 融入動(dòng)態(tài)時(shí)序的用戶偏置
(5)
其中,sgn( )為符號(hào)函數(shù),βu的值由交叉驗(yàn)證選??;式(5)定義了時(shí)間偏差后,bu(t)函數(shù)表示在原本的用戶偏置上因?yàn)闀r(shí)間推移會(huì)產(chǎn)生偏差,所以定義成式(6)。
bu(t)=bu+αu·devu
(6)
其中,bu為固定部分,αu·devu為隨時(shí)間變化的部分。對(duì)每個(gè)用戶選取一個(gè)對(duì)應(yīng)的新參數(shù)αu,該參數(shù)也將加入梯度下降的訓(xùn)練中。
2.1.2 融入動(dòng)態(tài)時(shí)序的項(xiàng)目偏置
項(xiàng)目受歡迎程度會(huì)隨時(shí)間變化,因?yàn)殡S時(shí)間推移,某個(gè)項(xiàng)目可能會(huì)在特定環(huán)境下有新的定義,此時(shí)對(duì)該項(xiàng)目的評(píng)分會(huì)明顯提高或下降。以本文數(shù)據(jù)集中的電影為例,在時(shí)間較小的區(qū)間內(nèi),評(píng)分的波動(dòng)不會(huì)很大,但是在一段較長(zhǎng)時(shí)間里,如分散在兩個(gè)月之中,評(píng)分對(duì)比會(huì)有明顯波動(dòng)。因此,為項(xiàng)目偏置擬合一個(gè)新函數(shù)以描述項(xiàng)目偏置隨時(shí)間的變化,如式(7)所示。
(7)
bi(t)=bi+αi·devi
(8)
2.1.3 融入動(dòng)態(tài)時(shí)序的用戶偏好特征向量
上文為基準(zhǔn)預(yù)測(cè)中的用戶偏置和項(xiàng)目偏置加入了動(dòng)態(tài)時(shí)序,然而,如果考量時(shí)間對(duì)偏置的影響,就必須考慮時(shí)間對(duì)用戶和項(xiàng)目交互的影響。用戶會(huì)隨時(shí)間改變偏好,例如,“心理驚悚劇”粉絲可能會(huì)在一年后成為“犯罪劇”粉絲,同樣,用戶會(huì)隨時(shí)間改變對(duì)某些演員或?qū)а莸目捶ā?duì)于該類影響,本文通過將用戶偏好特征向量(向量pu)作為時(shí)間函數(shù)進(jìn)行建模。
事實(shí)上,該時(shí)間變化相比上文提到的單獨(dú)完整的用戶偏置,是很難捕捉的,因?yàn)橛脩籼卣髌帽环殖纱罅康钠靡蜃樱圆扇槊總€(gè)因子建模的方式,表示為pu(t)T=(pu(t)[1],pu(t)[2],…,pu(t)[f]),然后對(duì)于每個(gè)因子pu(t)[k],使用與用戶時(shí)間偏置相同的方法建模,如式(9)所示。
pu(t)[k]=puk+αuk·devu
(9)
其中,puk作為固定部分,αuk·devu作為隨時(shí)間變化的部分。
傳統(tǒng)的推薦系統(tǒng)僅通過用戶歷史評(píng)分行為進(jìn)行推薦,面臨的問題是數(shù)據(jù)量過少、推薦精確度較低。用戶注冊(cè)信息往往包含用戶潛在的興趣,比如,男性用戶和女性用戶的評(píng)分不同,不同年齡段以及不同職業(yè)的評(píng)分也不相同。本文數(shù)據(jù)集包含一張單獨(dú)的用戶信息數(shù)據(jù)表,其中包括用戶編號(hào)、性別、年齡以及職業(yè)等信息,在上文基礎(chǔ)上融入以上信息從而得到最終的SpecialTSVD++模型,提高了推薦質(zhì)量。
2.2.1 融入用戶特征信息的評(píng)分預(yù)測(cè)
用戶特征信息主要是用戶注冊(cè)信息,包括3種:用戶性別、用戶年齡和用戶職業(yè)。通過實(shí)驗(yàn)發(fā)現(xiàn),特征信息不同的用戶對(duì)電影評(píng)分的平均分也不一樣。例如,男性用戶平均分在3.56左右,而女性用戶平均分在3.62左右;18歲以下用戶平均分在3.55左右,而50歲以上用戶平均分在3.76左右?;谝陨蠑?shù)據(jù),對(duì)上文全局平均分μ進(jìn)行如式(10)的改進(jìn)。
μ=ω1μall+ω2μage+ω3μsex+ω4μoccupation
(10)
由上文所述,本文算法在SVD++算法基礎(chǔ)上分別加入時(shí)間信息和用戶特征信息,兩者融合最后得到SpecialTSVD++完整的預(yù)測(cè)評(píng)分公式,如式(11)所示。
(11)
SpecialSVD++算法的訓(xùn)練過程如下:
基于動(dòng)態(tài)時(shí)序的復(fù)合協(xié)同過濾算法SpecialTSVD++算法
輸入:訓(xùn)練數(shù)據(jù)集Movielens-10m,特征向量維數(shù)f,迭代次數(shù)n
輸出:參數(shù)值,RMSE
訓(xùn)練階段:
for(iteration=0;iteration foreach(u,i)∈Dtrain //對(duì)模型中每個(gè)參數(shù)梯度下降 bu=bu+η(eui-λ1bu) bi=bi+η(eui-λ1bi) αu=αu+η(eui×devu-λ1αu) αi=αi+η(eui×devi-λ1αi) //對(duì)用戶項(xiàng)目特征向量進(jìn)行迭代更新 for(k=0;k puk=puk+η(eui×qik-λ2puk) qik=qik+η[eui×(puk+sqrtNum×Sumyjk)-λ2qik] yjk=yjk+η(eui×sqrtNum×qik-λ2yjk) αuk=αuk+η(eui×qik×devuk-λ2αuk) end for end foreach end for η=0.4 本文數(shù)據(jù)集使用的是Movielens-10m,包含1 000 209條評(píng)分?jǐn)?shù)據(jù),來自6 040個(gè)用戶對(duì)大約3 900部電影的評(píng)分,并且每名用戶至少對(duì)20部電影進(jìn)行了評(píng)分。此外,該數(shù)據(jù)集還包含了用戶注冊(cè)信息表,注冊(cè)信息主要有性別、年齡和職業(yè)。本文將此數(shù)據(jù)集隨機(jī)劃分為訓(xùn)練集和測(cè)試集,其中,訓(xùn)練集占整個(gè)數(shù)據(jù)集的80%,測(cè)試集占20%。 采用均方根誤差(Root mean square error,RMSE)作為推薦準(zhǔn)確性的評(píng)價(jià)標(biāo)準(zhǔn),RMSE值越小,算法精確度越高,RMSE定義為公式(12)。 (12) 在相同數(shù)據(jù)集的情況下,對(duì)SVD、SVD++和SpecialTSVD++算法作對(duì)比實(shí)驗(yàn),在特征維度變化情況下對(duì)比各個(gè)模型RMSE的結(jié)果,實(shí)驗(yàn)結(jié)果如表1所示。 表1 實(shí)驗(yàn)結(jié)果 如表1所示,隨著特征向量維數(shù)增多,RMSE的值會(huì)降低,3種算法都有一定提升,但是算法的學(xué)習(xí)時(shí)間也會(huì)隨之變長(zhǎng)。從實(shí)驗(yàn)結(jié)果看,改進(jìn)的SpecialTSVD++算法在特征向量維度由10增加到200的過程中,RMSE的值始終在降低,且跟同類型SVD算法和SVD++算法相比,在特征向量維度增高過程中,RMSE的值始終比兩個(gè)算法低大約0.02。最終,SpecialTSVD++算法在特征向量維度為200時(shí),RMSE達(dá)到0.872 2,其推薦精度明顯優(yōu)于SVD和SVD++算法。 傳統(tǒng)的推薦算法在面對(duì)當(dāng)今信息時(shí)代數(shù)據(jù)快速更迭時(shí),無法根據(jù)時(shí)間產(chǎn)生精準(zhǔn)推薦,本文由此在SVD++算法基礎(chǔ)上進(jìn)行改進(jìn),提出了一種SpecialTSVD++算法。SpecialTSVD++算法可以滿足未來時(shí)間里的動(dòng)態(tài)變化,并且結(jié)合用戶個(gè)體特征,將傳統(tǒng)的SVD++算法與動(dòng)態(tài)時(shí)序相結(jié)合,解決了傳統(tǒng)算法中實(shí)時(shí)性差和推薦質(zhì)量低的問題。通過在Movielens-10M數(shù)據(jù)集上實(shí)驗(yàn),對(duì)比傳統(tǒng)的SVD和SVD++算法,SpecialTSVD++算法在推薦效果和推薦精度上都有明顯提升。3 實(shí)驗(yàn)結(jié)果及分析
3.1 數(shù)據(jù)集
3.2 度量標(biāo)準(zhǔn)
3.3 實(shí)驗(yàn)結(jié)果對(duì)比
4 結(jié)語