廖曉雅 劉傳才 徐曉峰 彭甫镕
(南京理工大學(xué) 南京 210094)
協(xié)同濾波是推薦算法的經(jīng)典算法,在機(jī)器學(xué)習(xí)異常火熱的今天,協(xié)通濾波以其良好的性能依然在推薦系統(tǒng)中發(fā)揮著重要作用。協(xié)同濾波通常會(huì)利用評(píng)分信息向用戶(hù)推薦可能感興趣的物品。而此處的核心預(yù)測(cè)算法就是利用用戶(hù)已經(jīng)評(píng)價(jià)過(guò)的物品的評(píng)分信息和其他用戶(hù)的評(píng)分信息計(jì)算出預(yù)計(jì)評(píng)分,從而預(yù)測(cè)出用戶(hù)的興趣向。現(xiàn)已有多種協(xié)同濾波算法[1~4]和改進(jìn)形式[5~7]由于系統(tǒng)并不知道評(píng)分達(dá)到多少才是用戶(hù)喜歡的物品,所以通常利用Top-N 算法,選擇估計(jì)值最高的N 個(gè)預(yù)測(cè)結(jié)果作為輸出。
常用的混合方式有加權(quán)混合、變換混合、分區(qū)混合和分層混合等。如將矩陣填充和自動(dòng)編碼機(jī)混合可以緩解冷啟動(dòng)問(wèn)題[8]。而將協(xié)同濾波與用戶(hù)推薦交互[9]或是聚類(lèi)方法[10]相混合也可以得到類(lèi)似的效果。本文提出了一種基于評(píng)分與用戶(hù)屬性的協(xié)同濾波的混合推薦算法(User Attribute-Based Hybrid Method,UABHM)。該算法先分別基于用戶(hù)評(píng)分和用戶(hù)屬性計(jì)算用戶(hù)間相似度,利用用戶(hù)間相似度求得用戶(hù)的近鄰,再根據(jù)近鄰用戶(hù)的評(píng)分分別得到基于用戶(hù)評(píng)分和用戶(hù)屬性協(xié)同濾波算法的預(yù)測(cè)值。此后選擇適當(dāng)?shù)幕旌戏绞綄?duì)結(jié)果進(jìn)行混合,得到新的預(yù)測(cè)結(jié)果作為最后的預(yù)測(cè)成果,再選出評(píng)分最高的N個(gè)預(yù)測(cè)結(jié)果作為此推薦系統(tǒng)的輸出。實(shí)驗(yàn)也表明,將基于用戶(hù)屬性的協(xié)同濾波不僅可以用來(lái)解決冷啟動(dòng)問(wèn)題,與傳統(tǒng)協(xié)同濾波方法結(jié)合時(shí)可以提高推薦系統(tǒng)的性能。
基于用戶(hù)的協(xié)同濾波基于兩條假設(shè):1)有相似行為模式的用戶(hù)未來(lái)也會(huì)有相似的行為模式;2)用戶(hù)的行為模式是持續(xù)不變的。協(xié)同濾波的方法可以分為兩種:近鄰模型和潛在因子模型。近鄰模型通過(guò)用戶(hù)或者物品間相似度來(lái)做出預(yù)測(cè)[11~12]。潛在因子模型通過(guò)對(duì)已知評(píng)分進(jìn)行矩陣分解得到隱藏的行為模式,其中廣泛使用且技術(shù)成熟的奇異值分解(Single Value Discomposition,SVD)[13~14,16]。主要使用了基于用戶(hù)的協(xié)同濾波近鄰模型。
基于用戶(hù)的協(xié)同濾波的推薦方法可分為三步:計(jì)算用戶(hù)之間的相似度;選擇近鄰;做出預(yù)測(cè)。常用的相似度計(jì)算方法有相關(guān)相似性、余弦相似性、修正余弦相似性、Jaccard相似性等。
余弦相似性:余弦相似度通過(guò)計(jì)算兩個(gè)向量在內(nèi)積空間夾角的余弦值來(lái)判斷二者的相似性。兩個(gè)向量之間夾角越小,余弦值越大,相似性越高。在評(píng)分矩陣中,可以將用戶(hù)評(píng)分作為向量來(lái)計(jì)算用戶(hù)間余弦相似度。如果用戶(hù)對(duì)某以物品沒(méi)有評(píng)分,可使用0 作為缺省值填充。計(jì)算公式如下:

上式中,ru和rv分別表示用戶(hù)u和用戶(hù)v的評(píng)分向量。 ‖ ? ‖ 表示向量的模長(zhǎng)。
不同的用戶(hù)有不同的評(píng)分習(xí)慣。有人評(píng)分總體較高,有人偏低。為了表示擁護(hù)的評(píng)分尺度偏好,H.J. Ahn 提出了修正余弦相似性[21]。公式如下:

式(2)中,P表示所有物品的集合。如果用戶(hù)u對(duì)物品p∈P沒(méi)有評(píng)分,則用0填充。
Jaccard 相似性:Jaccard 系數(shù)又稱(chēng)為T(mén)animoto系數(shù),計(jì)算時(shí)只考慮兩個(gè)用戶(hù)之間共同評(píng)分物品的數(shù)量,所以共同評(píng)分物品數(shù)越多,用戶(hù)就越相似。Jaccard 相似度用于用戶(hù)評(píng)分相似性計(jì)算時(shí)不能利用到評(píng)分值的差距,所以并不是很適合。計(jì)算公式如下:式(3)中,Iu和Iv分別表示用戶(hù)u 和用戶(hù)v的評(píng)分物品集合。

在以往的推薦系統(tǒng)中評(píng)分信息得到了充分的應(yīng)用,而對(duì)于新的用戶(hù),沒(méi)有足夠評(píng)分信息用于計(jì)算用戶(hù)間相似度的時(shí)候,便可以利用用戶(hù)屬性信息解決冷啟動(dòng)問(wèn)題[16~18]且有著不錯(cuò)的效果。所以用戶(hù)屬性和用戶(hù)行為模式之間存在著一定的相關(guān)度,至此如果將基于用戶(hù)屬性的協(xié)同濾波與傳統(tǒng)協(xié)同濾波方法相結(jié)合便可以得到混合模型用于實(shí)現(xiàn)推薦系統(tǒng)。
近鄰模型分為基于用戶(hù)的近鄰模型和基于項(xiàng)目的近鄰模型。基于用戶(hù)的近鄰模型根據(jù)用戶(hù)的評(píng)分模式做出預(yù)測(cè),其計(jì)算公式如下:

SNu是用戶(hù)的最近鄰結(jié)合,sim(u,v)是戶(hù)u和用戶(hù)v之間的相似度。
基于項(xiàng)目的協(xié)同過(guò)濾根據(jù)項(xiàng)目之間的評(píng)價(jià)模式做出預(yù)測(cè),其計(jì)算公式如下:

SNi是物品的最近領(lǐng)集合,sim(i,j)是物品i和物品j之間的相似度。基于項(xiàng)目的模型在物品數(shù)量比用戶(hù)少,用戶(hù)個(gè)性比較明顯的情況下較為適用。
根據(jù)基于用戶(hù)的協(xié)同濾波的假設(shè),我們?cè)诖艘部梢宰龀鰞蓷l假設(shè):1)有相似屬性的用戶(hù)未來(lái)也會(huì)有相似的行為模式;2)用戶(hù)的行為模式是持續(xù)不變的。
相似地,基于評(píng)分與用戶(hù)屬性的協(xié)同濾波均勻混合推薦算法的步驟如下:
1)分別根據(jù)式(2)和式(3)計(jì)算目標(biāo)用戶(hù)u和其他用戶(hù)v之間的余弦相似度sim(u,v)cos和關(guān)于屬性的Jaccard相似度sim(u,v)Jaccard。
2)將用戶(hù)u與其他用戶(hù)的余弦相似度排序,選出相似度最大的Kc個(gè)近鄰。將用戶(hù)u與其他用戶(hù)的Jaccard 相似度排序,選出相似度最大的Ka個(gè)近鄰。
3)使用評(píng)分加權(quán)公式(4)分別計(jì)算用戶(hù)u基于余弦相似度的預(yù)測(cè),和基于用戶(hù)屬性Jaccard 似度的預(yù)測(cè)。
4)將得到的兩種預(yù)測(cè)分值相加得到新的預(yù)測(cè)值,將評(píng)分最高的Top-N個(gè)物品推薦給用戶(hù)。
為了驗(yàn)證本文提出的基于用戶(hù)屬性融合推薦的效果,我們使用了MovieLens 100k 和MovieLens 1M數(shù)據(jù)集對(duì)提出的方法進(jìn)行了驗(yàn)證。
MovieLens 100k數(shù)據(jù)集中有943位用戶(hù)對(duì)1682部電影總共100,000 條評(píng)分,數(shù)據(jù)集稠密度為6.30%,每個(gè)用戶(hù)平均評(píng)分?jǐn)?shù)為106.04條,其中評(píng)分最多的用戶(hù)有737 條評(píng)分,最少的為20 條。MovieLens 1M 數(shù)據(jù)集包括了6040 位用戶(hù)對(duì)3952 部電影,共計(jì)1,000,209 條評(píng)分,數(shù)據(jù)集稠密度為4.26%,每個(gè)用戶(hù)平均評(píng)分?jǐn)?shù)為165.59條,其中評(píng)分最多的用戶(hù)有2314 條評(píng)分,最少的為20 條。兩個(gè)數(shù)據(jù)集中評(píng)分?jǐn)?shù)值均為從1 到5 的整數(shù)。
在MovieLens 100k 和MovieLens 1M 數(shù)據(jù)集中,每個(gè)用戶(hù)都會(huì)有用戶(hù)id、年齡、性別、職業(yè)和郵編信息。用戶(hù)id 已經(jīng)去敏,職業(yè)已分別歸為21 和20 種類(lèi)別,郵編為真實(shí)數(shù)值。在實(shí)驗(yàn)中我們用到的主要有年齡、性別和職業(yè)信息。
對(duì)于推薦系統(tǒng)不同的推薦方式有不同的評(píng)價(jià)標(biāo)準(zhǔn)。如對(duì)于預(yù)測(cè)用戶(hù)對(duì)于未評(píng)分物品的推薦方式通常計(jì)算預(yù)測(cè)評(píng)分與測(cè)試集中的真實(shí)評(píng)分的誤差,從而計(jì)算推薦的準(zhǔn)確率,如平均絕對(duì)誤差和均方根誤差[19~20]。而對(duì)于Top-N 推薦方式,通常計(jì)算系統(tǒng)的準(zhǔn)確率(Precision)與召回率(Recall)。

準(zhǔn)確率是推薦命中的個(gè)數(shù)占總推薦數(shù)的比例,召回率是推薦命中的個(gè)數(shù)占測(cè)試樣本個(gè)數(shù)的比例。其中n 為推薦命中個(gè)數(shù),TopN 為系統(tǒng)推薦個(gè)數(shù),|I|為測(cè)試集中樣本個(gè)數(shù)。
準(zhǔn)確率和召回率都是推薦系統(tǒng)的評(píng)價(jià)的重要標(biāo)準(zhǔn),且相互影響。所以可以利用F值綜合評(píng)價(jià):

參數(shù)β表示準(zhǔn)確率在評(píng)價(jià)標(biāo)準(zhǔn)中的重要性,取值范圍為[0,+∞)。β小于1 時(shí)F 值強(qiáng)調(diào)的是準(zhǔn)確率的重要性,β大于1 時(shí)F 值強(qiáng)調(diào)的是召回率的重要性。實(shí)驗(yàn)中常使用F1值。
在實(shí)驗(yàn)中,我們將數(shù)據(jù)集分為兩部分,每個(gè)數(shù)據(jù)集都隨機(jī)選擇20%的評(píng)分?jǐn)?shù)作為測(cè)試機(jī),余下的為訓(xùn)練集。
為了驗(yàn)證評(píng)分和用戶(hù)屬性特征融合后的效果,我們將本文提出的方法與經(jīng)典的基于用戶(hù)的實(shí)驗(yàn)修正余弦相似度的協(xié)同濾波方法進(jìn)行比對(duì)。實(shí)驗(yàn)中對(duì)于結(jié)果有兩個(gè)參數(shù)會(huì)有結(jié)果有較大的影響,一是K 近鄰算法中的近鄰數(shù)K,二是向用戶(hù)推薦物品的個(gè)數(shù)TopN。
4.2.1 K近鄰個(gè)數(shù)對(duì)實(shí)驗(yàn)結(jié)果的影響
實(shí)驗(yàn)考察了協(xié)同濾波和基于用戶(hù)屬性濾波推薦系統(tǒng)中不同K 值時(shí)系統(tǒng)的表現(xiàn),記基于用戶(hù)屬性協(xié)同濾波的近鄰數(shù)為Ka,協(xié)同濾波的近鄰數(shù)為Kc,由式(7)和式(8)可知,當(dāng)TopN 一定時(shí),召回率和準(zhǔn)確率之間只差一個(gè)常數(shù)項(xiàng),所以下圖只顯示準(zhǔn)確率。在MovieLens100k和MovieLens 1M數(shù)據(jù)集上傳統(tǒng)協(xié)同濾波(CF),基于用戶(hù)屬性的協(xié)同濾波(ABM)和本文提出的混合方法(UABHM)的結(jié)果分別如圖1、圖2所示。
觀察圖1、圖2 與表1、表2 可知,在MovieLens 100k 和MovieLens 1m 數(shù)據(jù)集上,隨著Ka的增大,基于用戶(hù)屬性的協(xié)同濾波準(zhǔn)確率明顯下降,隨著Kc的增大,協(xié)同濾波的準(zhǔn)確率也呈下降趨勢(shì),ABM的準(zhǔn)確率一直低于另兩種方法。當(dāng)K 值較大時(shí),利用的近鄰數(shù)比較多,易出現(xiàn)過(guò)擬合現(xiàn)象。相似地K值較小時(shí),利用的近鄰數(shù)比較少,易出現(xiàn)欠擬合現(xiàn)象。所以在數(shù)據(jù)量較小的Movie Lens 100k 數(shù)據(jù)集上,由于屬性的個(gè)數(shù)較少,特征較為簡(jiǎn)單,Ka較大時(shí)便發(fā)生了過(guò)擬合現(xiàn)象,Kc數(shù)都比較小時(shí)發(fā)生了欠擬合,所以出現(xiàn)了而在MovieLens 100k 數(shù)據(jù)集上,Ka>Kc時(shí),協(xié)同濾波的效果優(yōu)于UABEM,但是隨著Kc的增大,UABEM 的優(yōu)勢(shì)開(kāi)始顯現(xiàn),特別是在Ka>Kc時(shí)更為明顯。而在數(shù)據(jù)量較大的MovieLens 1m 數(shù)據(jù)集上,由于混合方法的存在UABEM的表現(xiàn)一直優(yōu)于協(xié)同濾波。

圖2 MovieLens 1m數(shù)據(jù)集
4.2.2 推薦個(gè)數(shù)TopN對(duì)實(shí)驗(yàn)結(jié)果的影響
隨著TopN 的增加,系統(tǒng)的準(zhǔn)確率會(huì)有一定的下降,召回率會(huì)上升。而召回率和準(zhǔn)確率都是評(píng)價(jià)推薦系統(tǒng)的重要標(biāo)準(zhǔn),所以需要將二者綜合起來(lái),利用F1值對(duì)系統(tǒng)進(jìn)行評(píng)價(jià)。
算法在MovieLens 100k 和Movie Lens 1m 數(shù)據(jù)集上召回率、準(zhǔn)確率和F1 值隨TopN 變化的結(jié)果如圖3~4所示。
由實(shí)驗(yàn)結(jié)果可見(jiàn),在MovieLens 100k 數(shù)據(jù)集上,UABHM 相對(duì)于傳統(tǒng)的協(xié)同過(guò)濾算法,在TopN小于13 時(shí)表現(xiàn)較好,且TopN 越小,優(yōu)勢(shì)越明顯,在TopN 等于3時(shí),召回率、準(zhǔn)確率和F1值分別提升了0.0633%、3.79%和0.934%。出現(xiàn)上述現(xiàn)象的原因應(yīng)該是因?yàn)镸ovieLens 100k 數(shù)據(jù)量本身比較小,所以在TopN 較大時(shí)出現(xiàn)了過(guò)擬合,而傳統(tǒng)的CF 因?yàn)檩^為簡(jiǎn)單,所以受到影響比較小。

圖3 在Ka=5,Kc=15時(shí),MovieLens 100k數(shù)據(jù)集結(jié)果

圖4 在Ka=10,Kc=7時(shí),MovieLens 1m數(shù)據(jù)集結(jié)果
而在MovieLens 1m 數(shù)據(jù)集上,UABHM 的性能有明顯提升,召回率增加了0.0174%至0.225%、準(zhǔn)確率增幅明顯,有1.37%至2.64%的提升,F(xiàn)1 值有00.475%至0.456%的提升。而隨著TopN 值的變化,系統(tǒng)準(zhǔn)確率降低,召回率上升,F(xiàn)1 值也有提升,沒(méi)有出現(xiàn)因TopN 值上升帶來(lái)的總體性能降低的情況。
通過(guò)在MovieLens 100k 和MovieLens 1m 數(shù)據(jù)集上的實(shí)驗(yàn)結(jié)果分析可知,基于用戶(hù)屬性的協(xié)同濾波缺失能給傳統(tǒng)的系統(tǒng)濾波方法帶來(lái)性能上的提升,而UABHM 在MovieLens 1m 數(shù)據(jù)集上表現(xiàn)更好且優(yōu)勢(shì)明顯,也說(shuō)明數(shù)據(jù)集較小也會(huì)影響算法的性能。
本文提出了基于用戶(hù)屬性的混合推薦方法,將基于用戶(hù)屬性的協(xié)同推薦與傳統(tǒng)協(xié)同推薦的結(jié)果相混合得到新的模型與結(jié)果。通過(guò)在MovieLens 100k 和MovieLens 1m 數(shù)據(jù)集上的實(shí)驗(yàn),可以看到僅僅使用基于用戶(hù)屬性的協(xié)同濾波效果并不好,但是和傳統(tǒng)協(xié)同濾波的結(jié)果相混合后性能得到了提升。且該算法在更為稀疏、數(shù)據(jù)量更大的MovieL-ens 1m數(shù)據(jù)集上表現(xiàn)更好。實(shí)驗(yàn)說(shuō)明數(shù)據(jù)量較小、系統(tǒng)較為復(fù)雜時(shí)易出現(xiàn)過(guò)擬合現(xiàn)象,而用戶(hù)屬性協(xié)同濾波方法的加入帶了新的屬性特征,兩個(gè)利用來(lái)了不同特征的模型的混合確實(shí)能夠?qū)?yōu)點(diǎn)結(jié)合起來(lái),有助于提高推薦系統(tǒng)的性能。