劉國(guó)麗,徐洪楠,譚有倩
(1.河北工業(yè)大學(xué)人工智能與數(shù)據(jù)科學(xué)學(xué)院,天津 300401; 2.河北工業(yè)大學(xué)廊坊分校,河北 廊坊 065008)
互聯(lián)網(wǎng)時(shí)代導(dǎo)致的信息過(guò)載現(xiàn)象,促使電子商務(wù)社區(qū)對(duì)推薦算法進(jìn)行大量改進(jìn),以提供一種智能機(jī)制,從與用戶相關(guān)的海量數(shù)據(jù)中過(guò)濾出可用的信息。協(xié)同過(guò)濾是推薦系統(tǒng)中應(yīng)用最廣泛的推薦技術(shù)之一[1]。傳統(tǒng)的協(xié)同過(guò)濾算法主要是依靠鄰居用戶進(jìn)行推薦,這樣僅依賴鄰居用戶所得到的推薦結(jié)果往往不是很可靠。在現(xiàn)實(shí)生活的社交網(wǎng)絡(luò)中,不僅有興趣相似的鄰居用戶,還存在具有某些特定領(lǐng)域知識(shí)并且閱歷廣泛的社區(qū)專家[2]。在人們的日常生活中,人們傾向于咨詢專家,聽(tīng)取專家意見(jiàn)。專家的建議更具有說(shuō)服力,也會(huì)影響用戶的感知[3]。因此,越來(lái)越多的學(xué)者將專家信任因素考慮到推薦系統(tǒng)中。
針對(duì)目前協(xié)同過(guò)濾推薦算法存在的鄰居用戶相似度、專家信任度計(jì)算不準(zhǔn)確、冷啟動(dòng)等原因?qū)е碌耐扑]準(zhǔn)確度低的問(wèn)題,國(guó)內(nèi)外學(xué)者進(jìn)行了大量研究。李炎等人[4]從用戶空間角度對(duì)相似度以及評(píng)分預(yù)測(cè)進(jìn)行改進(jìn),在提高了算法準(zhǔn)確率的同時(shí)也降低了算法的時(shí)間復(fù)雜度,但忽略了項(xiàng)目本身的冷門程度對(duì)相似度的影響。Hafed等人[5]引入項(xiàng)目場(chǎng)景相似度的概念,對(duì)相似度計(jì)算公式進(jìn)行改進(jìn),提出了一種新的基于場(chǎng)景的協(xié)同過(guò)濾推薦算法,最終利用聚類矩陣和用戶的評(píng)分矩陣生成推薦,有效地緩解了稀疏性問(wèn)題,提高了推薦精度。Gou等人[6]將信任感知和領(lǐng)域?qū)<彝扑]相結(jié)合,通過(guò)信任感知網(wǎng)絡(luò)解決不能直接計(jì)算某些用戶的信任值的問(wèn)題,但在相似度計(jì)算上,忽略了用戶的評(píng)分時(shí)間對(duì)相似度的影響。李普聰?shù)热薣7]借鑒社會(huì)心理學(xué)人際信任建立機(jī)制,將“用戶-項(xiàng)目”單層網(wǎng)絡(luò)擴(kuò)展為“用戶-用戶-項(xiàng)目”雙層網(wǎng)絡(luò),根據(jù)用戶之間的信任確定資源分配,提高了推薦的準(zhǔn)確度和多樣性。Wu等人[8]認(rèn)為進(jìn)行預(yù)測(cè)時(shí)的關(guān)鍵問(wèn)題是檢測(cè)不可信用戶提供的不可靠數(shù)據(jù),從此角度,提出了一種新的可信性感知預(yù)測(cè)方法,采用兩階段K-means聚類來(lái)識(shí)別不可信用戶,不僅提高了預(yù)測(cè)精度,而且提高了方法的魯棒性。Ahlem等人[9]提出了一種基于信任的服務(wù)推薦機(jī)制,該機(jī)制分為2個(gè)階段,第一階段根據(jù)用戶的社會(huì)概況以及某段時(shí)間內(nèi)的互動(dòng)來(lái)對(duì)用戶進(jìn)行信任檢測(cè);第二階段將社會(huì)性和協(xié)作性結(jié)合起來(lái),根據(jù)專業(yè)水平向用戶推薦適當(dāng)?shù)姆?wù),該機(jī)制有效地提高了推薦精度。Zheng等人[10]將專家信任考慮到推薦算法中,有效地緩解了數(shù)據(jù)稀疏性和冷啟動(dòng)問(wèn)題,但是在計(jì)算專家信任時(shí),只考慮到了用戶的評(píng)分?jǐn)?shù)量,忽略了專家自身的社會(huì)閱歷的影響。
上述算法雖然在提高推薦精度方面有一定的效果,但仍存在需要改進(jìn)的地方,這體現(xiàn)在如下4個(gè)方面:1)已有的協(xié)同過(guò)濾推薦算法在計(jì)算相似度時(shí),忽略了2個(gè)用戶對(duì)同一項(xiàng)目評(píng)分時(shí)間所蘊(yùn)含的隱偏好,本文通過(guò)用戶的評(píng)分時(shí)間以及項(xiàng)目的產(chǎn)生時(shí)間形成隱偏好因子對(duì)相似度進(jìn)行改進(jìn);2)考慮到2個(gè)用戶公共偏好項(xiàng)目的冷門程度對(duì)相似度的影響,設(shè)置項(xiàng)目冷門因子,冷門因子越大,則2個(gè)用戶公共偏好項(xiàng)目的冷門程度越高,該項(xiàng)目在用戶的興趣權(quán)重分配值越大,對(duì)相似度計(jì)算影響越大;3)鑒于以往專家信任的計(jì)算未考慮到專家的閱歷值對(duì)信任值的影響,通過(guò)設(shè)置時(shí)間跨度因子體現(xiàn)專家的閱歷值,專家的閱歷越豐富,專家的評(píng)分越可靠,對(duì)用戶的評(píng)分預(yù)測(cè)更加準(zhǔn)確;4)上述算法對(duì)冷啟動(dòng)問(wèn)題考慮仍不夠全面,當(dāng)用戶不存在評(píng)分時(shí),無(wú)法找出其鄰居用戶,因此無(wú)法進(jìn)行有效的推薦。本文通過(guò)用戶自身所具有的屬性,找出與待測(cè)用戶屬性相似的用戶,并聯(lián)合專家用戶來(lái)緩解冷啟動(dòng)問(wèn)題。
針對(duì)傳統(tǒng)推薦算法所存在的問(wèn)題,本文提出一種結(jié)合專家信任的協(xié)同過(guò)濾推薦算法CFRAET(Collaborative Filtering Recommendation Algorithm based on Expert Trust)。傳統(tǒng)的推薦算法將所有的用戶群都作為選擇最鄰居用戶的參考群,隨著用戶群的增加,不僅會(huì)降低系統(tǒng)的性能,還會(huì)造成嚴(yán)重的數(shù)據(jù)稀疏問(wèn)題[11]。因此,本文首先參考文獻(xiàn)[12],根據(jù)用戶的相似度進(jìn)行聚類,將興趣點(diǎn)相同的用戶分到同一個(gè)社區(qū)簇中。本文算法從相似度、專家信任度和緩解冷啟動(dòng)3個(gè)方面進(jìn)行研究。
對(duì)于個(gè)性化推薦來(lái)說(shuō),最核心的部分是相似度的計(jì)算。在相似度計(jì)算方法中,Pearson相關(guān)系數(shù)[13]和Jaccard相似系數(shù)[14]是應(yīng)用較為廣泛的2種。Pearson相關(guān)系數(shù)是根據(jù)2個(gè)用戶的共同評(píng)分項(xiàng)計(jì)算相似度,適用于評(píng)分?jǐn)?shù)目較多的數(shù)據(jù)集,但是忽略了2個(gè)用戶公共評(píng)分項(xiàng)目所占的比例問(wèn)題;Jaccard相似系數(shù)僅關(guān)注用戶是否對(duì)項(xiàng)目進(jìn)行過(guò)評(píng)分,而不考慮用戶對(duì)項(xiàng)目的評(píng)分值。因此Jaccard相似系數(shù)主要用于計(jì)算有限集合中樣本之間的相似度,適用于稀疏度高的數(shù)據(jù)集。本文參考文獻(xiàn)[15]中的方法,通過(guò)引入加權(quán)系數(shù),將Pearson相關(guān)系數(shù)和Jaccard相似系數(shù)結(jié)合在一起,有效地利用2種方法的優(yōu)點(diǎn),使相似度計(jì)算更加準(zhǔn)確,計(jì)算如公式(1)所示:
(1)
其中,Ix,y表示用戶x、y的共同評(píng)分項(xiàng)集合,Rx,i、Ry,i分別表示用戶x、y對(duì)項(xiàng)目i的評(píng)分,ˉRx表示用戶x的平均評(píng)分,Nx、Ny分別表示用戶x、y的評(píng)分項(xiàng)目集合,加權(quán)系數(shù)如公式(2)所示:
(2)
其中,Ix表示用戶x已評(píng)分的項(xiàng)目集合,Iy表示用戶y已評(píng)分的項(xiàng)目集合。
公式(1)雖將2種相似度計(jì)算方法的優(yōu)點(diǎn)相結(jié)合,但是僅通過(guò)評(píng)分計(jì)算用戶的相似度仍存在偏差。因此,本文將從公共評(píng)分項(xiàng)目蘊(yùn)含的用戶隱偏好及項(xiàng)目本身的冷門程度2個(gè)方面對(duì)相似度進(jìn)行改進(jìn)。
1.1.1 引入用戶隱偏好
在現(xiàn)實(shí)生活中,當(dāng)有新的項(xiàng)目產(chǎn)生時(shí),人們會(huì)通過(guò)各種渠道提前了解到該項(xiàng)目的相關(guān)信息。以電影為例,當(dāng)有新的電影即將上映時(shí),電影所屬的公司會(huì)對(duì)該電影進(jìn)行宣傳,用戶可以通過(guò)各種渠道提前了解到電影的相關(guān)信息,如電影類型、演員陣容、電影內(nèi)容等。用戶會(huì)對(duì)該電影有一個(gè)定位,如果用戶喜歡該電影,通常會(huì)盡早地觀看其感興趣的電影并對(duì)其評(píng)分;反之,如果用戶不喜歡該電影,可能在電影上映很久以后才做出評(píng)分。電子產(chǎn)品中的手機(jī)也存在類似情況,每當(dāng)有新型手機(jī)即將上市時(shí),手機(jī)的廠家都會(huì)舉辦發(fā)布會(huì),目的是讓用戶可以提前了解到手機(jī)的性能。若用戶覺(jué)得該產(chǎn)品滿足自己各方面的要求,用戶就會(huì)在產(chǎn)品正式銷售的第一時(shí)間去購(gòu)買并評(píng)價(jià)該產(chǎn)品;反之,若該手機(jī)的某些指標(biāo)沒(méi)有滿足用戶的要求,該用戶有可能會(huì)延遲購(gòu)買的時(shí)間,或拒絕購(gòu)買該產(chǎn)品??紤]到上述現(xiàn)象,可以認(rèn)為用戶對(duì)項(xiàng)目評(píng)分的時(shí)間與商品的產(chǎn)生時(shí)間在一定程度上反應(yīng)用戶對(duì)項(xiàng)目的偏好。因此,本文通過(guò)引入相對(duì)時(shí)間的概念來(lái)體現(xiàn)用戶對(duì)項(xiàng)目的隱偏好。相對(duì)時(shí)間主要通過(guò)用戶對(duì)項(xiàng)目的評(píng)分時(shí)刻與項(xiàng)目本身的產(chǎn)生時(shí)刻的差值來(lái)計(jì)算,相對(duì)時(shí)間值越大,表示用戶對(duì)項(xiàng)目的隱偏好越小,反之,則越大。其計(jì)算如公式(3)所示:
pre(x,i)=URtime(x,i)-MRtime(i)
(3)
其中,URtime(x,i)表示用戶x評(píng)價(jià)項(xiàng)目i的時(shí)刻,MRtime表示項(xiàng)目i的產(chǎn)生時(shí)刻。
考慮到2個(gè)用戶對(duì)項(xiàng)目的隱偏好對(duì)相似度計(jì)算的影響,計(jì)算出2個(gè)用戶的隱偏好差值,通過(guò)公式(4)對(duì)其進(jìn)行規(guī)范化處理:
(4)
(5)
1.1.2 引入項(xiàng)目冷門因子
傳統(tǒng)的結(jié)合專家信任的協(xié)同過(guò)濾推薦算法在計(jì)算相似度時(shí),注重用戶評(píng)分及用戶自身屬性帶來(lái)的影響,但忽略了項(xiàng)目本身冷門程度對(duì)相似度的影響。通常情況下,若2個(gè)用戶的共同偏好項(xiàng)越冷門,則該項(xiàng)目在相似度計(jì)算中權(quán)重也較大。因此,本文引入項(xiàng)目的冷門因子來(lái)對(duì)相似度進(jìn)行改進(jìn)。
對(duì)于每個(gè)項(xiàng)目,首先通過(guò)公式(6)計(jì)算出對(duì)該項(xiàng)目未評(píng)過(guò)分的用戶數(shù)目,即項(xiàng)目的冷門度:
Unpopi=n-count(Rx,i>0)
(6)
其中,n表示用戶的總個(gè)數(shù),count(Rx,i>0)表示對(duì)項(xiàng)目i做出過(guò)評(píng)分的用戶數(shù)量。
對(duì)用戶公共評(píng)分項(xiàng)進(jìn)行冷門因子的度量。2個(gè)用戶的共同評(píng)分項(xiàng)集合Ix,y中會(huì)出現(xiàn)以下3種情況:
情況1 2個(gè)用戶同時(shí)喜歡的項(xiàng)目集合。
情況2 2個(gè)用戶同時(shí)不喜歡的項(xiàng)目集合。
情況3 一個(gè)用戶喜歡而另一個(gè)用戶不喜歡的項(xiàng)目集合。
對(duì)于情況1和情況2,2個(gè)用戶對(duì)同一項(xiàng)目具有相同的偏好,此時(shí),項(xiàng)目冷門因子對(duì)相似度的影響較大,采用公式(7)進(jìn)行計(jì)算:
(7)
其中,Unpopmax表示項(xiàng)目的最大冷門度,其取值為Unpopi中的最大值,Unpopmin表示項(xiàng)目的最小冷門度,其取值為Unpopi中的最小值。
對(duì)于情況3,2個(gè)用戶對(duì)同一項(xiàng)目的偏好不同,此時(shí)項(xiàng)目冷門因子對(duì)相似度的影響將會(huì)降低。本文采用2個(gè)用戶的評(píng)分差值來(lái)降低冷門因子對(duì)相似度產(chǎn)生的影響,采用公式(8)進(jìn)行計(jì)算:
(8)
冷門因子介于0與1之間。通過(guò)公式(9)計(jì)算2個(gè)用戶公共評(píng)分項(xiàng)集合的冷門因子的平均值:
(9)
(10)
專家信任度表明用戶向網(wǎng)絡(luò)中的其他用戶提供可靠信息的能力,該能力與用戶儲(chǔ)備的知識(shí)以及經(jīng)驗(yàn)息息相關(guān)。景民昌等人[16]認(rèn)為專家信任度與用戶對(duì)項(xiàng)目的評(píng)分?jǐn)?shù)量成正比,即用戶的評(píng)分次數(shù)越多,則專家信任度值越高。專家信任度值計(jì)算方法如公式(11)所示:
(11)
實(shí)際生活中,專家信任度不僅與評(píng)分?jǐn)?shù)量有關(guān),還與用戶的閱歷豐富程度有關(guān)[17]。本文從用戶評(píng)分時(shí)間出發(fā),考慮到不同閱歷值對(duì)專家評(píng)分的影響,當(dāng)用戶閱歷豐富時(shí),用戶會(huì)有更多的機(jī)會(huì)接觸各式各樣的項(xiàng)目,做出的評(píng)價(jià)就會(huì)更加可靠,專家信任度會(huì)更高。本文引入時(shí)間跨度因子反映專家的閱歷豐富程度,計(jì)算方法如公式(12)所示:
(12)
時(shí)間跨度因子φx不是一個(gè)固定的數(shù)值,會(huì)隨著用戶對(duì)項(xiàng)目評(píng)分的時(shí)間不同而發(fā)生變化。φx變化時(shí),用戶的專家信任度也會(huì)發(fā)生變化。本文專家信任度計(jì)算如公式(13)所示:
TStrust(x)=trust(x)·φx
(13)
專家信任度是選取專家的重要依據(jù),但僅計(jì)算出專家信任度還不能完成目標(biāo)用戶的推薦,還應(yīng)選出目標(biāo)用戶所在社區(qū)簇中的專家用戶。通常有2種方法確定各社區(qū)簇中專家數(shù)目,第一種方法是固定專家的數(shù)目,即每個(gè)社區(qū)簇中專家的數(shù)目相同。由于每個(gè)社區(qū)簇中的用戶數(shù)目是不確定的,如果固定專家的數(shù)目,可能出現(xiàn)整個(gè)社區(qū)簇中全是專家的極端情況。第二種方法是按照比例選取社區(qū)簇中專家的數(shù)目,該方法不僅會(huì)避免第一種方法中極端情況的產(chǎn)生,同時(shí)符合實(shí)際情況。因此,本文首先對(duì)社區(qū)簇內(nèi)的每個(gè)用戶按照專家信任度進(jìn)行排序,然后按比例確定相應(yīng)數(shù)目的用戶作為該社區(qū)簇內(nèi)的專家進(jìn)行推薦。專家選取方法如公式(14)所示:
Expert(s)=Nums×γ
(14)
其中,Expert(s)表示第s個(gè)社區(qū)簇中的專家數(shù)量,Nums表示第s個(gè)社區(qū)簇中的全部用戶數(shù)量,γ表示專家用戶數(shù)所占該社區(qū)簇總?cè)藬?shù)的比例。
用戶冷啟動(dòng)問(wèn)題,即用戶不存在評(píng)分記錄,用戶不存在評(píng)分記錄則無(wú)法找出其鄰居用戶進(jìn)行推薦。針對(duì)用戶冷啟動(dòng)問(wèn)題,本文考慮到相同屬性的用戶具有相似的興趣愛(ài)好,可以通過(guò)目標(biāo)用戶的自身屬性尋找鄰居用戶。本文首先選出對(duì)待預(yù)測(cè)項(xiàng)目已評(píng)分的用戶,其次對(duì)其中的專家用戶采用專家信任度;對(duì)其中的普通用戶,計(jì)算其與目標(biāo)用戶的屬性相似度,最后通過(guò)屬性相似用戶與專家用戶共同為冷啟動(dòng)用戶產(chǎn)生推薦。
不同屬性對(duì)用戶興趣的影響不同,其中,年齡和性別對(duì)興趣的影響最大[18]。例如:對(duì)年齡而言,兒童傾向于觀看卡通類影片,青少年傾向于動(dòng)作類影片,中年人傾向于觀看家庭倫理類影片,老年人則傾向于觀看紀(jì)錄片;對(duì)性別而言,男性傾向于觀看斷案推理類或者科幻動(dòng)作類影片,女性傾向于看情感生活類或者喜劇類影片。因此,本文選取年齡和性別來(lái)計(jì)算用戶之間的屬性相似度。
1.3.1 用戶屬性預(yù)處理
為了方便屬性相似度的計(jì)算,首先對(duì)數(shù)據(jù)集中的屬性作數(shù)值化處理。對(duì)于性別,本文用“1”表示女性,“0”表示男性。對(duì)于年齡,由于在某一年齡段內(nèi)用戶興趣愛(ài)好偏差不大,比如,13~17歲更傾向于看校園劇,因此,根據(jù)年齡分段如表1所示。將年齡分段之后,考慮到不同年齡段間的差異程度各不相同,比如,年齡段一與年齡段二的差異要遠(yuǎn)小于年齡段一與年齡段六的差異,因此本文通過(guò)順序編碼的方式將各個(gè)年齡段數(shù)值化,這樣,在反應(yīng)不同年齡段的差異的同時(shí),也可降低因編碼方式對(duì)相似度計(jì)算產(chǎn)生的影響。
表1 年齡數(shù)值化表
1.3.2 用戶屬性相似度
用戶x與用戶y的屬性相似度計(jì)算如公式(15)所示:
其中,xage表示用戶x的年齡,yage表示用戶y的年齡,xsex表示用戶x的性別,ysex表示用戶y的性別,λ表示權(quán)衡因子,用來(lái)調(diào)節(jié)性別和年齡的比例。
根據(jù)相似度將目標(biāo)用戶劃分到相應(yīng)的社區(qū)簇內(nèi),通過(guò)公式(10)計(jì)算出目標(biāo)用戶與所在社區(qū)簇中其他用戶的相似度,并選出其鄰居用戶。通過(guò)公式(13)計(jì)算出用戶的專家信任度,并按照一定比例選出專家用戶。通過(guò)目標(biāo)用戶所在社區(qū)簇中的相似用戶以及專家用戶共同為該用戶進(jìn)行評(píng)分預(yù)測(cè)。改進(jìn)后的評(píng)分預(yù)測(cè)如公式(16)所示:
(16)
其中,Px,i表示用戶x對(duì)項(xiàng)目i的預(yù)測(cè)評(píng)分,TStrust(x1)表示第s個(gè)社區(qū)簇內(nèi)的專家的信任值,x1表示社區(qū)簇內(nèi)專家用戶,Rx1,i表示專家的評(píng)分,x2表示社區(qū)簇內(nèi)相似用戶,K表示用戶x的相似用戶數(shù)量。α、β是平衡因子,用來(lái)調(diào)節(jié)專家用戶與相似用戶的比例。
通過(guò)公式(16)可以看出評(píng)分預(yù)測(cè)的前提是用戶有過(guò)評(píng)分記錄,通過(guò)評(píng)分記錄可找出目標(biāo)用戶的相似用戶,對(duì)于冷啟動(dòng)用戶,公式(16)便不再適用。
在用戶不存在評(píng)分記錄或者評(píng)分記錄極少,無(wú)法通過(guò)評(píng)分推斷其興趣愛(ài)好的情況下,可以通過(guò)專家用戶為其推薦。專家用戶評(píng)分客觀,具有權(quán)威性,傳統(tǒng)的協(xié)同過(guò)濾推薦算法使用專家用戶為冷啟動(dòng)用戶進(jìn)行推薦,雖然可以有效地解決冷啟動(dòng)問(wèn)題,但是在個(gè)性化推薦方面有所欠缺[19]。本文采用用戶的自身屬性來(lái)解決傳統(tǒng)的推薦方法中個(gè)性化方面欠缺的問(wèn)題。將屬性相似用戶與專家用戶聯(lián)合起來(lái)產(chǎn)生推薦,能有效地彌補(bǔ)傳統(tǒng)算法中的不足。
冷啟動(dòng)用戶的評(píng)分預(yù)測(cè)方法如公式(17)所示:
px,i=
(17)
其中,k表示社區(qū)簇個(gè)數(shù),集合U為對(duì)項(xiàng)目i評(píng)過(guò)分的用戶集合。
基于以上對(duì)算法的改進(jìn),本文提出的CFRAET算法流程如下:
Step1根據(jù)2個(gè)用戶的評(píng)分時(shí)間以及項(xiàng)目的產(chǎn)生時(shí)間生成用戶隱偏好因子。
Step2根據(jù)用戶的評(píng)分矩陣計(jì)算出項(xiàng)目的冷門因子。
Step3根據(jù)用戶參與評(píng)分項(xiàng)目的時(shí)間,計(jì)算每個(gè)用戶的時(shí)間跨度因子,將時(shí)間跨度因子加入專家信任度的計(jì)算公式中,計(jì)算出每個(gè)用戶的專家信任度。
Step4將用戶隱偏好因子及項(xiàng)目冷門因子加入到相似度計(jì)算公式中,計(jì)算出用戶間的相似度。
Step5將目標(biāo)用戶依據(jù)相似度劃分到相應(yīng)的社區(qū)簇中。
Step6判斷用戶的評(píng)分?jǐn)?shù)量是否為冷啟動(dòng)用戶,即用戶對(duì)項(xiàng)目的評(píng)分?jǐn)?shù)目是否為0。若為冷啟動(dòng)用戶,此時(shí)跳轉(zhuǎn)到Step8進(jìn)行推薦,否則采用Step7進(jìn)行推薦。
Step7在目標(biāo)用戶所在社區(qū)簇中確定其鄰居用戶和專家用戶,通過(guò)二者共同為目標(biāo)用戶產(chǎn)生推薦。
Step8通過(guò)專家用戶與目標(biāo)用戶的屬性相似用戶進(jìn)行推薦。
CFRAET算法流程圖如圖1所示。
圖1 CFRAET算法流程圖
本文采用Grouplens工作組提供的MovieLens-100k公開(kāi)數(shù)據(jù)集來(lái)驗(yàn)證本文提出的算法CFRAET的有效性,該數(shù)據(jù)集包括943個(gè)用戶、1682部電影以及每位用戶對(duì)電影的評(píng)分?jǐn)?shù)據(jù),評(píng)分?jǐn)?shù)據(jù)采用五分制進(jìn)行評(píng)分,共計(jì)10萬(wàn)條[20]。在進(jìn)行實(shí)驗(yàn)之前,將實(shí)驗(yàn)數(shù)據(jù)集劃分為訓(xùn)練集和測(cè)試集2個(gè)部分,其中80%數(shù)據(jù)作為訓(xùn)練數(shù)據(jù)集,另外20%數(shù)據(jù)作為測(cè)試數(shù)據(jù)集。
實(shí)驗(yàn)所用環(huán)境為Windows10-64位操作系統(tǒng),16 GB內(nèi)存。算法由Python語(yǔ)言實(shí)現(xiàn),IDE為Pycharm。
2.2.1 基于預(yù)測(cè)的評(píng)分值進(jìn)行評(píng)估
基于模型預(yù)測(cè)值的評(píng)價(jià)是指通過(guò)比較模型預(yù)測(cè)值與實(shí)際評(píng)分值,以模型的準(zhǔn)確性為基礎(chǔ)的評(píng)價(jià)方法。本文采用平均絕對(duì)誤差MAE(Mean Absolute Error)測(cè)量預(yù)測(cè)評(píng)分與用戶的真實(shí)評(píng)分之間的平均絕對(duì)偏差。MAE值越小,推薦精度越高[21]。MAE計(jì)算方法如公式(18)所示:
(18)
2.2.2 根據(jù)推薦結(jié)果進(jìn)行評(píng)估
基于模型推薦結(jié)果的評(píng)估是一種通過(guò)將模型的推薦結(jié)果與用戶的實(shí)際選擇進(jìn)行比較來(lái)衡量模型有效性的方法。本文采用了準(zhǔn)確率Precision來(lái)衡量,Precision值越高,該模型推薦效果越好[22]。準(zhǔn)確率計(jì)算方法如公式(19)所示:
(19)
其中,R(x)表示對(duì)用戶x推薦的項(xiàng)目個(gè)數(shù),T(x)表示測(cè)試集合中用戶x的結(jié)果集合。R(x)∩T(x)表示正確推薦給用戶u的項(xiàng)目個(gè)數(shù)。
2.3.1 確定社區(qū)簇?cái)?shù)目
MovieLen數(shù)據(jù)集中所包含的電影類型如表2所示,共19種。從表2可以看出,有些電影類型是相似的,比如兒童類和卡通類,犯罪類、懸疑類和恐怖類,可以將喜歡這些類型的用戶劃分到一個(gè)社區(qū)簇中。經(jīng)過(guò)分析可以得出,社區(qū)簇個(gè)數(shù)k不會(huì)超過(guò)10個(gè),并且不會(huì)低于3個(gè)。因此本文從3~10依次取k的值,通過(guò)觀察不同的社區(qū)簇個(gè)數(shù)所對(duì)應(yīng)的MAE來(lái)確定k的值,實(shí)驗(yàn)結(jié)果如圖2所示。
表2 電影類型
圖2中u1~u5皆是將原數(shù)據(jù)集按照80%數(shù)據(jù)作為訓(xùn)練數(shù)據(jù)集,另20%數(shù)據(jù)作為測(cè)試數(shù)據(jù)集進(jìn)行分割得到的,它們各自有不相交的測(cè)試集。從圖2可知,當(dāng)社區(qū)簇k為8時(shí),對(duì)應(yīng)的MAE值最小,因此,確定k=8。
圖2 MAE隨社區(qū)簇個(gè)數(shù)變化圖
2.3.2 確定相似用戶數(shù)量
相似用戶對(duì)最終的評(píng)分預(yù)測(cè)起至關(guān)重要的作用,如果數(shù)量過(guò)小,則會(huì)喪失許多關(guān)鍵信息;反之,如果數(shù)量過(guò)多,則有可能將與用戶興趣相反的用戶考慮進(jìn)去,導(dǎo)致評(píng)分預(yù)測(cè)出現(xiàn)較大的誤差。因此本文分別將相似用戶的數(shù)量K取為5、10、15、20、25、30,通過(guò)觀察相應(yīng)數(shù)量對(duì)MAE的影響來(lái)決定相似用戶的數(shù)量,結(jié)果如圖3所示。當(dāng)相似用戶數(shù)量K取值為20時(shí),同時(shí)兼顧了較好的MAE值和Precision值,最終確定相似用戶數(shù)量K=20。
圖3 Precision與MAE隨相似用戶數(shù)變化圖
2.3.3 確定冷啟動(dòng)問(wèn)題相關(guān)參數(shù)
年齡和性別對(duì)用戶興趣愛(ài)好都有所影響,但其對(duì)興趣愛(ài)好的影響程度不同。因此,需要確定年齡和性別的權(quán)重平衡因子λ。對(duì)冷啟動(dòng)用戶進(jìn)行評(píng)分預(yù)測(cè)時(shí),專家用戶與屬性相似用戶所起的作用也不同。專家用戶評(píng)分客觀,但推薦結(jié)果缺乏個(gè)性化,屬性相似用戶則可以彌補(bǔ)個(gè)性化方面的不足,但二者權(quán)重不同,因此,需要確定出兩者的權(quán)重平衡因子θ。本文實(shí)驗(yàn)數(shù)據(jù)選用的是MovieLens-100k數(shù)據(jù)集,將數(shù)據(jù)集經(jīng)過(guò)8∶2隨機(jī)抽取3個(gè)等量子數(shù)據(jù)集。將λ和θ從0.1~0.9依次取值,比較本算法在不同λ和θ下的MAE值。經(jīng)過(guò)實(shí)驗(yàn)得出,當(dāng)λ=0.6,θ=0.7時(shí),算法的MAE最小,由此確定2個(gè)因子取值。
2.3.4 確定專家比例
根據(jù)巴萊特定律,即在任何一組東西中,最重要的只占其中小部分,約為20%,其余80%盡管是多數(shù),卻是次要的思想。本文專家用戶的比例選取將以20%為中心,從15%~25%中取值,同時(shí)評(píng)分預(yù)測(cè)中專家的權(quán)重系數(shù)α將從0.3逐步增加至0.7,不同參數(shù)所對(duì)應(yīng)的MAE的變化如圖4所示。
圖4 MAE隨專家比例變化圖
由圖4可知,當(dāng)社區(qū)簇中的專家比例為19%時(shí),算法對(duì)應(yīng)的MAE最小。在評(píng)分預(yù)測(cè)公式中,當(dāng)α取0.4,相似用戶所占比例β取0.6時(shí),算法的MAE最小,即用戶不僅會(huì)聽(tīng)取同社區(qū)簇專家,同時(shí)還會(huì)聽(tīng)取相似用戶的意見(jiàn)。綜上所述,α=0.4,β=0.6,γ=0.19。
2.4.1 對(duì)比實(shí)驗(yàn)
為驗(yàn)證本文創(chuàng)新點(diǎn)的有效性。本文將引入以下算法進(jìn)行對(duì)比試驗(yàn)。傳統(tǒng)的基于用戶的協(xié)同過(guò)濾推薦算法UCF、文獻(xiàn)[16]中的基于專家信任的協(xié)同過(guò)濾推薦算法EPT、文獻(xiàn)[15]中的UCCFRIET、綜合用戶特征及專家信任的協(xié)作過(guò)濾推薦算法UCECF[23]及一種帶偏置的專家信任推薦算法IBETA[24]進(jìn)行對(duì)比實(shí)驗(yàn)。
對(duì)比算法在不同相似用戶數(shù)目K下的MAE值如表3所示,MAE值變化情況如圖5所示。
表3 算法在不同相似用戶數(shù)目下的MAE值
圖5 算法在不同相似用戶下的MAE變化圖
對(duì)比算法在不同相似用戶數(shù)目K下的Precision值如表4所示,Precision值變化情況如圖6所示。
表4 算法在不同相似用戶數(shù)目下的準(zhǔn)確率
圖6 算法在不同相似用戶數(shù)下準(zhǔn)確率變化圖
經(jīng)實(shí)驗(yàn)驗(yàn)證,本文提出的算法CFRAET的MAE值最低且Precision值最高。如表3所示,當(dāng)K=5時(shí),本文算法的MAE值為0.702,小于其他對(duì)比算法;在表4中,當(dāng)K=5時(shí),本文方法Precision為0.318,高于其他對(duì)比算法,當(dāng)K取其他值時(shí),表3和表4也呈現(xiàn)相同結(jié)果。綜上,本文提出的結(jié)合專家信任的協(xié)同過(guò)濾推薦算法CFRAET在一定程度上均優(yōu)于傳統(tǒng)算法。
2.4.2 通用性證明實(shí)驗(yàn)
為驗(yàn)證本文算法的通用性,本文引入了數(shù)據(jù)集Jester[25],該數(shù)據(jù)集包含了73421名用戶對(duì)100個(gè)笑話的評(píng)分。該數(shù)據(jù)集的稀疏度為44.2%。首先是確定實(shí)驗(yàn)參數(shù),在Jester數(shù)據(jù)集中,根據(jù)觀察不同參數(shù)所對(duì)應(yīng)的MAE來(lái)確定各個(gè)參數(shù),參數(shù)取值如表5所示。
表5 Jester數(shù)據(jù)集中各參數(shù)取值
將表5中的參數(shù)代入計(jì)算公式中,通過(guò)實(shí)驗(yàn)得出不同鄰居用戶下推薦的MAE和Precision值,結(jié)果如表6、表7所示。
表6 算法在不同相似用戶數(shù)目下的MAE值
表7 算法在不同相似用戶數(shù)目下的準(zhǔn)確率
通過(guò)表6和表7可以看出,本文提出的CFRAET算法在不同領(lǐng)域數(shù)據(jù)集中仍有良好的表現(xiàn)。如表6、表7所示,與傳統(tǒng)的基于用戶的協(xié)同過(guò)濾推薦算法相比較,本文算法MAE降低了11%,Precision提高了20%。綜上,驗(yàn)證了本文算法在不同數(shù)據(jù)集上的效果優(yōu)于其他算法的同時(shí),也驗(yàn)證了本文算法的通用性。
2.4.3 消融實(shí)驗(yàn)
本文通過(guò)消融實(shí)驗(yàn)進(jìn)一步驗(yàn)證本文所提出的創(chuàng)新點(diǎn)的效果。為方便對(duì)比實(shí)驗(yàn)結(jié)果,本文設(shè)計(jì)了以下算法:
1)相似度改進(jìn)有效驗(yàn)證算法IEVAS(Improved Effective Verification Algorithm of Similarity)。該算法在CFRAET的基礎(chǔ)上,將本文的改進(jìn)相似度部分去掉,相似度計(jì)算公式采用公式(1)進(jìn)行相似度的計(jì)算。
2)專家信任度改進(jìn)有效驗(yàn)證算法IEVAET(Improved Effective Verification Algorithm for Expert Trust)。該算法在CFRAET的基礎(chǔ)上,將本文對(duì)專家信任度改進(jìn)的部分去掉,采用公式(11)進(jìn)行專家信任度的計(jì)算。
3)冷啟動(dòng)改進(jìn)有效驗(yàn)證算法IEVACS(Improved Effective Verification Algorithm for Cold Start)。該算法在CFRAET的基礎(chǔ)上,將本文對(duì)冷啟動(dòng)用戶的預(yù)測(cè)方式去掉,只采用專家用戶為冷啟動(dòng)用戶進(jìn)行推薦。
消融實(shí)驗(yàn)的推薦結(jié)果如表8、表9所示。
表8 算法在不同相似用戶數(shù)目下的MAE值
表9 算法在不同相似用戶數(shù)目下的準(zhǔn)確率
通過(guò)表8和表9可以看出,本文算法從相似度、專家信任度及緩解冷啟動(dòng)3個(gè)方面提出的改進(jìn)均在一定程度上提高了算法的推薦精度,但3個(gè)方面的改進(jìn)對(duì)算法的影響各不相同。如表8和表9所示,當(dāng)K=5時(shí),在IEVAS、IEVAET、IEVACS這3個(gè)算法中,IEVAET算法的MAE最大,Precision值小,說(shuō)明專家信任度的改進(jìn)對(duì)CFRAET的推薦效果影響最大,其次是冷啟動(dòng)的改進(jìn),最后是相似度的改進(jìn)。當(dāng)K取其他值時(shí),表8和表9也呈現(xiàn)相同的結(jié)果。綜上,本文做出的3個(gè)方面的改進(jìn)均提高了算法的推薦精度。
本文針對(duì)傳統(tǒng)協(xié)同過(guò)濾推薦算法中相似度計(jì)算不準(zhǔn)確及冷啟動(dòng)問(wèn)題,提出了一種結(jié)合專家信任的協(xié)同過(guò)濾推薦算法。該算法在對(duì)相似度計(jì)算改進(jìn)中,一方面從用戶角度考慮,通過(guò)2個(gè)用戶對(duì)同一項(xiàng)目的評(píng)分時(shí)間所反應(yīng)出2個(gè)用戶的隱偏好對(duì)相似度計(jì)算進(jìn)行改進(jìn);另一方面從項(xiàng)目角度考慮,通過(guò)項(xiàng)目冷門因子對(duì)相似度計(jì)算進(jìn)行改進(jìn)。計(jì)算專家信任度時(shí),通過(guò)時(shí)間跨度因子對(duì)專家信任度計(jì)算公式進(jìn)行改進(jìn)。針對(duì)用戶的冷啟動(dòng)問(wèn)題,該算法利用社區(qū)簇中的專家用戶及屬性相似的用戶共同為目標(biāo)用戶產(chǎn)生推薦。通過(guò)實(shí)驗(yàn)證明,本文算法的平均絕對(duì)誤差及準(zhǔn)確率均優(yōu)于傳統(tǒng)算法。未來(lái)的工作將擴(kuò)大實(shí)驗(yàn)數(shù)據(jù)集進(jìn)一步驗(yàn)證算法的有效性,同時(shí)注重運(yùn)用深度學(xué)習(xí)技術(shù)更深層次挖掘用戶之間的隱偏好以及影響專家信任的因素。