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