馬夢馨, 王國中
(上海工程技術(shù)大學(xué) 電子電氣工程學(xué)院, 上海 201620)
隨著信息技術(shù)和互聯(lián)網(wǎng)技術(shù)的發(fā)展,互聯(lián)網(wǎng)提供的平臺和數(shù)據(jù)越來越多,而不同的人興趣愛好截然不同,越來越難以從大量的信息中找到自身感興趣的信息,信息也越來越難展示給可能對其感興趣的用戶,推薦系統(tǒng)應(yīng)運而生。推薦系統(tǒng)本質(zhì)上是在用戶需求不明確的情況下,從海量信息中為用戶尋找有用信息的技術(shù)手段。經(jīng)過二十多年的發(fā)展,推薦系統(tǒng)被廣泛應(yīng)用于電子商務(wù)平臺、新聞媒體領(lǐng)域以及廣告的個性化推薦等。
目前市面上比較常用的推薦算法有協(xié)同過濾推薦算法(Collaborative Filtering Recommendation,CF),其中包括基于用戶的協(xié)同過濾(User Based CF)和基于物品的協(xié)同過濾(Item Based CF),基于內(nèi)容的推薦算法(Content-Based Recommendation,CB)和混合推薦算法(Hybrid Recommendation,HR)等。
協(xié)同過濾推薦算法在一般情況下表現(xiàn)良好,但是在有新用戶或新物品加入時,由于沒有歷史數(shù)據(jù),所以無法進行推薦,存在冷啟動和數(shù)據(jù)稀疏性問題。Liu等人提出在傳統(tǒng)矩陣分解模型的基礎(chǔ)上,通過整合多關(guān)系社交網(wǎng)絡(luò)的用戶偏好,獲得信任和信任功能矩陣,有效緩解了數(shù)據(jù)稀疏性問題[1];Yan等人提出了將Jaccard相似性計算方法用于基于多層感知機的電影推薦模型,解決數(shù)據(jù)稀疏性問題[2];苑等人根據(jù)社交活動提出一種新的用戶相似度計算方法來提高推薦精度[3];過等人改進了奇異值分解(SVD)算法和二分K-均值聚類算法,解決協(xié)同過濾算法稀疏性較大和擴展性較差的問題[4]。
基于內(nèi)容的推薦算法不存在冷啟動問題,但是存在提取特征困難、無法挖掘用戶的潛在興趣等缺點。王等人將項目粒度化,用戶信息生成用戶粒度序列來提取特征,提高推薦精度[5]。
混合推薦算法能根據(jù)不同的方式將多種算法相結(jié)合,揚長避短,提高推薦精度,解決冷啟動和數(shù)據(jù)稀疏等問題。劉等人將不同用戶對于不同物品的個性化行為特征指數(shù)引入到相似度的計算中,動態(tài)計算權(quán)重,提高混合推薦算法的推薦效果[6];Fan等人采用分類和聚類算法來挖掘項目和用戶的歷史數(shù)據(jù),改進混合推薦算法,解決電子商務(wù)推薦系統(tǒng)的問題[7];李等人考慮了用戶評分尺度及用戶活躍度對物品相似性的影響,動態(tài)生成權(quán)重因子,提高推薦精度[8];隨著深度學(xué)習(xí)的發(fā)展,田等人提出了一種基于隱狄利克雷分布(LDA)與卷積神經(jīng)網(wǎng)絡(luò)(CNN)的概率矩陣分解推薦模型(LCPMF),獲取深層項目特征,提高推薦精度[9]。
本文在傳統(tǒng)的混合推薦模型的基礎(chǔ)上,引入物品屬性的權(quán)重,改進了相似性計算方法,將協(xié)同過濾推薦算法與基于內(nèi)容的推薦算法動態(tài)結(jié)合,解決冷啟動和數(shù)據(jù)稀疏性問題,提高推薦精度。
定義推薦系統(tǒng)中U={u1,u2,…,um}為所有m個用戶的集合,I={i1,i2,…,in}為所有n個物品的集合,兩個集合組成了一個M×N的矩陣,此矩陣為用戶-物品評分矩陣。見表1,矩陣中rui為用戶u對物品i的評分,若rui為0,則說明用戶對該物品沒有評分,評分值越高說明用戶對該物品越感興趣。
表1 用戶-物品評分矩陣
推薦算法中,常用的計算方法有歐氏距離、余弦相似度和修正的余弦相似度等,使用場景各不相同。
歐氏距離是衡量同一空間下兩個點,度量的是兩個點的絕對差異,適用于分析用戶的能力模型,定義如式(1):
(1)
余弦相似度度量的是兩個向量之間的夾角,其在度量文本相似度、用戶相似度、物品相似度時較為常用。定義如式(2):
(2)
修正的余弦相似度是將數(shù)據(jù)中心化后再求余弦相似度,定義如式(3):
(3)
一般來說,熱門物品會被用戶喜歡的可能性大,但并不能說明用戶的興趣相同,熱門物品對計算用戶的相似性貢獻不大,兩個用戶對冷門物品采取過同樣的行為更能說明其興趣度相同,二者更為相似,因此引入懲罰因子θi懲罰用戶u1、u2共同興趣列表中熱門物品對其相似度的影響,θi的公式定義如式(4):
(4)
其中,N(i)表示對物品i有過評分的用戶集合。
引入懲罰因子后的相似度為計算公式(5):
(5)
基于內(nèi)容的推薦算法是通過抽取物品本身的特征信息,形成關(guān)鍵詞向量,然后與用戶喜好特征向量進行相似度計算,將物品推薦給用戶,通常用于文本推薦。
把一個物品看作一個文檔,定義所有的文檔集合為D={d1,d2,…,dt},文檔中的關(guān)鍵詞集合定義為T={t1,t2,…,ts},最終需要用一個向量表示一個文檔,定義di=(ω1,i,ω2,i,…,ωs,i)為物品i的關(guān)鍵詞向量,其中ωni表示第n個詞在文檔i中的權(quán)重,數(shù)值越大表示越重要。定義好之后通常用詞頻-逆文檔頻率(TF-IDF)來表示文檔,其定義如式(6):
(6)
其中,TF(tk,di)表示第k個詞在文檔i中出現(xiàn)的次數(shù),nk是所有文檔中包含第k個詞的文檔數(shù)量,最終第k個詞在文檔i中的權(quán)重如式(7)所示:
(7)
得到文檔的特征向量權(quán)重之后,使用余弦相似度,得到文檔之間的相似度,相似度定義如式(8):
(8)
其中,Ti,j表示兩文檔之間共有的關(guān)鍵詞。
通常協(xié)同過濾推薦算法效果優(yōu)于基于內(nèi)容的推薦算法,但是當新的用戶或者物品加入時,系統(tǒng)就無法很好的進行推薦,且當用戶物品矩陣極度稀疏時,計算出來的物品相似度可信度也不高,而基于內(nèi)容的推薦算法能在一定程度上緩解物品冷啟動問題,并且基于內(nèi)容的推薦算法只考慮物品的屬性,與用戶的評價行為無關(guān),能緩解數(shù)據(jù)稀疏性問題,所以將協(xié)同過濾算法中的相似性計算與物品屬性相結(jié)合能緩解冷啟動和數(shù)據(jù)稀疏性問題。
本文引入λ將兩種相似性進行線性組合,由上文分析可知,當用戶-物品矩陣極度稀疏時,使用基于內(nèi)容的推薦算法要優(yōu)于協(xié)同過濾推薦算法,所以定義λ的公式如式(9):
(9)
其中,Ui、Uj表示對物品i和物品j評分的用戶數(shù);Ui∩Uj表示對物品i和物品j共同評分的用戶數(shù);Ui∪Uj表示物品i和物品j一共被多少用戶評分。引入λ之后,將相似度計算公式進行線性組合,如式(10)所示:
simitem(i,j)=λsimitemcf(i,j)+(1-λ)simitemcb(i,j)
(10)
由公式(10)可知,當存在冷啟動問題或者用戶-物品矩陣稀疏時,根據(jù)物品屬性特征進行相似度計算的比重大;當數(shù)據(jù)稠密時,基于物品的協(xié)同過濾要優(yōu)于基于內(nèi)容的推薦,所以相似度計算時所占比重較大。這種線性結(jié)合的方式改善了推薦系統(tǒng)中的冷啟動和數(shù)據(jù)稀疏性問題。
將混合的相似性計算方法引入到預(yù)測公式,得到用戶u對物品i的評分預(yù)測公式(11):
(11)
其中,Mi為物品i的最近鄰。
以上方法有效緩解了物品冷啟動和數(shù)據(jù)稀疏性問題,但當新用戶加入時,因為沒有其歷史行為記錄,依然存在用戶冷啟動問題,只能根據(jù)用戶自身的特征,為用戶進行推薦。
影響用戶喜好的特征主要有性別、年齡、職業(yè)、所在區(qū)域等信息,本文據(jù)此組成用戶的內(nèi)容向量,則用戶u的特征集合為Cu={sex,age,occ,zip},因為歐氏距離度量的是空間中兩個點的絕對差異,所以本文使用歐氏距離,即公式(1)來計算用戶之間的相似性。
冷啟動用戶的預(yù)測公式(12)為:
(12)
其中,Nu表示用戶u的最近鄰。
為了解決數(shù)據(jù)稀疏性和冷啟動問題,本文結(jié)合物品屬性,將基于物品的協(xié)同過濾和基于內(nèi)容推薦的相似性度量方法進行動態(tài)結(jié)合,形成一種新的相似性度量方法,解決物品冷啟動和數(shù)據(jù)稀疏性問題,并且通過計算用戶屬性來解決用戶冷啟動問題。具體推薦過程如下:
Step1判斷目標用戶是否是冷啟動用戶,是則跳到Step2,不是則跳到Step3;
Step2冷啟動用戶的相似性計算,之后預(yù)測評分;
Step3非冷啟動用戶的相似性計算,評分預(yù)測;
Step4完成Top-N推薦。
為了驗證本文算法的有效性,使用MovieLens 1M數(shù)據(jù)集,該數(shù)據(jù)集包含6 040個用戶對3 900部電影的1 000 209條評分記錄,數(shù)據(jù)稀疏度達95.75%。將數(shù)據(jù)集按照8:2劃分為訓(xùn)練集和測試集,數(shù)據(jù)集中用戶的屬性包括了用戶的ID、性別、年齡、職業(yè)ID和郵編等字段,電影的屬性有電影ID、電影名、電影年份和電影風(fēng)格等。
推薦系統(tǒng)中常用的評價標準有平均絕對誤差(MAE)、均方根誤差(RMSE)、準確率(Precision)和F值等,本實驗采用MAE作為度量標準,其定義為式(13):
(13)
其中,pi,j表示用戶u對物品i的預(yù)測評分;ru,i表示用戶u對物品i的實際評分;n為數(shù)據(jù)集中記錄評分的個數(shù)。
MAE計算的是真實值與預(yù)測值之間的差異,數(shù)值越小說明準確性越高。
通過實驗測得本文算法在不同N的取值下的絕對誤差,見表2。由表2可知,N取值在[10,60]范圍內(nèi),精確性逐漸升高。
表2 算法在不同N的取值下的平均絕對誤差
3.3.1 算法推薦精準度比較
為了驗證本文算法的優(yōu)化效果,本文選取改進的基于物品的協(xié)同過濾、基于內(nèi)容的推薦算法與本算法進行對比實驗,分別設(shè)置不同最近鄰值測試MAE值的大小,實驗結(jié)果如圖1所示。可以看出本文提出的推薦算法無論N取何值,效果都遠大于基于物品的協(xié)同過濾和基于內(nèi)容的推薦。
圖1 推薦準確度對比
3.3.2 算法緩解數(shù)據(jù)稀疏性能力的比較
為了測試本文算法解決數(shù)據(jù)稀疏性問題的能力,本實驗的最近鄰數(shù)確定為60,并且在數(shù)據(jù)集中隨機刪除部分數(shù)據(jù),改變評分矩陣的稀疏性再次進行對比實驗,測試算法效果,實驗結(jié)果如圖2所示。
圖2 數(shù)據(jù)稀疏性對比
由圖2可知基于內(nèi)容的推薦算法在數(shù)據(jù)極度稀疏情況下算法效果要優(yōu)于協(xié)同過濾推薦算法,而本文提出的算法在數(shù)據(jù)稀疏的情況下,效果要明顯優(yōu)于其它兩種算法,有效緩解了數(shù)據(jù)稀疏性的問題。
3.3.3 算法緩解冷啟動能力的比較
本實驗用來驗證算法解決冷啟動問題的能力,在測試集中抽取100個物品作為新物品,100個用戶作為新用戶,將訓(xùn)練集中對應(yīng)的100個物品和用戶的評分記錄置為0,使用新的訓(xùn)練集和測試集進行實驗。本實驗將基于內(nèi)容的推薦算法作為對比,結(jié)果如圖3所示。
圖3 冷啟動問題對比
由圖3可知,不管是用戶冷啟動還是物品冷啟動,本文算法的精確性都遠高于基于物品的協(xié)同過濾算法,實驗表明,本算法能有效緩解冷啟動問題。
本文對傳統(tǒng)的混合推薦算法進行了優(yōu)化,結(jié)合物品屬性特征權(quán)重改進了相似度度量方法,并根據(jù)用戶-物品矩陣稀疏性的差異,自適應(yīng)的調(diào)整不同算法的相似性計算方法所占的比重,極大地提高了推薦精度。實驗結(jié)果表明該方法顯著提高了推薦準確度的同時,也有效緩解了數(shù)據(jù)稀疏性和冷啟動問題。不足之處在于本混合推薦算法計算量大,復(fù)雜度高。