韓立鋒,陳 莉,史曉龍
(1.西北大學(xué) 信息科學(xué)與技術(shù)學(xué)院,陜西 西安 710127;2.西安電子科技大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,陜西 西安710126)
伴隨著傳統(tǒng)PC互聯(lián)網(wǎng)以及移動(dòng)互聯(lián)網(wǎng)的高速發(fā)展,電子商務(wù)已經(jīng)滲透到生產(chǎn)生活的各個(gè)方面,為人們的生產(chǎn)生活帶來(lái)了極大便利。然而,電子商務(wù)在給人們帶來(lái)機(jī)遇的同時(shí),也面臨著很大的挑戰(zhàn)。特別是隨著電子商務(wù)的高速發(fā)展,無(wú)論是商家還是用戶(hù),都面臨著信息過(guò)載的困擾。用戶(hù)希望能夠在盡可能短的時(shí)間內(nèi)在海量的商品信息中獲取自己喜歡的或者感興趣的商品,而商家則希望使用最高效的方式幫助用戶(hù)找到自己喜歡的商品。
為了解決這類(lèi)問(wèn)題,個(gè)性化推薦系統(tǒng)應(yīng)運(yùn)而生。所謂個(gè)性化推薦系統(tǒng),旨在根據(jù)用戶(hù)的歷史消費(fèi)喜好預(yù)測(cè)用戶(hù)對(duì)未知產(chǎn)品或服務(wù)的偏好,進(jìn)而為用戶(hù)推薦合適的產(chǎn)品或服務(wù),提高用戶(hù)的滿(mǎn)意度[1-2]。
目前,在個(gè)性化推薦領(lǐng)域,使用最為廣泛的推薦算法是基于協(xié)同過(guò)濾的推薦算法。而協(xié)同過(guò)濾算法是基于集體智慧的思想,無(wú)論是基于記憶的協(xié)同過(guò)濾,還是基于模型的協(xié)同過(guò)濾,其主要思想都是通過(guò)用戶(hù)對(duì)于商品的歷史購(gòu)買(mǎi)記錄來(lái)幫助用戶(hù)尋找自己可能喜歡的商品。目前基于協(xié)調(diào)過(guò)濾的推薦算法已經(jīng)被廣泛應(yīng)用于個(gè)性化電子商務(wù)推薦、新聞推薦、音樂(lè)推薦等諸多領(lǐng)域[3-5]。
基于協(xié)同過(guò)濾的推薦算法被證明在實(shí)踐中有著很好的效果,可以分為基于內(nèi)存的協(xié)同過(guò)濾[6]以及基于模型的協(xié)同過(guò)濾[7]兩類(lèi)算法,目前被廣大學(xué)者持續(xù)研究。BOBADILLA等[8]提出了一種新的協(xié)同過(guò)濾度量方式,將MSD和Jaccard度量結(jié)合起來(lái),可獲得更好的精度。LIU等[9]提出了一種新的用戶(hù)相似性模型,該模型不僅考慮了用戶(hù)評(píng)級(jí)的局部上下文信息,而且考慮了用戶(hù)行為的全局偏好。此外,改進(jìn)的相似性度量模型不僅考慮了兩個(gè)用戶(hù)之間的公共評(píng)級(jí)比例,同時(shí)也考慮到不同的用戶(hù)有不同的評(píng)級(jí)偏好。實(shí)踐證明,該模型具有很好的預(yù)測(cè)精度。LI等[10]提出新的跨域協(xié)同過(guò)濾推薦模型,將CF域視為一個(gè)二維站點(diǎn)時(shí)間坐標(biāo)系,在這個(gè)坐標(biāo)系上,多個(gè)相關(guān)域共享多個(gè)相關(guān)CF域的公共評(píng)級(jí)知識(shí),以提高CF的性能。
然而,面對(duì)數(shù)據(jù)稀疏、冷啟動(dòng)等一系列問(wèn)題,基于記憶的協(xié)同過(guò)濾算法無(wú)法準(zhǔn)確地計(jì)算出物品與物品、用戶(hù)與用戶(hù)之間的相似度,進(jìn)而無(wú)法為用戶(hù)推薦準(zhǔn)確的商品。特別是對(duì)于大多數(shù)新用戶(hù)來(lái)說(shuō),因其較少的歷史購(gòu)買(mǎi)記錄,甚至根本沒(méi)有相關(guān)購(gòu)買(mǎi)記錄或評(píng)分記錄,所以無(wú)法為其尋找其最近鄰用戶(hù),從而影響推薦的準(zhǔn)確性。針對(duì)此類(lèi)問(wèn)題,國(guó)內(nèi)外學(xué)者進(jìn)行了深入的研究:傳統(tǒng)的基于內(nèi)存的協(xié)同過(guò)濾技術(shù)在面臨數(shù)據(jù)稀疏、冷啟動(dòng)問(wèn)題時(shí)遭遇推薦瓶頸,其最主要原因在于傳統(tǒng)的基于記憶的協(xié)同過(guò)濾技術(shù)只是過(guò)度關(guān)注用戶(hù)或項(xiàng)目的近鄰,而忽視了用戶(hù)或項(xiàng)目本身,同時(shí)也忽略了兩種實(shí)體之間的關(guān)聯(lián)。所以基于此,國(guó)內(nèi)外學(xué)者在協(xié)同過(guò)濾推薦算法的基礎(chǔ)上提出了一種新的基于模型的協(xié)同過(guò)濾——矩陣分解算法(Matrix Factorization,MF)。矩陣分解算法的核心思想是用戶(hù)的特征矩陣與項(xiàng)目的特征矩陣都可以表示為低維的特征向量,而用戶(hù)的評(píng)分則可以用此二者之特征向量的內(nèi)積表示。盡管大量的矩陣分解算法能夠?qū)⒂脩?hù)與項(xiàng)目的信息進(jìn)行充分挖掘,從而提高推薦效果[11],但對(duì)于評(píng)分較少的冷用戶(hù)信息,依舊無(wú)法有效挖掘。此時(shí),越來(lái)越多的輔助信息被加入到矩陣分解框架之中,比如人口統(tǒng)計(jì)學(xué)信息、社會(huì)化網(wǎng)絡(luò)信息、項(xiàng)目描述信息等,在一定程度上提高了推薦精準(zhǔn)度,同時(shí)對(duì)于冷啟動(dòng)用戶(hù)的推薦效果也有所提升。比如MANZATO[12]提出了一種基于用戶(hù)偏好與電影類(lèi)型/類(lèi)別的分解矩陣的推薦算法。使用這種用戶(hù)類(lèi)型矩陣分解模型的優(yōu)點(diǎn)是需要較少的計(jì)算資源,矩陣的稀疏性更小,維數(shù)更低,推薦準(zhǔn)確性更高。為了解決用戶(hù)項(xiàng)目評(píng)價(jià)模型的極大稀疏性,QIN等[13]提出了一種基于加權(quán)項(xiàng)目類(lèi)別的協(xié)同過(guò)濾推薦算法,該算法將用戶(hù)物品的高維評(píng)價(jià)數(shù)據(jù)轉(zhuǎn)化為用戶(hù)類(lèi)別的低維統(tǒng)計(jì)數(shù)據(jù),并作為用戶(hù)特征模型。在模型的基礎(chǔ)上,加入遺忘功能和用戶(hù)屬性信息,對(duì)用戶(hù)模型進(jìn)行兩次優(yōu)化。實(shí)驗(yàn)結(jié)果表明,該模型能夠較好地應(yīng)對(duì)用戶(hù)物品評(píng)級(jí)問(wèn)題的稀疏性,同時(shí)較好地解決冷啟動(dòng)問(wèn)題。
上述算法以矩陣分解為基礎(chǔ),同時(shí)融合更多其他輔助信息,對(duì)于應(yīng)對(duì)冷啟動(dòng)問(wèn)題有顯著的效果。盡管目前深度學(xué)習(xí)算法已被大量應(yīng)用于個(gè)性化推薦領(lǐng)域,并且也取得了一些成績(jī)。然而,目前的研究主要聚焦于探索應(yīng)用于個(gè)性化推薦而提出新的深度學(xué)習(xí)架構(gòu)上,比如注意力機(jī)制、卷積神經(jīng)網(wǎng)絡(luò)、生成對(duì)抗網(wǎng)絡(luò)、圖神經(jīng)網(wǎng)絡(luò)等[14-17]。盡管取得了一定的效果,但這些依賴(lài)于復(fù)雜網(wǎng)絡(luò)結(jié)構(gòu)的工作有大量的參數(shù),需要耗費(fèi)更多的計(jì)算資源,同時(shí)在可擴(kuò)展性以及可解釋性等方面也存在一定的問(wèn)題。所以,筆者采取以矩陣分解為基礎(chǔ)的推薦模型,同時(shí)考慮用戶(hù)、商品屬性信息,考慮用戶(hù)對(duì)物品屬性的偏好信息等,最終對(duì)于冷啟動(dòng)用戶(hù)進(jìn)行項(xiàng)目評(píng)分的預(yù)測(cè),取得了較好的結(jié)果。
筆者的貢獻(xiàn)主要包括:
(1) 在進(jìn)行用戶(hù)相似度計(jì)算時(shí),融合了用戶(hù)本身信息,包括年齡、性別、職業(yè)等,以及用戶(hù)對(duì)于項(xiàng)目偏好的信息,即用戶(hù)對(duì)于項(xiàng)目屬性偏好的差異。進(jìn)行相似度計(jì)算后,進(jìn)行了比較粗略的評(píng)分預(yù)測(cè),并將這一結(jié)果融入到新的矩陣分解之中。
(2) 根據(jù)用戶(hù)相似度,計(jì)算出冷啟動(dòng)用戶(hù)對(duì)項(xiàng)目的初始預(yù)測(cè)值,同時(shí)在進(jìn)行矩陣分解時(shí),融合用戶(hù)的屬性信息、用戶(hù)對(duì)項(xiàng)目屬性的偏好信息、項(xiàng)目屬性信息等,作為輔助信息對(duì)矩陣分解的隱類(lèi)分解起到增強(qiáng)作用,更能提高最終冷啟動(dòng)用戶(hù)的推薦效果。
(3) 在數(shù)據(jù)集movielens及douban上進(jìn)行了大量實(shí)驗(yàn)。實(shí)驗(yàn)表明,筆者給出的模型與現(xiàn)有矩陣分解模型相比,有更好的推薦準(zhǔn)確性以及可擴(kuò)展性。
在基于用戶(hù)的協(xié)同過(guò)濾推薦中,評(píng)分信息是一個(gè)m×n階矩陣,m行代表m個(gè)用戶(hù),n列代表n個(gè)項(xiàng)目。第i行第j列的元素值代表用戶(hù)i對(duì)項(xiàng)目j的評(píng)分。評(píng)分值一般是1~5之間的整數(shù)。評(píng)分越大,表示用戶(hù)越喜歡該項(xiàng)目。用戶(hù)項(xiàng)目評(píng)分?jǐn)?shù)據(jù)矩R的各元素陣如表1所示。
表1 用戶(hù)項(xiàng)目評(píng)分矩陣
K最近鄰(K-NearestNeighbor,KNN)分類(lèi)算法是最著名的數(shù)據(jù)挖掘算法之一[18-19],早期被應(yīng)用于文本分類(lèi)研究中,取得了非常好的分類(lèi)效果。隨著個(gè)性化推薦技術(shù)的流行,K最近鄰作為非常重要的基于領(lǐng)域的協(xié)同過(guò)濾方法,也被廣泛應(yīng)用。在個(gè)性化推薦領(lǐng)域,K最近鄰又被分為基于用戶(hù)的K最近鄰以及基于項(xiàng)目的K最近鄰。它們的核心都是計(jì)算相似度[20]。
在相似度計(jì)算中,常見(jiàn)的有余弦相似度、相關(guān)相似度等計(jì)算方式。余弦相似性假設(shè)用戶(hù)u,v在N維項(xiàng)目空間上的評(píng)分分別表示為向量u和v,則用戶(hù)u,v之間的相似度Ssim(u,v)就是兩個(gè)向量夾角的余弦值,其計(jì)算公式如下:
(1)
要進(jìn)行相關(guān)相似度計(jì)算,首先假設(shè)用戶(hù)u,v同時(shí)評(píng)過(guò)分的集合為I,則用戶(hù)u,v之間的Ssim(u,v)可通過(guò)皮爾遜系數(shù)進(jìn)行計(jì)算。皮爾遜相關(guān)系數(shù)正好用于衡量變量與變量之間的線(xiàn)性關(guān)系,目前也是推薦系統(tǒng)較為廣泛的相似度度量方法。其計(jì)算公式如下:
(2)
通過(guò)計(jì)算用戶(hù)之間的相似度,選取與目標(biāo)用戶(hù)u最近的k個(gè)鄰居集,對(duì)項(xiàng)目j進(jìn)行評(píng)分預(yù)測(cè):
(3)
隨著Yehuda Koren在Netflix比賽中取得了冠軍成績(jī)后,基于矩陣分解的個(gè)性化推薦模型得到研究者的廣泛關(guān)注[21-24]。作為協(xié)同過(guò)濾技術(shù)的一種,矩陣分解技術(shù)屬于一種隱語(yǔ)義模型。與傳統(tǒng)協(xié)同過(guò)濾方法不同的是,矩陣分解并不通過(guò)計(jì)算相似度來(lái)查找相似用戶(hù)或項(xiàng)目,進(jìn)而進(jìn)行預(yù)測(cè)。相反,矩陣分解根據(jù)其數(shù)學(xué)理論基礎(chǔ)奇異值分解,認(rèn)為一個(gè)實(shí)矩陣R可以分解為3個(gè)矩陣U、Σ和V的積[25]:
(4)
在個(gè)性化推薦中,研究者認(rèn)為:可將評(píng)分矩陣近似表示為用戶(hù)隱特征矩陣及項(xiàng)目隱特征矩陣的乘積,從而對(duì)用戶(hù)和項(xiàng)目進(jìn)行建模,如圖1所示。
圖1 推薦系統(tǒng)評(píng)分預(yù)測(cè)模型
由于評(píng)分矩陣非常稀疏,通常將原始矩陣近似為矩陣P和Q轉(zhuǎn)置的乘積:
(5)
(6)
作為真實(shí)的評(píng)分值和預(yù)測(cè)評(píng)分值之間的差距,可以用下式定義損失函數(shù):
(7)
其中,D是所有評(píng)分后的用戶(hù)和項(xiàng)目集,即訓(xùn)練集中的用戶(hù)和項(xiàng)目;而λ是控制正則化參數(shù),防止過(guò)擬合。
近年來(lái),基于矩陣分解的個(gè)性化推薦得到了廣泛的研究和應(yīng)用,也取得了較好的效果。但是矩陣分解存在較為嚴(yán)重的冷啟動(dòng)問(wèn)題,即對(duì)于特別稀疏的評(píng)分矩陣,尤其是對(duì)于評(píng)分較少的冷啟動(dòng)用戶(hù),無(wú)法根據(jù)現(xiàn)有信息對(duì)用戶(hù)進(jìn)行深入挖掘,所以便無(wú)法進(jìn)行精準(zhǔn)評(píng)分預(yù)測(cè),從而無(wú)法為冷啟動(dòng)用戶(hù)進(jìn)行相關(guān)推薦。為了避免此類(lèi)問(wèn)題發(fā)生,越來(lái)越多的矩陣分解模型加入了諸如社會(huì)化網(wǎng)絡(luò)、異構(gòu)網(wǎng)絡(luò)等信息,取得了更好的效果。在上述研究方法的啟發(fā)下,基于用戶(hù)屬性與項(xiàng)目屬性構(gòu)建評(píng)分矩陣,筆者進(jìn)行冷啟動(dòng)用戶(hù)的初始評(píng)分預(yù)測(cè),同時(shí)融合用戶(hù)對(duì)項(xiàng)目屬性的喜好構(gòu)建用戶(hù)興趣矩陣、用戶(hù)屬性信息、項(xiàng)目屬性信息,將此類(lèi)信息源融入現(xiàn)有的矩陣分解模型之中,以期取得更好的推薦效果,如圖2所示。
圖2 算法框圖
首先對(duì)冷啟動(dòng)用戶(hù)基于其用戶(hù)屬性信息和已經(jīng)觀看的電影類(lèi)型信息進(jìn)行建模,得到其近鄰集,根據(jù)K最近鄰算法得到冷啟動(dòng)用戶(hù)的初始預(yù)測(cè)評(píng)分。其次,針對(duì)于已有用戶(hù)對(duì)其根據(jù)用戶(hù)屬性、項(xiàng)目屬性、用戶(hù)對(duì)項(xiàng)目屬性偏好信息進(jìn)行矩陣分解建模,學(xué)習(xí)各相關(guān)參數(shù)。然后對(duì)冷啟動(dòng)用戶(hù)使用矩陣分解建模,結(jié)合矩陣分解模型中已有的用戶(hù)評(píng)分信息、項(xiàng)目屬性信息、用戶(hù)對(duì)項(xiàng)目屬性的偏好信息所學(xué)習(xí)到的各種參數(shù),融合冷啟動(dòng)用戶(hù)初始評(píng)分預(yù)測(cè)信息,進(jìn)行全局范圍的參數(shù)更新,最終得到新的評(píng)分矩陣,從而為冷啟動(dòng)用戶(hù)進(jìn)行更為精準(zhǔn)的評(píng)分預(yù)測(cè)。最后對(duì)冷啟動(dòng)用戶(hù)進(jìn)行相關(guān)項(xiàng)目推薦。
對(duì)于冷啟動(dòng)用戶(hù),相互之間進(jìn)行共同評(píng)分的項(xiàng)目較為匱乏。此時(shí),首先基于用戶(hù)性別、年齡、職位等用戶(hù)人口統(tǒng)計(jì)學(xué)信息,對(duì)其進(jìn)行相似度計(jì)算。其次,雖然冷啟動(dòng)用戶(hù)的共同評(píng)分較少,但是對(duì)于有過(guò)評(píng)分記錄即使評(píng)分記錄不多的冷啟動(dòng)用戶(hù),可以同時(shí)基于項(xiàng)目視角,根據(jù)項(xiàng)目屬性相似度,計(jì)算冷啟動(dòng)用戶(hù)與其他用戶(hù)之間的相似度。最終形成冷啟動(dòng)用戶(hù)的推薦列表。
要基于用戶(hù)人口統(tǒng)計(jì)學(xué)信息進(jìn)行用戶(hù)間相似度計(jì)算,可對(duì)這些信息按照一定標(biāo)準(zhǔn)進(jìn)行數(shù)值化處理。比如,對(duì)于性別,按照男(M)女(F)作為劃分標(biāo)準(zhǔn),使用數(shù)字1、0代替。對(duì)于職業(yè)信息,根據(jù)我國(guó)職業(yè)分類(lèi)標(biāo)準(zhǔn),用數(shù)字1~7代替。對(duì)于年齡信息可以根據(jù)年齡段進(jìn)行處理,根據(jù)生物學(xué)年齡劃分標(biāo)準(zhǔn),用數(shù)值1~7代替。處理后的人口統(tǒng)計(jì)學(xué)信息如表2所示。
表2 處理后的用戶(hù)人口統(tǒng)計(jì)學(xué)信息
對(duì)以上信息可根據(jù)下式進(jìn)行歸一化處理:
(8)
接著,進(jìn)行用戶(hù)之間相似度計(jì)算:
Ssimr(u,v)=αS(u,v)+βA(u,v)+(1-α-β)O(u,v) ,
(9)
其中,S(u,v)為性別相似性,A(u,v)為年齡相似性,O(u,v)為職位相似性。在進(jìn)行上述屬性相似性計(jì)算時(shí),可以使用余弦相似性計(jì)算方式。參數(shù)α、β、(1-α-β)分別代表性別、年齡、職位相似性的權(quán)重。根據(jù)實(shí)驗(yàn)得知,當(dāng)α、β、(1-α-β)各參數(shù)值為{0.6,0.1,0.3}時(shí),所得到的相似度是最準(zhǔn)確的。
以上步驟描述了基于用戶(hù)人口統(tǒng)計(jì)學(xué)信息進(jìn)行相似度計(jì)算的過(guò)程。但是對(duì)于已經(jīng)有過(guò)評(píng)分記錄的冷啟動(dòng)用戶(hù)來(lái)說(shuō),僅僅基于用戶(hù)特征計(jì)算相似度,而忽略用戶(hù)本身與其他用戶(hù)在項(xiàng)目類(lèi)型之間的相似度,往往不能精準(zhǔn)全面地分析用戶(hù)行為。以電影為例,流派信息作為電影最為重要的類(lèi)型信息,用于區(qū)別電影之間的不同。電影根據(jù)流派進(jìn)行劃分,可以被劃分為16個(gè)流派:犯罪、浪漫、動(dòng)作、喜劇、科幻、戲劇、幻想、黑色、紀(jì)錄片、恐怖、驚悚、兒童、戰(zhàn)爭(zhēng)、動(dòng)畫(huà)、懸疑、冒險(xiǎn)。假設(shè)用戶(hù)A、B的歷史觀看記錄中,表明兩者都喜歡觀看具有動(dòng)畫(huà)、兒童、喜劇流派特征的電影,則表明兩者具有很大的相似性。如果A用戶(hù)已經(jīng)觀看了電影《Toy Story (1995)》,則系統(tǒng)也可以將該電影推薦給用戶(hù)B。
根據(jù)這一思路,可以融合電影流派相似度計(jì)算用戶(hù)相似度。在評(píng)分矩陣R中,包含了用戶(hù)U、項(xiàng)目I,其中U={u1,u2,u3,…,um},I={i1,i2,i3,…,in},rui表示用戶(hù)u對(duì)項(xiàng)目i的評(píng)分。項(xiàng)目i的流派屬性集合G(i)={g1,g2,g3,…,gs}。假設(shè)項(xiàng)目i中具有該流派屬性,則gi為1;否則,gi為0。設(shè)用戶(hù)u看過(guò)的電影集合為Iu,則用戶(hù)u對(duì)于電影流派屬性gi的累加次數(shù)為
(10)
其中,gix表示在所有該用戶(hù)看過(guò)的電影Ix中流派屬性gi的累計(jì)次數(shù)。
假設(shè)對(duì)于固定電影項(xiàng)目I,共有m個(gè)流派屬性,根據(jù)式(10)可以得到某用戶(hù)u對(duì)于各項(xiàng)目流派屬性的偏好,記做Lui,則用戶(hù)u對(duì)于m個(gè)流派屬性的偏好可表示為(Lu1,Lu2,…,Lui,…,Lum)。此時(shí),可以根據(jù)式(11)計(jì)算用戶(hù)u與用戶(hù)v基于項(xiàng)目屬性的相似度:
(11)
用戶(hù)之間的最終相似度為
Ssim(u,v)=λSsimr(u,v)+(1-λ)Ssimarr(u,v) ,
(12)
其中,Ssimr(u,v)表示用戶(hù)u與用戶(hù)v的人口統(tǒng)計(jì)學(xué)屬性相似度,simarr(u,v)表示用戶(hù)u與用戶(hù)v基于電影項(xiàng)目流派屬性喜好視角的相似度值,參數(shù)λ則表示各自的權(quán)重。
此時(shí),可根據(jù)最終相似度尋找用戶(hù)u的最近鄰集,然后根據(jù)評(píng)分公式得到項(xiàng)目評(píng)分。算法如下。
算法1融合用戶(hù)屬性與電影流派信息的K最近鄰算法。
輸入:用戶(hù)評(píng)分矩陣UImatrix,用戶(hù)屬性矩陣UAmatrix,項(xiàng)目流派屬性矩陣IAmatrix,鄰居個(gè)數(shù)K。
輸出:預(yù)測(cè)后的用戶(hù)評(píng)分矩陣UImatrix′。
算法過(guò)程:
① 初始化評(píng)分矩陣UImatrix,相似度列表SimilarList,用戶(hù)評(píng)分UserPreference
② foru∈Unewdo
③ 使用式(11)得到用戶(hù)u相似度列表SimilarList
④ 通過(guò)對(duì)SimilarList進(jìn)行排序,得到用戶(hù)u的前K個(gè)近鄰集Neighbor
⑤ foru∈Neighbor do
⑥ 根據(jù)式(3)得到用戶(hù)u的預(yù)測(cè)評(píng)分值UserPreference
⑦ end for
⑧ end for
⑨ 更新評(píng)分矩陣UImatrix′
⑩ 返回評(píng)分矩陣UImatrix′。
大量的心理學(xué)、營(yíng)銷(xiāo)學(xué)理論表明,人們對(duì)于商品的偏好很大程度上依賴(lài)于對(duì)該商品所對(duì)應(yīng)屬性的偏好。對(duì)于電影本身來(lái)說(shuō),其具有電影類(lèi)型、年代、地區(qū)等重要屬性信息。對(duì)于每個(gè)屬性,也具有不同的屬性值。假設(shè)某用戶(hù)的項(xiàng)目評(píng)分記錄如表3所示。
表3 項(xiàng)目屬性信息
根據(jù)表3,假設(shè)ui表示第i個(gè)用戶(hù);項(xiàng)目屬性集可以表示為A,共有m個(gè)屬性。每個(gè)屬性均有不同的屬性值,比如電影類(lèi)型有浪漫、動(dòng)作、喜劇等16種取值;地區(qū)有美國(guó)、英國(guó)、日本等;年代有80年代、90年代等。項(xiàng)目屬性集可以表示為C={a11,…,a1d,a21,…,a2k,…,am1,…,amn},amn表示項(xiàng)目中的第m個(gè)屬性的第n種取值。如果該項(xiàng)目中具有該屬性值,則為1;否則,為0。項(xiàng)目屬性矩陣可以表示為
此時(shí),可計(jì)算用戶(hù)u對(duì)于某屬性值的偏好程度,計(jì)算公式如下:
(13)
其中,Cij表示用戶(hù)u對(duì)項(xiàng)目中第i個(gè)屬性中第j個(gè)值的偏好程度,比如可計(jì)算用戶(hù)A對(duì)電影類(lèi)別信息中名為動(dòng)作片的偏好程度;NCountij表示該用戶(hù)所觀看電影集中該屬性值的累計(jì)次數(shù);z表示該用戶(hù)所觀看的電影數(shù)目。然而這種計(jì)算偏好的過(guò)程忽略了評(píng)分信息,用戶(hù)u對(duì)第i個(gè)屬性中第j個(gè)屬性值最終偏好可以表示為
Tui=puiCuirui,
(14)
其中,pui表示某屬性重要程度,Cui即為式(13)計(jì)算得到的屬性值偏好,Tui則代表用戶(hù)u對(duì)某屬性值的最終偏好。根據(jù)這一思想,即可得到所有用戶(hù)的屬性偏好矩陣Zu。
矩陣分解技術(shù)因其簡(jiǎn)潔高效的特性,在個(gè)性化推薦領(lǐng)域占據(jù)著非常重要的地位,也被證明為效果優(yōu)于傳統(tǒng)基于用戶(hù)協(xié)同過(guò)濾及基于項(xiàng)目協(xié)同過(guò)濾的經(jīng)典算法。但在通常情況下,用戶(hù)對(duì)于項(xiàng)目的評(píng)分矩陣也與用戶(hù)與項(xiàng)目自身因素相關(guān)。比如有的用戶(hù)習(xí)慣于給所有項(xiàng)目都給予較高的評(píng)分,而有的用戶(hù)則恰恰相反;有的物品經(jīng)常會(huì)被用戶(hù)給予較高的評(píng)分,而有的物品則會(huì)被給予較低的評(píng)分。所以,為了使得評(píng)分更加精準(zhǔn),需要考慮用戶(hù)和項(xiàng)目的偏置信息。新的預(yù)測(cè)函數(shù)和損失函數(shù)為
(15)
其中,μ代表全局平均分,bu代表物品評(píng)分偏置,bi代表用戶(hù)評(píng)分偏置。通??梢允褂锰荻认陆底顑?yōu)化方法進(jìn)行求解,從而得到預(yù)測(cè)評(píng)分。
盡管上述矩陣分解方法得到了很好的效果,但是對(duì)于冷啟動(dòng)用戶(hù)來(lái)說(shuō),其評(píng)分項(xiàng)目較為匱乏,更需要考慮項(xiàng)目屬性信息及冷啟動(dòng)用戶(hù)對(duì)已評(píng)分項(xiàng)目屬性的偏好信息。此時(shí)用算法1中得到的新的評(píng)分預(yù)測(cè)矩陣UImatrix′得到r′,即冷啟動(dòng)用戶(hù)根據(jù)用戶(hù)相似度及所評(píng)分電影類(lèi)型相似度共同計(jì)算出用戶(hù)最終的相似度,從而找到該相似用戶(hù)的最近鄰,進(jìn)而計(jì)算出冷啟動(dòng)用戶(hù)對(duì)項(xiàng)目的初始預(yù)測(cè)值。在此基礎(chǔ)上,融合用戶(hù)的屬性信息、用戶(hù)對(duì)項(xiàng)目屬性的偏好信息、項(xiàng)目屬性信息等作為輔助信息,對(duì)矩陣分解的隱類(lèi)分解起到增強(qiáng)作用,更能提高最終冷啟動(dòng)用戶(hù)的推薦效果。圖3為改進(jìn)后的矩陣分解模型。
圖3 改進(jìn)后的矩陣分解模型
最終預(yù)測(cè)函數(shù)如下:
(16)
其中,r′表示初始預(yù)測(cè)評(píng)分,M表示用戶(hù)屬性集,其相關(guān)特征權(quán)重也可以通過(guò)已知評(píng)分矩陣學(xué)習(xí)得到。Z表示用戶(hù)對(duì)項(xiàng)目屬性偏好矩陣,其相關(guān)特征權(quán)重可以通過(guò)已知評(píng)分矩陣學(xué)習(xí)得到。G表示項(xiàng)目屬性集,其相關(guān)特征權(quán)重也可以通過(guò)已知評(píng)分矩陣學(xué)習(xí)得到。
該評(píng)分預(yù)測(cè)函數(shù)的損失函數(shù)為
(17)
對(duì)應(yīng)的參數(shù)更新公式如下:
(18)
具體算法見(jiàn)算法2。
算法2融合屬性信息的矩陣分解算法。
輸入:訓(xùn)練集用戶(hù)評(píng)分矩陣Trainmatrix,訓(xùn)練集用戶(hù)屬性矩陣G(u),訓(xùn)練集項(xiàng)目屬性矩陣G(i),用戶(hù)對(duì)項(xiàng)目屬性偏好矩陣Z,學(xué)習(xí)率α。
輸出:預(yù)測(cè)后的用戶(hù)評(píng)分矩陣UImatrix′、用戶(hù)和項(xiàng)目特征矩陣P、Q,用戶(hù)對(duì)項(xiàng)目屬性偏好特征矩陣PF,項(xiàng)目屬性特征偏好矩陣QF。
算法過(guò)程:
① 初始化bu、bi、P、Q、PF、QF、UImatrix′
② forrui∈Trainmatrix do
⑤ 利用隨機(jī)梯度下降
⑥ 根據(jù)式(18)更新bu、bi、P、Q、PF、QF
⑦ 更新UImatrix′
⑧ 直到誤差不再發(fā)生變化
⑨ end for
⑩ 返回參數(shù)列表bu、bi、P、Q、PF、QF
第1步 通過(guò)測(cè)試集用戶(hù)項(xiàng)目評(píng)分矩陣用戶(hù)屬性矩陣項(xiàng)目屬性矩陣等得到用戶(hù)對(duì)項(xiàng)目屬性偏好矩陣。
第2步 通過(guò)節(jié)2.3中的算法得到的bu、bi、P、Q、PF、QF等參數(shù),結(jié)合用戶(hù)評(píng)分矩陣、用戶(hù)屬性矩陣、用戶(hù)對(duì)項(xiàng)目屬性的偏好矩陣,在全局范圍內(nèi)利用梯度下降法更新bu、bi、P、Q、PF、QF等參數(shù),直到誤差不再發(fā)生變化。
第3步 根據(jù)第2步得到的最優(yōu)參數(shù)進(jìn)行非純冷啟動(dòng)用戶(hù)的項(xiàng)目預(yù)測(cè)評(píng)分。
第4步 對(duì)預(yù)測(cè)評(píng)分矩陣進(jìn)行排序,選取top-N個(gè)項(xiàng)目推薦給非純冷啟動(dòng)用戶(hù)。
由于推薦系統(tǒng)領(lǐng)域?qū)iT(mén)針對(duì)處理冷啟動(dòng)用戶(hù)問(wèn)題數(shù)據(jù)集并不多見(jiàn),文中采用的是推薦系統(tǒng)領(lǐng)域內(nèi)美國(guó)明尼蘇達(dá)計(jì)算機(jī)學(xué)院的GroupLens小組提供的MovieLens中的ML-100K,ML-1M數(shù)據(jù)集,如表4所示。
表4 實(shí)驗(yàn)數(shù)據(jù)集
為了真實(shí)地模擬出非純冷用戶(hù),在仿真實(shí)驗(yàn)中將用戶(hù)數(shù)據(jù)分為70%的訓(xùn)練集,30%的測(cè)試集。對(duì)于每個(gè)測(cè)試集用戶(hù),隨機(jī)選取5~10個(gè)項(xiàng)目作為其測(cè)試集項(xiàng)目。此時(shí),測(cè)試集用戶(hù)被模擬成為非純冷啟動(dòng)用戶(hù)。訓(xùn)練集用戶(hù)的屬性信息、訓(xùn)練集用戶(hù)的評(píng)分信息以及通過(guò)計(jì)算得到的訓(xùn)練集用戶(hù)對(duì)項(xiàng)目屬性的偏好信息、訓(xùn)練集用戶(hù)屬性信息與電影流派偏好得到的預(yù)測(cè)評(píng)分矩陣信息作為輸入數(shù)據(jù)。經(jīng)過(guò)矩陣分解算法得到預(yù)測(cè)值,再經(jīng)由實(shí)際值與預(yù)測(cè)值之間的差額逐步找到各個(gè)參數(shù)的最優(yōu)值。而測(cè)試集用戶(hù)被認(rèn)為是冷啟動(dòng)用戶(hù),根據(jù)其用戶(hù)屬性信息與電影流派偏好得到的預(yù)測(cè)評(píng)分矩陣,同時(shí)融合其用戶(hù)屬性信息、用戶(hù)對(duì)電影項(xiàng)目屬性偏好信息,經(jīng)過(guò)矩陣分解得到全局最優(yōu)參數(shù)及評(píng)分預(yù)測(cè)值,最終形成推薦列表。
實(shí)驗(yàn)軟件環(huán)境為:Windows10-64bits,Anaconda3、Python3.7。硬件環(huán)境為:CPU是英特爾 Core i7-8750H @ 2.20GHz 六核,內(nèi)存為16 GB。
在推薦系統(tǒng)中,能夠衡量推薦質(zhì)量的標(biāo)準(zhǔn)很多,比如精度、召回率、F1度量等。用平均絕對(duì)誤差(MAE)、均方根誤差(RMSE)對(duì)推薦準(zhǔn)確性進(jìn)行評(píng)價(jià)。平均絕對(duì)誤差也能夠非常直觀地度量推薦算法的準(zhǔn)確性。平均絕對(duì)誤差越小,推薦準(zhǔn)確性越高。其定義為
(19)
其中,pu,i表示目標(biāo)用戶(hù)u對(duì)項(xiàng)目i的預(yù)測(cè)評(píng)分,Ru,i表示目標(biāo)用戶(hù)u對(duì)項(xiàng)目i的實(shí)際評(píng)分。而均方根誤差為
(20)
通過(guò)以下實(shí)驗(yàn),旨在解決如下問(wèn)題:
(1) 文中算法中的不同參數(shù)對(duì)于實(shí)驗(yàn)結(jié)果的影響。
(2) 文中算法與其他算法比較在準(zhǔn)確性方面的提升。
實(shí)驗(yàn)1 鄰居個(gè)數(shù)K值對(duì)推薦準(zhǔn)確性的影響。
通過(guò)K指定近鄰項(xiàng)目的數(shù)量。為了驗(yàn)證K值對(duì)于推薦準(zhǔn)確性的影響,分別選取MovieLens ML-100K,ML-1M兩種數(shù)據(jù)集進(jìn)行測(cè)試。對(duì)于第1種數(shù)據(jù)集,設(shè)K從3開(kāi)始,逐步遞增,步長(zhǎng)為1,直到20結(jié)束。第2種數(shù)據(jù)集,設(shè)K從5開(kāi)始,逐步遞增,步長(zhǎng)為5,直到100結(jié)束。觀察不同K值下的平均絕對(duì)誤差(MAE)及均方根誤差(RMSE),實(shí)驗(yàn)結(jié)果如圖4所示。
(a) ML-100K數(shù)據(jù)集中不同K值對(duì)MAE的影響
從實(shí)驗(yàn)結(jié)果可以得知,隨著K值的增大,兩個(gè)數(shù)據(jù)集均呈現(xiàn)了平均絕對(duì)誤差及均方根誤差先減后增的趨勢(shì)。對(duì)于ML-100K數(shù)據(jù)集,當(dāng)K=10時(shí),平均絕對(duì)誤差、均方根誤差達(dá)到最小值,此時(shí)得到最佳的推薦性能。對(duì)于ML-1M數(shù)據(jù)集,當(dāng)K=38時(shí),得到最佳的推薦性能。
實(shí)驗(yàn)2 參數(shù)λ對(duì)推薦準(zhǔn)確性的影響。
參數(shù)λ控制著正則化項(xiàng)的程度,對(duì)于推薦準(zhǔn)確性也有很大的影響。現(xiàn)將λ從0.01增加至0.20,并保持其他參數(shù)不變,實(shí)驗(yàn)結(jié)果如圖5所示。
(a) ML-100K數(shù)據(jù)集中不同λ值對(duì)MAE的影響
從圖5中可以看出,隨著參數(shù)λ的變化,平均絕對(duì)誤差與均方根誤差也隨之變化。這是因?yàn)楫?dāng)參數(shù)λ變化時(shí),其賦予模型中屬性的權(quán)重也隨之變化,過(guò)大或者過(guò)小,都會(huì)影響最終的預(yù)測(cè)效果。在ML-100K數(shù)據(jù)集中,當(dāng)λ=0.20時(shí)推薦性能最優(yōu);而在ML-1M數(shù)據(jù)集中,當(dāng)λ=0.15時(shí),推薦性能最優(yōu)。
實(shí)驗(yàn)3 迭代次數(shù)對(duì)推薦準(zhǔn)確性的影響。
為了驗(yàn)證文中算法的平均絕對(duì)誤差、均方根誤差隨著迭代次數(shù)變化的情況,在ML-1M數(shù)據(jù)集中,假定正則化參數(shù)λ=0.15時(shí),試驗(yàn)結(jié)果如圖6所示。
(a) ML-1M數(shù)據(jù)集中迭代次數(shù)對(duì)MAE的影響
從圖6可以觀察到,當(dāng)?shù)螖?shù)小于200時(shí),推薦效果較差。隨著迭代次數(shù)的不斷增加,推薦效果趨于平緩。當(dāng)?shù)螖?shù)等于250時(shí),推薦效果最優(yōu)。
實(shí)驗(yàn)4 不同算法的性能比較。
為了驗(yàn)證筆者提出的算法,通過(guò)選取以下4種算法進(jìn)行比較。
傳統(tǒng)矩陣分解算法(SVD):算法假設(shè)用戶(hù)對(duì)項(xiàng)目最終評(píng)分在很大程度上取決于用戶(hù)和項(xiàng)目的潛在屬性。通過(guò)將評(píng)分矩陣分解為2個(gè)低秩的用戶(hù)項(xiàng)目矩陣,即用戶(hù)隱特征矩陣P以及項(xiàng)目隱特征矩陣Q,降低了矩陣維度。
SVD++:由KOREN[26]提出,在進(jìn)行評(píng)分預(yù)測(cè)時(shí),同時(shí)考慮了用戶(hù)、物品的偏置信息。
PMF:由SALAKHUTDINOV等[27]提出的基于概率矩陣分解的個(gè)性化推薦算法。
CBMF:該方法由NGUYEN等[28]提出,將內(nèi)容信息直接整合到矩陣分解方法中,以提高推薦的質(zhì)量。
FSVD:由GUO等[20]提出,該算法將項(xiàng)目屬性信息和評(píng)分信息進(jìn)行有效結(jié)合,較好地解決了冷啟動(dòng)問(wèn)題。
為了驗(yàn)證筆者提出算法的有效性,假定用戶(hù)和項(xiàng)目因子固定不變,且正則化參數(shù)λ的值保持一致,觀察各算法的平均絕對(duì)誤差在ML-1M數(shù)據(jù)集中隨迭代次數(shù)變化的情況。實(shí)驗(yàn)結(jié)果如圖7所示。
(a) ML-1M數(shù)據(jù)集中各算法隨迭代次數(shù)變化的MAE值
從圖7中可以看出,當(dāng)矩陣分解算法在迭代次數(shù)大于250次時(shí),趨于穩(wěn)定;SVD++則一直處于比較平穩(wěn)的狀態(tài),平均絕對(duì)誤差隨著迭代次數(shù)呈較為平緩的下降趨勢(shì)。PMF算法則剛開(kāi)始一直處于比較急劇的下降狀態(tài),當(dāng)?shù)笥?00次時(shí),平均絕對(duì)誤差達(dá)到最低,且趨于平緩。FASVD算法和文中算法在剛開(kāi)始時(shí),呈下降趨勢(shì),當(dāng)?shù)螖?shù)大于250時(shí),呈平穩(wěn)趨勢(shì),且在迭代次數(shù)等于250時(shí),平均絕對(duì)誤差達(dá)到最低,推薦效果最優(yōu)。均方根誤差也有同樣效果的表現(xiàn)。同時(shí),可以看到文中算法在與其他算法進(jìn)行比較時(shí),在推薦準(zhǔn)確性方面均優(yōu)于其他算法。
實(shí)驗(yàn)5 可擴(kuò)展性驗(yàn)證。
為了驗(yàn)證文中算法的可擴(kuò)展性,選取了Douban Movie數(shù)據(jù)集作為驗(yàn)證。實(shí)驗(yàn)通過(guò)設(shè)置鄰居個(gè)數(shù)K值以及迭代次數(shù),來(lái)研究文中算法在其他數(shù)據(jù)集上的性能表現(xiàn)。圖8記錄了最終實(shí)驗(yàn)結(jié)果。
從圖8(a)中可以看出,當(dāng)K值發(fā)生變化時(shí),平均絕對(duì)誤差值也隨之發(fā)生變化。當(dāng)K小于55時(shí),平均絕對(duì)誤差呈下降趨勢(shì);當(dāng)K值等于55時(shí),平均絕對(duì)誤差達(dá)到最小值,推薦效果最優(yōu),隨后又平緩增加。而圖8(b)則表明,隨著迭代次數(shù)的增加,系統(tǒng)模型趨于穩(wěn)定。當(dāng)?shù)螖?shù)等于250時(shí),推薦效果最優(yōu)。
(a) Douban Movie數(shù)據(jù)集中不同K值對(duì)MAE的影響
在傳統(tǒng)矩陣分解的基礎(chǔ)上,筆者充分考慮了用戶(hù)屬性信息、項(xiàng)目屬性信息、用戶(hù)對(duì)項(xiàng)目類(lèi)型偏好信息,對(duì)矩陣分解中隱類(lèi)信息的分解起到了增強(qiáng)作用。同時(shí)使用冷啟動(dòng)用戶(hù)基于用戶(hù)屬性及所評(píng)項(xiàng)目類(lèi)型得到近鄰集,從而計(jì)算出冷啟動(dòng)用戶(hù)的初始評(píng)分預(yù)測(cè)值,替代在矩陣分解中的全局平均分,更能逼近冷啟動(dòng)最終真實(shí)評(píng)分值。通過(guò)與其他算法進(jìn)行比較,表明筆者提出的算法在推薦準(zhǔn)確性方面有一定的提升。同時(shí),在擴(kuò)展性方面,也具備了一定的優(yōu)勢(shì)。事實(shí)證明:筆者提出的算法在數(shù)據(jù)較為稀疏的情況下,充分考慮用戶(hù)屬性信息、項(xiàng)目屬性信息、用戶(hù)對(duì)項(xiàng)目類(lèi)型偏好信息,能較好地解決用戶(hù)冷啟動(dòng)問(wèn)題,同時(shí)提高了推薦準(zhǔn)確性。但是對(duì)于用戶(hù)屬性和項(xiàng)目屬性,其有著更為豐富的內(nèi)容,且用戶(hù)和用戶(hù)、項(xiàng)目和項(xiàng)目、用戶(hù)和項(xiàng)目之間都存在某種程度的關(guān)聯(lián)。如何將這些信息加以考慮,對(duì)算法進(jìn)行更深層次的優(yōu)化,是未來(lái)研究的重點(diǎn),也是需要進(jìn)一步改進(jìn)的方向。