董云薪,林 耿
(1.福建農(nóng)林大學計算機與信息學院,福建 福州 350002;2.閩江學院數(shù)學與數(shù)據(jù)科學學院(軟件學院),福建 福州 350108)
隨著信息技術的快速發(fā)展與廣泛應用,信息資源量呈螺旋式增長。當前信息傳播方式相較于過去更加多元化,人們可以通過手機、電視、電腦、書籍等方式來獲取信息,且隨著互聯(lián)網(wǎng)傳播技術的快速發(fā)展,人們也可以更加快捷地獲取信息,使得信息更具有時效性,但與此同時也使得“信息過載”問題的產(chǎn)生[1]?!靶畔⑦^載”問題是人們獲取大量信息的同時,依靠自身能力無法從大量信息中及時有效的提煉出真正所需的信息[2]。因此,研究學者們提出了“推薦系統(tǒng)”來應對這一問題,“推薦系統(tǒng)”可以幫助用戶在大量信息中及時地提煉出用戶所需信息,為用戶節(jié)省信息檢索時間,幫助用戶提高對于信息的使用效率[3]。
推薦系統(tǒng)主要依托于推薦算法,其中協(xié)同過濾算法是應用最為廣泛的推薦算法[4]。目前大多數(shù)推薦算法主要是以提高算法精度為目的,而忽略了算法的多樣性。為了提高算法精度,推薦結果往往會集中于一小部分的熱門頭部產(chǎn)品,而缺乏對于大部分尾部產(chǎn)品的推薦[5]。從用戶角度出發(fā),若推薦算法單純以提高算法精度為目的,推薦結果絕大部分將會為常見的熱門產(chǎn)品,而這類產(chǎn)品用戶通常已經(jīng)表達過喜好了,再為用戶推薦這類產(chǎn)品,可能無法滿足用戶對于推薦系統(tǒng)多樣性的需求[6]。從商戶角度出發(fā),推薦系統(tǒng)的多樣性偏低,使得大部分尾部產(chǎn)品缺乏推薦,商家無法提高商品的總銷售額[7]。因此,提高推薦算法的多樣性,幫助尾部產(chǎn)品獲得有效推薦,應成為今后推薦算法的關注焦點之一。
推薦算法多樣性有著許多方向的研究,其中如何平衡算法精度和算法多樣性的關系,是研究的重要方向之一。算法精度和算法多樣性是相互對立的,在提高算法多樣性的同時,算法精度會相對降低,提高算法多樣性則意味著要犧牲一定的算法精度。因此,如何在提高算法多樣性的同時又確保算法具有較高精確度是一個重點研究方向。
針對此問題,本文提出一種融合長尾系數(shù)的混合電影推薦算法,利用混合協(xié)同過濾推薦算法來提高算法精度,然后通過用戶觀影行為來計算電影項目的長尾系數(shù),用以改進預測評分公式,以此來提高推薦算法的多樣性。
對于推薦算法多樣性不足的問題,許多學者從不同研究角度提出了改進。文[8-9]主要是通過緩解長尾問題的角度出發(fā)來對算法進行改進。秦婧等提出一種關于長尾問題的推薦算法,首先在深度學習的基礎上構建一個推薦系統(tǒng)中長尾物品的推薦框架,其次在該推薦框架中的推薦算法層,計算推薦物品中被頻繁推薦的熱門頭部物品和未被頻繁推薦的冷門長尾物品,然后用冷門的長尾物品替換被頻繁推薦的熱門頭部物品來達到推薦系統(tǒng)中指定的長尾比例的闕值,達到緩解長尾問題的目的,從而進一步提高推薦結果的多樣性[8]。鄧明通等提出一種基于用戶偏好和動態(tài)興趣的多樣性推薦方法,先根據(jù)用戶歷史行為數(shù)據(jù)得到用戶的偏好數(shù)據(jù),結合時間函數(shù)因子調整原始用戶項目評分,然后結合受長尾分布影響的項目疲勞因子,最后利用聚類函數(shù)為新用戶尋找最為信任的近鄰用戶,通過解決冷啟動和長尾問題,提高算法的多樣性[9]。
文[10-13]通過研究用戶潛在行為來提高算法多樣性。李衛(wèi)疆等提出了一種多樣化推薦算法,通過挖掘用戶群間的潛在興趣,來對用戶項目中未評分的項目進行預測評分,將含有用戶潛在興趣的用戶評分矩陣進行奇異值分解,在保證算法精確率的同時,提高了算法的多樣性[10]。黃繼婷等提出一種融合偏好度與網(wǎng)絡結構的推薦算法。先根據(jù)用戶的歷史觀影行為得到用戶的偏好度,再將用戶偏好度與基于二部圖隨機游走推薦算法相融合,得到含有用戶偏好度的初始項目推薦列表,再根據(jù)用戶標簽挖掘用戶的潛在喜好,得到含有用戶潛在喜好的項目推薦列表,最后將兩個推薦列表相結合,為用戶進行最終項目推薦,提高算法多樣性[11]。Nima Joorabloo等提出了一種基于概率圖譜的推薦系統(tǒng),先通過對用戶進行調查研究等,得到用戶的偏好,再將研究所得的用戶偏好融入基于概率圖的推薦系統(tǒng)中,用以提高算法的多樣性[12]。田維安等提出了基于相似用戶好奇心的多樣性推薦方法,通過計算用戶的異常評分值,來計算用戶的好奇心評分,將所得到的好奇心評分融入用戶項目評分中,用以提高推薦算法的多樣性[13]。
文[14-16]通過將項目信息融入推薦算法,用以提高算法多樣性。Tommaso Di Noia等提出一種自適應多屬性的多樣化推薦系統(tǒng),首先通過項目屬性來計算項目多樣性,然后利用項目多樣性重新排列TOP-N推薦結果項目列表,提高推薦結果的多樣性[14]。Anupriya Gogna等提出了一種基于單階段優(yōu)化的解決方案,在協(xié)同過濾的矩陣分解模型中,通過挖掘用戶潛在信息作為算法多樣性的約束條件[15]。葉錫君等提出一種基于項目類別的協(xié)同過濾推薦算法多樣性研究,在基于項目的協(xié)同過濾推薦算法的基礎上,利用項目類別信息來構建項目類別貢獻函數(shù),用以改進預測評分公式[16]。
以上這些研究通過研究長尾問題、用戶潛在行為、項目信息等來提高算法多樣性,沒有充分考慮到用戶潛在行為與長尾問題之間的聯(lián)系對推薦結果的影響。本文提出融合長尾系數(shù)的混合電影推薦算法,首先通過用戶的原始評分行為來計算電影項目的長尾系數(shù)。然后在基于項目的協(xié)同過濾算法基礎上融入長尾系數(shù)因子,改進預測評分公式來計算項目的預測評分,用以填充項目的評分數(shù)據(jù)。最后,將填充過后的項目評分應用于基于用戶的協(xié)同過濾算法上,為用戶進行推薦。
協(xié)同過濾算法中包含有基于用戶的協(xié)同過濾算法(user-CF)以及基于項目的協(xié)同過濾算法(item-CF)。主要是通過用戶對項目的評分來計算用戶間或項目間的相似度,再計算用戶未評分項目的預測評分,最后根據(jù)預測評分結果為目標用戶推薦評分前N項的商品[19]。
2.1.1 評分矩陣
在協(xié)同過濾算法中,構建用戶評分矩陣是計算未評分項目與用戶間或項目間相似度的一個重要步驟,評分矩陣R公式為
(1)
其中,rmn表示用戶m對于項目n的評分。
2.1.2 用戶/項目間相似度
用戶或項目之間相似度計算是推薦算法中極其重要的步驟,相似度計算對于最終的推薦結果起著決定性作用。相似度是通過用戶對項目的評分來進行計算的。
用戶間的相似度sim(u,v)的計算公式為
(2)
項目間的相似度sim(u,v)的計算公式為
(3)
2.1.3 預測評分
預測評分是通過用戶或項目間的相似度,以及目標用戶的近鄰用戶,來計算數(shù)據(jù)集中未被用戶評分項目的預測評分,預測評分P′的公式為
(4)
長尾問題是指推薦系統(tǒng)在為用戶進行推薦時,為了追求推薦算法精確度,往往會忽略對于尾部產(chǎn)品的推薦,為用戶集中推薦熱門的一小部分頭部產(chǎn)品,因此造成推薦結果缺乏多樣性。目前推薦系統(tǒng)中存在著長尾問題,如在MovieLens1M數(shù)據(jù)集中存在近200部電影作品無人觀看與評分的現(xiàn)象[17]。
因此針對長尾問題,文[18]提出一種HEF方法用于描述長尾分布現(xiàn)象,HEF長尾分布函數(shù)公式為
(5)
其中,x為項目被評價次數(shù),λ和pj為常數(shù),C為常數(shù)。
文[19]對式(5)進行比對實驗,經(jīng)實驗得當n=2時,該長尾函數(shù)公式達到最優(yōu),則長尾分布最優(yōu)公式為
P(x)=p1e-λ1x+p2e-λ2x+C,
(6)
將優(yōu)化后的公式映射在[0,1]之間,作為長尾系數(shù),緩解長尾問題,提高尾部產(chǎn)品推薦率,因此長尾系數(shù)公式為
(7)
其中,θi(x)i表示項目i的長尾系數(shù),xi表示項目i的被評分次數(shù)。
本文提出的融合長尾系數(shù)的混合電影推薦算法,首先通過計算項目的頻繁項集,結合長尾系數(shù)計算公式得到各項目的長尾系數(shù),用以改進預測評分公式,以此來提高推薦算法的多樣性。然后通過基于項目的協(xié)同過濾算法計算預測評分,用以填充原始數(shù)據(jù),緩解原始數(shù)據(jù)存在的數(shù)據(jù)稀疏問題。最后通過基于用戶的協(xié)同過濾算法得到推薦結果為用戶進行推薦。
融合長尾系數(shù)的混合電影推薦算法具體步驟如下:
輸入:原始評分數(shù)據(jù)列表
輸出:用戶推薦列表
1)將原始評分數(shù)據(jù)集處理為項目-用戶評分矩陣
(8)
2)使用式(3)計算電影項目間相似度sim(i,j);
3)計算各電影項目的被評價次數(shù)xi;
4)使用式(7)改進項目預測評分公式
(9)
5)將填充過后的項目評分數(shù)據(jù)用于基于用戶的協(xié)同過濾算法上;
6)根據(jù)上一步所得推薦結果為用戶進行推薦。
本實驗的推薦系統(tǒng)的評價指標采用準確率(precision)和召回率(recall),以及綜合指標F來度量推薦算法精確度。用多樣性(diversity)來度量推薦系統(tǒng)的多樣性。
準確率又稱查準率,是表示推薦給用戶的項目中用戶感興趣的概率,準確率公式為
(10)
其中,Ru表示為用戶推薦的電影項目,Tu表示數(shù)據(jù)集中用戶喜愛的電影項目。
召回率又稱查全率,表示推薦列表中的商品,推薦系統(tǒng)所推薦的商品為用戶所喜歡商品的概率,召回率公式為
(11)
準確率與召回率是一對相反指標。二者為此消彼長關系,在推薦系統(tǒng)中準確率會隨著推薦列表長度的增加而增加,召回率反之。因此將準確率和召回率兩個指標相結合起來,構建一個綜合指標F,可以更為全面地表示算法精度的高低,算法精度的綜合指標F值公式為
(12)
多樣性表示推薦列表中所推薦的商品種類占總商品總類的概率,多樣性公式為[8]
(13)
其中,N表示推薦給用戶的商品總數(shù)。
3.2.1 實驗數(shù)據(jù)集
本次實驗基于MovieLens100K數(shù)據(jù)集與MovieLens1M數(shù)據(jù)集。MovieLens100K數(shù)據(jù)集共有943名用戶對1 682部電影進行評分,共計10萬余條評分。MovieLens1M數(shù)據(jù)集共有6 040名用戶對3 883部電影進行評分,共計100萬余條評分。電影評分從1~5分不等,取整數(shù)。分數(shù)越高表示用戶對該電影越喜愛。本次實驗采取80%數(shù)據(jù)集作為訓練集,20%數(shù)據(jù)集作為測試集。
3.2.2 算法精度
在推薦系統(tǒng)中,設目標用戶鄰居數(shù)L=50,推薦電影數(shù)目n以5為單位逐步遞增。在不同的電影推薦數(shù)量n下,文[4]所提及的基于用戶的協(xié)同過濾算法和基于用戶的協(xié)同過濾算法同本文算法(LTHCF)的算法精度綜合指標F值(F-Measure)以及算法多樣性指標在ML100K數(shù)據(jù)集上進行比對。
電影推薦數(shù)目n對算法F值的影響如圖1所示。
圖1 電影推薦數(shù)量n對F值的影響Fig.1 The effect of movie recommended number n on the value of F
由圖1可知,本文所提算法LTHCF的算法精度綜合指標F值在推薦數(shù)量大于25時,算法的F值會高于UserCF和ItemCF推薦算法,且之后一直保持上升趨勢,而傳統(tǒng)算法在推薦數(shù)量大于25時,F(xiàn)值呈現(xiàn)下降趨勢,之后保持平穩(wěn)。說明本文所提算法LTHCF較UserCF和ItemCF推薦算法,可以更好地應用于大型數(shù)據(jù)集上,且能夠保持較高的算法精度。
3.2.3 算法多樣性
在確保算法精度的情況下,將本文所提算法LTHCF同文[8]所提及的FLTI推薦算法及協(xié)同去噪自動編碼(CDAE)算法,文[20]所提及的基于奇異值分解(SVD)算法,文[4]所提及的基于用戶的協(xié)同過濾算法及基于項目的協(xié)同過濾算法進行算法多樣性的比對實驗。同時為保證推薦算法結果的可信度,對比算法的多樣性實驗將基于文[8]的MovieLens1M數(shù)據(jù)集。
電影推薦數(shù)量n對算法多樣性的影響如圖2所示。
圖2 電影推薦數(shù)量n對多樣性的影響Fig.2 The effect of movie recommended number n on the diversity
由圖2可知,本文所提算法LTHCF的多樣性一直優(yōu)于FLTI、SVD、CDAE、UserCF、ItemCF推薦算法,說明本文所提算法LTHCF較這5種推薦算法具有更好的算法多樣性。
在確保算法多樣性會優(yōu)于其他對比算法多樣性的情況下,將本文算法應用于具有不同數(shù)據(jù)稀疏度的數(shù)據(jù)集上進行對比,數(shù)據(jù)稀疏度是用以表示數(shù)據(jù)集中數(shù)據(jù)缺失的程度。以此來研究算法適用的數(shù)據(jù)集。將本文算法應用于MovieLens100K數(shù)據(jù)集與MovieLens1M數(shù)據(jù)集上進行比對,其中MovieLens100K數(shù)據(jù)集稀疏度約為93%,MovieLens1M數(shù)據(jù)集稀疏度約為96%。
電影推薦數(shù)量n對不同數(shù)據(jù)集算法多樣性的影響如圖3所示。
圖3 電影推薦數(shù)量n對不同數(shù)據(jù)集多樣性的影響Fig.3 The effect of movie recommended number n on the diversity of different data sets
電影推薦數(shù)量n對LTHCF算法較傳統(tǒng)的UserCF算法所提高的算法多樣性百分比的影響如圖4所示。
圖4 電影推薦數(shù)量n對不同數(shù)據(jù)集提高算法多樣性百分比的影響Fig.4 The effect of movie recommended number n on improving diversity percentage of different data sets
可以看出相較于MovieLens1M數(shù)據(jù)集,本文算法LTHCF在MovieLens100K數(shù)據(jù)集上提高多樣性的效果更好。這可能是因為MovieLens1M數(shù)據(jù)集的稀疏度更高,使得多樣性算法的實驗效果減弱,當算法所應用數(shù)據(jù)集的稀疏度較小時,算法可以更大幅度地提升推薦結果的多樣性。
綜合以上實驗結果,本文所提算法LTHCF在確保算法精度的前提下,可以有效提高推薦算法的多樣性,使得推薦系統(tǒng)可以具有更高的推薦質量。此外,數(shù)據(jù)集的原始稀疏度越低,越有利于本文算法提高推薦系統(tǒng)的算法多樣性。
實驗結果表明本文算法在保證算法精確度前提下,可以有效提高推薦算法的多樣性,在一定程度上提高了推薦系統(tǒng)的推薦質量,當數(shù)據(jù)集的稀疏度較低時,可以更大幅度地提高算法多樣性。在未來的研究中,將考慮在本文算法的基礎上,通過引入用戶評分等間接數(shù)據(jù)來緩解數(shù)據(jù)集的數(shù)據(jù)稀疏問題,讓多樣性算法可以更好地得到應用,同時融合時間衰減函數(shù)進一步提高算法多樣性,將時間因子融入用戶評分中,充分考慮用戶評分的時效性,使推薦結果更具可信度。