申艷梅,李亞平,王巖
(河南理工大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,河南 焦作 454000)
推薦系統(tǒng)(recommendation sysytem)[1]是大數(shù)據(jù)時(shí)代幫助用戶處理信息過(guò)載的重要工具,它根據(jù)用戶行為[2]識(shí)別一組感興趣的條目,為用戶推薦心儀物品,節(jié)省用戶時(shí)間。
協(xié)同過(guò)濾(collaborative filtering,CF)算法[3]被稱為個(gè)性化推薦系統(tǒng)的成功技術(shù)之一,但隨著海量數(shù)據(jù)增加,CF算法出現(xiàn)了一系列問(wèn)題,例如稀疏度越來(lái)越高,推薦準(zhǔn)確性降低[4],特別是當(dāng)一個(gè)用戶或者項(xiàng)目數(shù)量極少,或者有新用戶和各式各樣的新物品出現(xiàn)時(shí),很難根據(jù)用戶歷史評(píng)分行為向目標(biāo)用戶進(jìn)行準(zhǔn)確推薦,眾所周知的冷啟動(dòng)[5]問(wèn)題便由此產(chǎn)生。因此,如何解決數(shù)據(jù)稀疏、冷啟動(dòng)問(wèn)題成為近年來(lái)國(guó)內(nèi)外學(xué)者的主要研究方向。李榮等[6]引入兩個(gè)修正因子計(jì)算不同用戶共同評(píng)分項(xiàng)目比例來(lái)調(diào)整相似性;范永全等[7]提出一種給Pearson加權(quán)的相似度計(jì)算方法;端德坤等[8]僅針對(duì)用戶屬性研究,解決了用戶冷啟動(dòng)問(wèn)題,忽略了項(xiàng)目冷啟動(dòng);吳佳婧等[9]將項(xiàng)目屬性標(biāo)簽融入Pearson相關(guān)系數(shù)計(jì)算項(xiàng)目間的相似度,但未考慮項(xiàng)目被評(píng)分時(shí)間對(duì)相似度的影響;李淑芝等[10]通過(guò)分析項(xiàng)目屬性,得到了用戶的評(píng)分比例,以此為依據(jù)對(duì)相似度進(jìn)行改進(jìn)。以上研究均未考慮時(shí)間上下文問(wèn)題。吳飛等[11]在協(xié)同過(guò)濾算法中利用時(shí)間效應(yīng)動(dòng)態(tài)分配評(píng)分的權(quán)重,將時(shí)間因素和用戶評(píng)分綜合后進(jìn)行預(yù)測(cè),提出基于時(shí)間效應(yīng)的協(xié)同過(guò)濾算法;LI T Y等[12]通過(guò)遺忘曲線跟蹤用戶興趣隨時(shí)間變化發(fā)生的轉(zhuǎn)移,提高了用戶滿意程度。
經(jīng)分析,上述研究只是對(duì)基于用戶屬性或項(xiàng)目屬性的數(shù)據(jù)信息進(jìn)行獨(dú)立的挖掘,沒(méi)有將二者進(jìn)行充分融合。本文為了解決用戶冷啟動(dòng)問(wèn)題,分析用戶自身年齡、性別、職業(yè)差異度,提出改進(jìn)的基于用戶屬性的協(xié)同過(guò)濾算法(collaborative filtering algorithm based on user attributes,UACF);
為了解決項(xiàng)目冷啟動(dòng)問(wèn)題,通過(guò)分析項(xiàng)目類型標(biāo)簽與項(xiàng)目被評(píng)分時(shí)間對(duì)項(xiàng)目相似度的影響,提出改進(jìn)的基于項(xiàng)目屬性的協(xié)同過(guò)濾算法(collaborative filtering algorithm based on item attributes,IACF);在以上基礎(chǔ)上進(jìn)行UACF算法推薦列表和IACF算法推薦列表融合,以提出一種新的加權(quán)融合推薦算法(UIACF)。融合后的推薦列表根據(jù)Top-N算法進(jìn)行推薦,以期克服CF算法中的冷啟動(dòng)問(wèn)題,從而提高推薦系統(tǒng)的性能。
傳統(tǒng)的協(xié)同過(guò)濾算法中,應(yīng)用最廣泛的是基于鄰域的協(xié)同過(guò)濾算法[14]。即基于鄰域的協(xié)同過(guò)濾算法一般劃分為2個(gè)大類,基于用戶的協(xié)同過(guò)濾(user-based collaborative filtering,UBCF)算法[14]和基于項(xiàng)目的協(xié)同過(guò)濾(item-based collaborative filtering,IBCF)算法[15]。
在計(jì)算用戶之間相似度時(shí),傳統(tǒng)的UBCF算法一般使用Pearson相關(guān)系數(shù),經(jīng)改進(jìn)后的算法以用戶歷史行為為依據(jù),充分考慮目標(biāo)用戶評(píng)價(jià)過(guò)的每一個(gè)項(xiàng)目評(píng)分,通過(guò)此方法計(jì)算相似度,以提高結(jié)果精準(zhǔn)度,計(jì)算式為
式中:Ru,i,Rv,i分別為用戶u,v對(duì)項(xiàng)目i的評(píng)分;R-u,R-v分別為用戶u,v對(duì)項(xiàng)目i的平均評(píng)分。
使用IBCF算法給用戶推薦時(shí),不能僅僅考慮項(xiàng)目之間的評(píng)分關(guān)系,也要參考用戶的歷史行為,這樣就能為目標(biāo)用戶找到滿足其需求的項(xiàng)目或者物品,然后將這些項(xiàng)目推薦給目標(biāo)用戶。余弦法為傳統(tǒng)相似度的計(jì)算方法,其式為
式中:Ni為評(píng)價(jià)過(guò)項(xiàng)目i的用戶數(shù)量;Nj為評(píng)價(jià)過(guò)項(xiàng)目j的用戶數(shù)量;|NiNj|為同時(shí)評(píng)價(jià)過(guò)項(xiàng)目i和項(xiàng)目j的用戶數(shù)量。
文獻(xiàn)[7]未曾考慮到新用戶沒(méi)有評(píng)分行為和某些用戶評(píng)分?jǐn)?shù)量少的因素,本文算法將用戶屬性融入相似度計(jì)算公式,當(dāng)有新用戶出現(xiàn)時(shí),推薦系統(tǒng)根據(jù)與新用戶屬性最相似的用戶喜歡的項(xiàng)目進(jìn)行推薦,能夠有效緩解冷啟動(dòng)問(wèn)題。
用戶屬性包括用戶的年齡、性別和職業(yè)。首先對(duì)年齡段進(jìn)行劃分,本文認(rèn)為年齡在10歲以下的人群,其興趣度更加接近,因此將用戶年齡對(duì)10取整,得到的結(jié)果作為該用戶的年齡段;其次用戶性別為男時(shí),記為0,性別為女時(shí)記為1;職業(yè)劃分標(biāo)準(zhǔn)參考《中華人民共和國(guó)職業(yè)分類大典》將數(shù)據(jù)集中的21種職業(yè)劃分為4個(gè)類別,依次記為0,1,2,3。
本文將以上3類屬性特征聯(lián)合后映射為一個(gè)1行3列的行向量,每一列的值分別為年齡、性別、職業(yè)的分類值,利用歐幾里得距離方法計(jì)算不同用戶間的屬性差異度,將其作為屬性特征相似性計(jì)量方法,用AttriUser(u,v)表示,其計(jì)算式為
式中,Au和Av分別為用戶u,v的特征向量。用戶屬性差異度值越大,說(shuō)明用戶間相似性越高。
本文在計(jì)算用戶間相似度的過(guò)程中引入權(quán)重系數(shù)α,用于調(diào)節(jié)關(guān)于用戶屬性的相似度計(jì)算方法與Pearson相關(guān)系數(shù)各自所占的權(quán)重,從而產(chǎn)生新的相似度計(jì)算方法,即
加權(quán)后的算法緩解了用戶自身年齡、性別和職業(yè)屬性對(duì)用戶興趣度的影響,能夠提高用戶之間的相似度,進(jìn)而提高推薦系統(tǒng)的推薦質(zhì)量。
計(jì)算得到不同用戶間的相似度后,以從大到小原則對(duì)相似度排序,獲得與目標(biāo)用戶最相近的鄰居,然后將僅有最近鄰居評(píng)價(jià)過(guò)的項(xiàng)目推薦給目標(biāo)用戶,最后預(yù)測(cè)目標(biāo)用戶對(duì)每一個(gè)推薦項(xiàng)目的評(píng)分,計(jì)算式為
式中:PUser(u,i)為基于用戶的協(xié)同過(guò)濾算法中用戶u對(duì)項(xiàng)目i的預(yù)測(cè)評(píng)分;Ku為用戶u的K個(gè)最近鄰居集合。
傳統(tǒng)算法計(jì)算不同項(xiàng)目間的相似性的依據(jù)是用戶行為,而忽略了項(xiàng)目自身的屬性特征,然而項(xiàng)目自身也有很多種類的屬性,因此以屬性為依據(jù),根據(jù)不同項(xiàng)目屬性的一致度改進(jìn)其相似性。
文獻(xiàn)[9]雖然引入了項(xiàng)目類型標(biāo)簽,但項(xiàng)目被評(píng)分時(shí)間對(duì)推薦結(jié)果的影響未被考慮,推薦效果不佳,本文算法在計(jì)算相似度時(shí),考慮時(shí)間因素,由于用戶短時(shí)間內(nèi)的興趣度更加接近,所以評(píng)分時(shí)間間隔越短,推薦結(jié)果越準(zhǔn)確。
定義1項(xiàng)目i擁有屬性a,記為Aui,a=1,否則記為Aui,a=0。
定義2Di,j為項(xiàng)目i和項(xiàng)目j屬性差異度,計(jì)算式為
其中,NA為關(guān)于項(xiàng)目的所有屬性集合。
考慮到目標(biāo)用戶對(duì)不同項(xiàng)目進(jìn)行評(píng)分時(shí),評(píng)分時(shí)間會(huì)對(duì)項(xiàng)目相似性產(chǎn)生一定影響,因此本文在計(jì)算項(xiàng)目i和j之間的相似度時(shí),引入兩個(gè)項(xiàng)目同時(shí)被目標(biāo)用戶評(píng)分的時(shí)間差異度。
定義3 項(xiàng)目i和項(xiàng)目j時(shí)間差異度計(jì)算式為
式中,timeui為目標(biāo)用戶u對(duì)項(xiàng)目i的評(píng)分時(shí)間;timeuj為目標(biāo)用戶u對(duì)項(xiàng)目j的評(píng)分時(shí)間,認(rèn)為不同項(xiàng)目在更接近的時(shí)間段內(nèi)被同一用戶進(jìn)行評(píng)分時(shí)會(huì)更加相似。
將項(xiàng)目屬性差異度和項(xiàng)目被評(píng)分時(shí)間影響的差異度融入到傳統(tǒng)的余弦相似度計(jì)算方法,得到改進(jìn)的相似度計(jì)算方法,計(jì)算式為
式(8)為改進(jìn)的親和力計(jì)算方法,充分分析了時(shí)間因素對(duì)用戶興趣度的影響,用戶在短期內(nèi)對(duì)相似項(xiàng)目的興趣度更高,隨著時(shí)間流逝,興趣度發(fā)生偏移,對(duì)相似項(xiàng)目的喜愛(ài)程度降低。因此,該式能更準(zhǔn)確地找到項(xiàng)目的最近鄰。
計(jì)算完成項(xiàng)目之間的相似度之后,從大到小排序,把相似程度高的N個(gè)項(xiàng)目推薦給目標(biāo)用戶,再逐一評(píng)測(cè)其對(duì)推薦項(xiàng)目的評(píng)分,根據(jù)項(xiàng)目i和項(xiàng)目j的相似度得到預(yù)測(cè)評(píng)分,計(jì)算式為
式中,Ruj為用戶u對(duì)項(xiàng)目j的評(píng)分。
將改進(jìn)的基于用戶屬性和項(xiàng)目屬性的協(xié)同過(guò)濾算法加權(quán)結(jié)合,得到推薦項(xiàng)目列表,再次進(jìn)行融合的新型融合推薦算法。
如表1~2所示,在UACF算法和IACF算法中,對(duì)同一個(gè)目標(biāo)用戶U1而言,有共同的推薦項(xiàng)目I2和I3,引入β權(quán)重系數(shù)計(jì)算其融合算法的預(yù)測(cè)評(píng)分,當(dāng)數(shù)據(jù)集中用戶數(shù)量比項(xiàng)目數(shù)量多時(shí),UACF算法的推薦結(jié)果占據(jù)主導(dǎo)地位,否則,IACF算法的推薦結(jié)果占主導(dǎo)地位。UACF和IACF算法融合預(yù)測(cè)評(píng)分計(jì)算方法為
表1 UACF算法對(duì)用戶U1的推薦列表Tab.1 UACF algorithm recommended list for user U1
β=0.8時(shí),推薦結(jié)果最佳,此時(shí),P(U1,I2)=0.8×4+0.2×5=4.2,P(U1,I3)=0.8×3+0.2×4=3.2。
表2 IACF算法對(duì)用戶U1的推薦列表Tab.2 IACF algorithm recommended list for user U1
對(duì)于UACF算法的推薦列表和IACF算法的推薦列表中不重合的項(xiàng)目,將UACF算法中的項(xiàng)目I1融合到IACF算法的推薦列表中,對(duì)融合后的列表進(jìn)行預(yù)測(cè)評(píng)分排序。用戶U1的融合推薦列表及其預(yù)測(cè)評(píng)分如表3所示。
表3 UIACF算法對(duì)用戶U1的融合推薦列表Tab.3 Fusion recommendation list of UIACF algorithm for user U1
根據(jù)融合推薦列表的預(yù)測(cè)評(píng)分值進(jìn)行Top-N推薦。UACF算法解決了新用戶冷啟動(dòng)問(wèn)題,IBACF算法解決了項(xiàng)目冷啟動(dòng)問(wèn)題,因此融合后的算法解決了新用戶和新項(xiàng)目出現(xiàn)的冷啟動(dòng)問(wèn)題。
輸入:MovieLens數(shù)據(jù)集
算法設(shè)計(jì)如下。
(1)分離MovieLens數(shù)據(jù)集,按比例隨機(jī)生成train訓(xùn)練集和test測(cè)試集。
(2)讀取訓(xùn)練集,生成user-movie-rating排序表。
(3)計(jì)算改進(jìn)的關(guān)于用戶屬性的相似度,用戶與用戶之間的相似度sim(u,v)由Pearson相關(guān)系數(shù)計(jì)算得出。
a)計(jì)算用戶屬性差異度AttriUser:由用戶的性別、年齡、職業(yè)屬性,建立用戶屬性矩陣,從而計(jì)算得到屬性差異度。
b)得到改進(jìn)的用戶相似度simUser(u,v),做歸一化處理。
c)依據(jù)MAE的結(jié)果合理確認(rèn)變量α的值。
(4)根據(jù)用戶的相似度排序,檢索出K1個(gè)與用戶最近的鄰居。
(5)將只有最近鄰居評(píng)價(jià)過(guò)的項(xiàng)目推薦給目標(biāo)用戶,依據(jù)預(yù)測(cè)評(píng)分的高低生成推薦結(jié)果PUser(u,i)。
(6)由步驟(2),根據(jù)用戶行為生成物品-物品的共現(xiàn)矩陣和物品被不同用戶購(gòu)買過(guò)的數(shù)量矩陣。
(7)計(jì)算改進(jìn)的關(guān)于項(xiàng)目屬性的相似度。
a)由傳統(tǒng)算法計(jì)算出項(xiàng)目之間的相似度sim(i,j)。
b)由項(xiàng)目的屬性標(biāo)簽,建立項(xiàng)目屬性矩陣,計(jì)算可得項(xiàng)目屬性差異度Di,j。
c)由項(xiàng)目被用戶評(píng)分時(shí)間計(jì)算得到項(xiàng)目時(shí)間差異度Timei,j。
d)得到改進(jìn)的項(xiàng)目相似度simItem(i,j),進(jìn)行歸一化處理。
(8)根據(jù)項(xiàng)目的相似度進(jìn)行排序,將項(xiàng)目的K2個(gè)最近鄰居推薦給用戶,并生成推薦結(jié)果PItem(u,i)。
(9)將步驟(5)和(8)生成的推薦結(jié)果融合,融合后的列表排序后將前N個(gè)推薦給用戶。
(10)通過(guò)MAE值的變化情況比較本文改進(jìn)的3種算法與文獻(xiàn)[7]和[9]算法。
采用美國(guó)GroupLens小組提供的包含943名用戶對(duì)1682部電影的10萬(wàn)條評(píng)分?jǐn)?shù)據(jù)的MovieLens 100K數(shù)據(jù)集進(jìn)行實(shí)驗(yàn),數(shù)據(jù)集被隨機(jī)切分為80%的訓(xùn)練集和20%的測(cè)試集。
以準(zhǔn)確率、召回率、MAE和均方根誤差(root mean square error,RMSE)作為衡量指標(biāo)。
(1)準(zhǔn)確率
(2)召回率
式中:U為用戶集合;為推薦的項(xiàng)目列表與實(shí)際評(píng)價(jià)的項(xiàng)目列表相交的數(shù)量;R(u)為推薦的項(xiàng)目列表長(zhǎng)度;T(u)為實(shí)際評(píng)分的項(xiàng)目列表長(zhǎng)度。
(3)MAE
(4)RMSE
式中:N為推薦項(xiàng)目列表的長(zhǎng)度;P(u,i)為用戶u對(duì)推薦項(xiàng)目i的預(yù)測(cè)評(píng)分;Q(u,i)為用戶u對(duì)項(xiàng)目i的實(shí)際評(píng)分。
為了驗(yàn)證本文改進(jìn)方法,共設(shè)計(jì)5組實(shí)驗(yàn)。
實(shí)驗(yàn)1通過(guò)MAE值確定UACF算法中權(quán)值α的大小。
本實(shí)驗(yàn)為了確定式(4)中α的最佳值,首先令最近鄰K=30,推薦項(xiàng)目N=12,則不同的α值對(duì)應(yīng)的MAE如圖1所示。
由圖1可知,當(dāng)α=0.5時(shí),MAE=0.7658,此時(shí)MAE值最小,推薦效果最佳。
圖1 變量α對(duì)應(yīng)的MAE值變化情況Fig.1 MAE changes corresponding to the variableαvalues
實(shí)驗(yàn)2確定UACF算法的最近鄰K1值。取推薦項(xiàng)目個(gè)數(shù)N=12,取12組K1(用戶最相鄰)值,分別計(jì)算傳統(tǒng)UACF(相似度計(jì)算使用Pearson相關(guān)系數(shù))和改進(jìn)的基于用戶屬性協(xié)同過(guò)濾算法。改進(jìn)算法的最優(yōu)K1值,由召回率、準(zhǔn)確率、MAE和RMSE得到,結(jié)果如圖2所示。由圖2可知,當(dāng)K1值在30附近時(shí),UACF算法的MAE值最小為0.7761,RMSE最小為0.9516,召回率和準(zhǔn)確率分別為0.0428和0.03848,且?guī)缀醪辉侔l(fā)生變化,因此,UACF算法的用戶最近鄰居K1的最優(yōu)值取30。
圖2 UACF和Pearson的指標(biāo)對(duì)比Fig.2 Comparisons of UACF and Pearson indicators
實(shí)驗(yàn)3確定IACF算法的最近鄰K2的值。
取推薦項(xiàng)目的個(gè)數(shù)N=12,選取12組K2(用戶最近鄰)值,分別計(jì)算傳統(tǒng)Item-Based CF(項(xiàng)目相似度計(jì)算方法采用式(2)余弦相似度)和基于用戶屬性改進(jìn)的協(xié)同過(guò)濾算法,改進(jìn)算法的最優(yōu)K2值由召回率、準(zhǔn)確率、MAE和RMSE得到,結(jié)果如圖3所示。由圖3可知,當(dāng)K2值在5附近時(shí),IACF算法的MAE和RMSE最小分別為0.76245和0.9508,召回率和準(zhǔn)確率最大分別為0.1164和0.1052,因此,IACF算法的項(xiàng)目最近鄰居K2的最優(yōu)值取5。
圖3 IACF和Cosine的指標(biāo)對(duì)比Fig.3 Comparison of IACF and Cosine indicators
實(shí)驗(yàn)4 計(jì)算融合算法中β對(duì)MAE的影響。
本實(shí)驗(yàn)為了確定式(11)中β的最佳值,由實(shí)驗(yàn)2和實(shí)驗(yàn)3取用戶最近鄰K1=30,K2=5,圖4為不同的權(quán)重系數(shù)β對(duì)應(yīng)的MAE值。由圖4可知,當(dāng)β=0.8時(shí),MAE=0.7457,此時(shí)MAE值最小,推薦效果最佳。
圖4 權(quán)重系數(shù)β對(duì)MAE值的影響Fig.4 Effect of weight coefficientβon MAE value
實(shí)驗(yàn)5 融合算法與其他算法MAE比較。
將改進(jìn)的基于用戶屬性的協(xié)同過(guò)濾算法與文獻(xiàn)[7]的算法比較,改進(jìn)的基于項(xiàng)目屬性的協(xié)同過(guò)濾算法與文獻(xiàn)[9]的算法比較,融合后的算法與UBACF算法和IACF算法比較,5種算法的推薦效果以MAE的變化情況為依據(jù),如圖5所示。
圖5 5種算法的MAE值Fig.5 MAE values for the five types of algorithms
由實(shí)驗(yàn)結(jié)果可以看出,改進(jìn)的UACF算法推薦效果要優(yōu)于文獻(xiàn)[7]的,因?yàn)槲墨I(xiàn)[7]算法忽略了用戶屬性特征對(duì)用戶信任度的影響;改進(jìn)的IACF算法推薦效果要優(yōu)于文獻(xiàn)[9],這是因?yàn)槲墨I(xiàn)[9]未將時(shí)間因素引入相似度計(jì)算中去,導(dǎo)致推薦質(zhì)量不佳;融合的UIACF算法MAE值在5種算法中始終處于最低,在改進(jìn)的UACF和IACF算法推薦效果明顯提高的前提下,UIACF又融合了UACF和IACF的推薦結(jié)果,同時(shí)解決了用戶和項(xiàng)目冷啟動(dòng)問(wèn)題,因此推薦精度最高。
實(shí)驗(yàn)6融合算法與其他算法時(shí)間性能比較。
為了更好地驗(yàn)證算法在不同數(shù)據(jù)集下的時(shí)間性能,選取的K為50~250,每隔50取值1次,表4給出5種算法在不同K值下的運(yùn)行時(shí)間。
表4 5種算法在不同K值的運(yùn)行時(shí)間Tab.4 Running times of five algorithms with different K values
如表4所示,IACF算法和文獻(xiàn)[9]運(yùn)行時(shí)間最長(zhǎng),這是因?yàn)樗鼈兌际窃趥鹘y(tǒng)余弦相似度算法的基礎(chǔ)上進(jìn)行改進(jìn)的,IACF算法的推薦效率不及文獻(xiàn)[9]算法,IACF算法考慮了用戶興趣度隨時(shí)間偏移發(fā)生的變化。融合算法和文獻(xiàn)[7]、UACF的推薦效率很接近,相對(duì)于本文選取的數(shù)據(jù)集,UACF算法占據(jù)主導(dǎo)地位,但由于融合算法同時(shí)融合了IACF算法,因此在運(yùn)行時(shí)間上要長(zhǎng)于UACF算法和文獻(xiàn)[7]的算法,總體而言,本文提出的融合算法能夠滿足用戶的基本需求。
(1)在UACF算法中,計(jì)算用戶間相似度時(shí),用戶年齡、性別、職業(yè)等屬性會(huì)帶來(lái)差異,為了減少差異,引入權(quán)重系數(shù),將用戶屬性差異度與Pearson相關(guān)系數(shù)相結(jié)合進(jìn)行計(jì)算。
(2)在IACF算法中,計(jì)算不同項(xiàng)目間的相似度時(shí),增加了因時(shí)間因素而導(dǎo)致不同項(xiàng)目被同一用戶評(píng)分的時(shí)間差異度,并引入項(xiàng)目的屬性差異度,提出一種新的計(jì)算項(xiàng)目之間相似度的方法。
(3)實(shí)驗(yàn)表明,本文的融合推薦算法明顯緩解了推薦系統(tǒng)的冷啟動(dòng)和精確度不高問(wèn)題。
(4)本文未考慮用戶的評(píng)分風(fēng)格對(duì)推薦結(jié)果的影響,在以后的工作中將會(huì)通過(guò)深度學(xué)習(xí)對(duì)此進(jìn)行深度挖掘。