楊北辰 余 粟 陳 樂
(上海工程技術(shù)大學(xué)電子電氣工程學(xué)院 上海 201620)
隨著各種智能設(shè)備的普及,人們既是信息的消費(fèi)者也是生產(chǎn)者,大量數(shù)據(jù)信息構(gòu)成人類生活的第五空間——網(wǎng)絡(luò)空間[1],其中,海量的數(shù)據(jù)使得人們難以尋找滿足自身需求的信息或商品[2].個(gè)性化的推薦系統(tǒng)應(yīng)運(yùn)而生,通過分析用戶的歷史行為和即時(shí)需求預(yù)測人們可能偏好的信息或商品[3].
主流的推薦系統(tǒng)使用基于內(nèi)容的推薦[4]、多模型混合推薦[5]和協(xié)同過濾推薦[6-7].協(xié)同過濾推薦建立在用戶與商品交互之上,如評(píng)分等行為,是目前推薦系統(tǒng)中研究和應(yīng)用最為廣泛的技術(shù)之一[8-9].協(xié)同過濾主要分為2種:基于物品和基于用戶,核心思想都是相似對象[10-11].
傳統(tǒng)的協(xié)同過濾推薦算法面臨一些現(xiàn)實(shí)困境,包括評(píng)分?jǐn)?shù)據(jù)稀疏性、相似性度量局限性、用戶評(píng)分偏好缺失性等問題.為了解決這些問題國內(nèi)外專家進(jìn)行了深入研究.朱磊等人[12]采用用戶評(píng)分偏好模型和物品屬性,改進(jìn)用戶間原始評(píng)分?jǐn)?shù)據(jù)的偏好差異性,但是原始評(píng)分?jǐn)?shù)據(jù)的稀疏性改善較差以及相似性修正因素部分欠缺;鄧愛林等人[13]提出先基于項(xiàng)目的協(xié)同過濾補(bǔ)全評(píng)分空值,再基于用戶的共同評(píng)分作出推薦,但是沒考慮傳統(tǒng)物品或用戶相似性度量本身存在的缺陷;岳希等人[14]融合基于物品的協(xié)同過濾填值和基于用戶的協(xié)同過濾預(yù)測,改善評(píng)分?jǐn)?shù)據(jù)的稀疏性和推薦精度,但是缺乏用戶評(píng)分偏好考量;肖文強(qiáng)等人[15]通過引入時(shí)間權(quán)重、流行物品權(quán)重等因素對物品相似度和用戶相似度加以修正,提高了推薦精度.
綜合分析已有的協(xié)同過濾技術(shù)后,本文提出一種2階段聯(lián)合預(yù)測的協(xié)同過濾推薦算法.一方面,采用基于物品的預(yù)測得分填充評(píng)分矩陣,改善數(shù)據(jù)稀疏性,同時(shí)對物品相似性引入時(shí)間權(quán)重因子,增加填值精度;另一方面,利用用戶評(píng)分偏好模型構(gòu)建評(píng)分偏好矩陣,以此計(jì)算用戶偏好得分,同時(shí)對用戶相似性引入用戶共同評(píng)分?jǐn)?shù)權(quán)重,最后聯(lián)合基于物品的預(yù)測得分和基于用戶的偏好得分作為目標(biāo)用戶的綜合預(yù)測得分.
協(xié)同過濾算法的2種主要模式其應(yīng)用環(huán)境不同,在實(shí)際使用過程中其使用性能有明顯區(qū)別.例如,電商網(wǎng)站的商品推薦更適合采用基于物品的協(xié)同過濾推薦,因其項(xiàng)目數(shù)相對用戶數(shù)更加穩(wěn)定且數(shù)量較少,而資訊類網(wǎng)站更適合采用基于用戶的協(xié)同過濾,因其用戶數(shù)相對項(xiàng)目數(shù)更加穩(wěn)定且數(shù)據(jù)較少.無論在哪種協(xié)同過濾算法實(shí)現(xiàn)的推薦系統(tǒng)中,用戶或物品的相似性度量對于推薦質(zhì)量都具有決定性的影響[16-17].相似性度量是由多方面計(jì)算得到的,如對象的屬性集和特征向量以及系數(shù)等,常用的相似性度量有修正余弦相似系數(shù)和皮爾遜相關(guān)系數(shù)等.本文選擇最為常用的皮爾遜相關(guān)系數(shù)對2種基礎(chǔ)協(xié)同過濾算法作出描述.
1) 基于物品的協(xié)同過濾算法.
物品s,o基于Pearson相關(guān)系數(shù)的相似度為
sim(s,o)=
(1)
由前k個(gè)近鄰物品的預(yù)測評(píng)分:
(2)
2) 基于用戶的協(xié)同過濾算法.
用戶u,v基于Pearson相關(guān)系數(shù)的相似度為
sim(u,v)=
(3)
由前k個(gè)近鄰用戶的預(yù)測評(píng)分:
(4)
但是,上述2種基礎(chǔ)協(xié)同過濾算法在實(shí)際應(yīng)用中存在諸多弊端,2種推薦算法的原始評(píng)分?jǐn)?shù)據(jù)存在稀疏性,相似性度量方式仍有缺陷,用戶在評(píng)分時(shí)存在個(gè)人喜好等問題,這些都會(huì)對用戶或物品之間的相似性度量產(chǎn)生較大誤差,從而影響推薦精度.因此,本文提出一種2階段聯(lián)合預(yù)測協(xié)同過濾算法,首先分別對2種預(yù)測模型進(jìn)行優(yōu)化,然后聯(lián)合基于物品的預(yù)測得分和基于用戶的偏好得分作為目標(biāo)用戶的綜合預(yù)測得分.
1) 物品相似度修正策略.
物品的時(shí)間屬性和用戶喜好的階段性對實(shí)現(xiàn)精準(zhǔn)推薦具有重要指導(dǎo)意義.例如,用戶在短期內(nèi)交互的物品具有更高的相關(guān)性,同類物品出現(xiàn)時(shí)間越短物品間相關(guān)性越高.因此,本文在物品相似度的計(jì)算中引入時(shí)間權(quán)重因子Ts,o.其定義如下:
Ts,o=e-(|tu,s-tu,o|+|ts-to|),
(5)
其中:tu,s為用戶u對物品s的評(píng)分時(shí)間;tu,o為用戶u對物品o的評(píng)分時(shí)間;ts和to分別為物品s,o的出現(xiàn)時(shí)間.由式(5)可知,用戶對2物品的評(píng)分時(shí)間差和2物品出現(xiàn)的時(shí)間差越短,時(shí)間權(quán)重因子越大.
基于時(shí)間權(quán)重因子對物品相似度度量方式作出改進(jìn)如下:
Ts,o∈(0,1]:simT(s,o)=sim(s,o)·Ts,o.
(6)
2) 原始評(píng)分矩陣填值.
現(xiàn)實(shí)生活中,用戶和產(chǎn)品之間、評(píng)價(jià)之間存在不對等關(guān)系,可能用戶使用了大量產(chǎn)品,但是并沒有對產(chǎn)品作出評(píng)價(jià),因此,某些產(chǎn)品存在評(píng)價(jià)稀疏的狀況,影響相似度的評(píng)價(jià).故對于物品或用戶相似性計(jì)算時(shí),Uso或Iuv集合中的數(shù)據(jù)十分稀少甚至于沒有.這樣的情況會(huì)造成物品或用戶相似性度量精度較低甚至于無法計(jì)算相似性.為了改善相似度稀疏的問題,本文算法對用戶的選取模式采用全用戶隨機(jī)方式進(jìn)行預(yù)測評(píng)分,已有評(píng)分用戶可取預(yù)測值與原始值的均值,利用式(1)(2)(5)(6)將評(píng)分矩陣Anm轉(zhuǎn)化為完整的評(píng)分矩陣comAnm.
1) 用戶評(píng)分偏好模型
在現(xiàn)實(shí)生活中,每個(gè)用戶的評(píng)分喜好都存在客觀上的差異[18].當(dāng)不同用戶對同一物品給出相同評(píng)分時(shí),意味著評(píng)分要求嚴(yán)格的用戶更加喜歡這個(gè)物品.這就導(dǎo)致了原始評(píng)分?jǐn)?shù)據(jù)欠缺對用戶評(píng)分偏好的細(xì)粒度劃分.
假設(shè)有評(píng)分類別集合{r1,r2,…,rn} ,則用戶u對于評(píng)分類別ri的偏好得分preRu,ri可以通過式(7)計(jì)算[9]:
(7)
其中:Nrj 2) 用戶相似度修正策略. 在實(shí)際應(yīng)用中,用戶相似性度量還存在一些問題,例如,當(dāng)用戶之間共同評(píng)分的物品數(shù)很少時(shí),則用戶間的相似性會(huì)很高,但該相似性的可信度很低;當(dāng)用戶之間共同評(píng)分物品數(shù)較多但評(píng)分都偏低時(shí),則基于高相似性的近鄰用戶作出錯(cuò)誤的推薦.本節(jié)引入權(quán)重因子Wuv進(jìn)行改進(jìn): (8) 其中:Nuv為用戶u和用戶v的共同評(píng)分物品數(shù);Nmin為用戶空間共同評(píng)分物品數(shù)的最小值,Nmin≥0;Nmax為用戶空間共同評(píng)分物品數(shù)的最大值;Nu為用戶u的物品數(shù);Nv為用戶v的物品數(shù).由式(8)可知,用戶共同評(píng)分物品數(shù)越多則用戶共同評(píng)分權(quán)重因子越大. 基于用戶共同評(píng)分權(quán)重因子對傳統(tǒng)用戶相似性度量方式作出改進(jìn)如下: simC(u,v)=sim(u,v)·Wuv, (9) 其中Wuv∈(0,1]. 用戶對物品的偏好程度不同于用戶對物品的評(píng)分,即使2個(gè)用戶對某一物品的評(píng)分值相同,但2個(gè)用戶對這一物品的偏好程度卻有所差異.所以用戶對物品的偏好得分prefPu,s如下: (10) 其中:simC(u,v)為用戶u和用戶v之間的修正相似度;Rv,s為用戶v對物品s的評(píng)分;Mk為用戶u的前k個(gè)近鄰用戶集合. 結(jié)合上文,最終將聯(lián)合基于物品的預(yù)測評(píng)分與基于用戶的偏好得分計(jì)算用戶u對物品s的綜合預(yù)測評(píng)分finPu,s定義如下: (Pu,s+prefPu,s), (11) 其中:prefPu,s為用戶u對物品s的偏好得分;Pu,s為基于物品模型所得用戶u對物品s的預(yù)測得分;Mk和Nk分別為用戶u的k近鄰用戶集和物品s的k近鄰物品集. 算法1.2階段聯(lián)合預(yù)測的協(xié)同過濾算法. 輸入:初始評(píng)分矩陣Anm、物品與用戶近鄰個(gè)數(shù)k、推薦列表長度L; 輸出:任意用戶u的推薦列表. 1) 通過基于物品的協(xié)同過濾算法——式(1)(2)和物品相似度改進(jìn)策略——式(5)(6)對每個(gè)用戶計(jì)算Uso空間中用戶對物品的預(yù)測評(píng)分,填補(bǔ)空值,若用戶存在原始評(píng)分,則取預(yù)測評(píng)分和原始評(píng)分的均值作為新評(píng)分值,得到完整評(píng)分矩陣comAnm. 2) 由完整評(píng)分矩陣comAnm和用戶評(píng)分偏好模型——式(7),計(jì)算用戶評(píng)分偏好矩陣prefAnm. 3) 基于用戶評(píng)分偏好矩陣prefAnm和近鄰用戶數(shù)k,由基于用戶偏好的評(píng)分預(yù)測——式(10)和用戶相似性改進(jìn)策略——式(8)(9)計(jì)算用戶u對所有物品的偏好得分. 4) 將用戶u在步驟1)中的預(yù)測評(píng)分和步驟3)中的偏好得分聯(lián)合——式(11),作為用戶u對所有物品的綜合評(píng)分,順序排列,取前L個(gè)作為該用戶的推薦列表. 1) 實(shí)驗(yàn)數(shù)據(jù)集. 本文實(shí)驗(yàn)數(shù)據(jù)集采用Movie Lens 10M, 該數(shù)據(jù)集包含71 567位用戶對10 681部電影的10 000 054條評(píng)分.實(shí)驗(yàn)時(shí),將原始數(shù)據(jù)集以8∶2的比例劃分為訓(xùn)練集和測試集,且取5次實(shí)驗(yàn)的算術(shù)平均值作為最終結(jié)果. 2) 評(píng)價(jià)指標(biāo). 本文采用準(zhǔn)確率和召回率進(jìn)行算法評(píng)價(jià).準(zhǔn)確率和召回率定義如下: (12) (13) 其中:U為測試集所有用戶集合;F(u)為訓(xùn)練集上對目標(biāo)用戶u的推薦列表;T(u)為目標(biāo)用戶u測試集上喜歡的物品集合. 此外,為了探究稀疏性給算法帶來的影響,本文采用平均絕對誤差評(píng)估在不同稀疏度數(shù)據(jù)集下的推薦質(zhì)量,其定義如下: (14) 其中:pi=(pi1,pi2,…,pim)為預(yù)測用戶評(píng)分向量;ri=(ri1,ri2,…,rim)為實(shí)際用戶評(píng)分向量,MAE值越小推薦質(zhì)量越高. 為了充分驗(yàn)證本文算法具有更好的推薦精度,故將本文算法與相近算法橫向?qū)Ρ?,選取朱磊等人[12]提出的基于評(píng)分偏好與項(xiàng)目屬性的協(xié)同過濾算法(PTP-Ttem-CF),該算法僅挖掘評(píng)分?jǐn)?shù)據(jù)的內(nèi)在屬性而未有效改善數(shù)據(jù)稀疏性.岳希等人[14]提出的基于數(shù)據(jù)稀疏性的協(xié)同過濾算法僅從填值角度改善稀疏性,而未充分挖掘數(shù)據(jù)內(nèi)在屬性.相近算法的實(shí)驗(yàn)結(jié)果數(shù)據(jù)均在同一數(shù)據(jù)源、同一硬件配置和同一實(shí)驗(yàn)方式下復(fù)現(xiàn)而得. 1) 不同物品和用戶近鄰數(shù)k值下的性能對比. 實(shí)驗(yàn)時(shí),取推薦列表為12,通過設(shè)置不同的k值來測試其對算法性能的影響,k取值范圍[10,100],步長為10.實(shí)驗(yàn)結(jié)果如圖1、圖2所示: 圖1 不同k值下各算法準(zhǔn)確率對比 圖2 不同k值下各算法召回率對比 由圖1、圖2實(shí)驗(yàn)數(shù)據(jù)可知,隨著近鄰用戶數(shù)的增加,各算法的準(zhǔn)確率和召回率均增加,而后趨于平穩(wěn),且當(dāng)近鄰用戶數(shù)在40左右時(shí),各算法具有較高的準(zhǔn)確率和召回率.此外,無論k取何種值,本文算法表現(xiàn)均優(yōu)于其余2種算法. 2) 不同推薦列表長度L下的性能對比. 實(shí)驗(yàn)中,近鄰用戶數(shù)k=40,L取值范圍[6,48],步長為6.實(shí)驗(yàn)結(jié)果如圖3、圖4所示: 圖3 不同L值下各算法準(zhǔn)確率對比 圖4 不同L值下各算法召回率對比 由圖3、圖4可知,隨著推薦列表長度L的不斷增加,各算法的準(zhǔn)確率不斷下降,召回率不斷增加,且在不同L取值條件下,本文算法表現(xiàn)均優(yōu)于其余2種算法. 3) 不同數(shù)據(jù)稀疏度下各算法的性能對比. 本文采用的數(shù)據(jù)集中,用戶數(shù)n=943,物品數(shù)m=1 682,已有評(píng)分記錄為90 570.數(shù)據(jù)稀疏度表示為用戶評(píng)分?jǐn)?shù)據(jù)中未評(píng)分項(xiàng)所占比例,定義如下: (15) 實(shí)驗(yàn)中,取k=40,L=20,并從原始數(shù)據(jù)集中提取不同數(shù)量的已評(píng)分條數(shù),測試在不同稀疏度下各算法的MAE值,進(jìn)而分析各算法性能差異,實(shí)驗(yàn)結(jié)果如表1所示. 從表1可知,數(shù)據(jù)稀疏度的增加會(huì)使算法的MAE值不斷增加,以0.943作為基準(zhǔn),作出不同稀疏度下各算法的MAE值增量,如圖5所示. 表1 不同稀疏度下各算法MAE對比 圖5 不同稀疏度下各算法MAE增量對比 由圖5可知,隨著稀疏度增加,本文優(yōu)化算法的MAE增量值明顯低于其余2種算法,驗(yàn)證了本文算法針對稀疏數(shù)據(jù)有更高的推薦精度. 本文針對傳統(tǒng)協(xié)同過濾算法中存在的數(shù)據(jù)稀疏性、相似性度量局限性、用戶評(píng)分偏好缺失性的問題,提出一種聯(lián)合2階段預(yù)測填值的協(xié)同過濾算法.通過基于物品的協(xié)同過濾填補(bǔ)空值,可以有效改善數(shù)據(jù)稀疏性.將用戶評(píng)分偏好模型融合評(píng)分信息和偏好信息,并針對物品與用戶的相似性度量作出改進(jìn),可以顯著提高推薦精度,尤其在數(shù)據(jù)較為稀疏時(shí)表現(xiàn)更優(yōu).由于本文的用戶偏好模型是基于用戶評(píng)分?jǐn)?shù)據(jù),對用戶的偏好描述不夠完善,故將結(jié)合文本挖掘獲取更多用戶對物品的評(píng)論信息,利用更多的偏好特征詞完善偏好矩陣,提高推薦精度.2.3 用戶評(píng)分預(yù)測
2.4 算法描述
3 實(shí)驗(yàn)測試
3.1 實(shí)驗(yàn)數(shù)據(jù)集和算法評(píng)估指標(biāo)
3.2 實(shí)驗(yàn)結(jié)果分析
4 結(jié) 語