彭余輝,張小雷,孫 剛
(阜陽師范大學計算機與信息工程學院,安徽阜陽 236037)
近年來,互聯網信息和電子音樂網站爆炸式增長,音樂資源異常非富,但各種音樂無法有效地整合,造成信息過載,使人們無法快速找到他們所喜歡的音樂。一個好的音樂推薦算法對于音樂網站尤為重要,它既給用戶帶來方便,也給音樂網站帶來了更多的利潤和流量。
傳統的音樂推薦算法是單一的基于內容的推薦或者是使用協同過濾推薦。根據文獻[1],基于內容的推薦本質是對于信息的檢索和過濾。協同過濾推薦算法分為基于用戶(User-CF-Based)和基于物品(Item-CF-Based)的協同過濾算法。User-CF-based 算法按照用戶之前對物品所作的行為來分析用戶的偏好并進行衡量和評分,計算用戶之間的相似度,并根據相似度將物品推薦給有相似偏好的用戶。Item-CF-Based算法根據用戶喜歡的物品,將與該物品相似的物品推薦給用戶。
為了改進傳統的推薦算法,提高協同過濾推薦算法的準確率和效率,文獻[2]提出了RC-DFM模型,經過評論和內容的加權融合,緩解了數據的稀疏性,增加了推薦的準確率,但是對于大型數據集來說,這種模型的效率會隨所需時間的增加而變低。文獻[3]針對冷啟動問題進行研究,根據用戶評分和項目屬性進行評分預測,并將推薦結果推薦給用戶,但未考慮新用戶因素。文獻[4]通過提取特征詞,使用特征標簽來代替物品本身,將多種標簽結合進行分析與融合以提高精確率。以上推薦算法遠遠無法滿足需求寬泛的用戶,在“長尾理論”的支持下,很多不受歡迎商品的銷售規(guī)模足以比擬受大眾歡迎的商品。文獻[5]在長尾理論的基礎上提出了item-CF-IIF算法,通過對熱門商品的懲罰以及對推薦物品排序優(yōu)化來增加推薦質量、準確率以及用戶的體驗程度。文獻[6]通過探索情緒標簽來構建情緒模型,并結合協同過濾產生推薦列表。文獻[7]利用分類和情境感知融合的方法對音樂偏好進行特權融合,降低推薦復雜度,提高了推薦的效率和質量。在文獻[8]中,將用戶-項目類別評分相似度和用戶-項目類別興趣相似度加權融合,有效地緩解了數據的稀疏性。文獻[9]根據用戶的滿意度改進余弦相似度計算方法,進行協同過濾推薦以得到滿意的推薦列表。文獻[10]將基于內容的推薦算法與基于用戶的協同過濾推薦算法進行混合,形成一種新的推薦算法,處理了物品在沒有評價的情況下同樣能被推薦給用戶,并且很明顯地增加了推薦結果的準確率,但缺少了一定的平衡。
基于傳統推薦算法的閃光點和不足,本文提出基于內容和協同過濾加權融合(MR_CCFI)的推薦算法,來分別得到基于用戶-內容和基于物品-內容融合的推薦算法,以提高推薦準確率。
MR_CCFI推薦算法的基本框架如圖1所示。通過基于內容和協同過濾加權融合的算法來進行內容-用戶、內容-物品加權融合的推薦,在數據集的影響下,不同推薦算法給用戶帶來的推薦效果是不同的。
圖1 MR_CCFI推薦算法流程
根據音樂內容的文本信息,這里使用詞頻-反文檔頻率(TF-IDF)的方式得到用戶偏好矩陣[11],設給定音樂的集合為L={L1,L2,L3,…,Ln},特征(關鍵)詞組為I={i1,i2,i3,…,im},Lj表示第j首音樂,詞頻公式為:
其中,f(i,j)是詞i在音樂j中所出現的次數,∑k∈j fk,j是音樂j中所有詞出現次數的總和,k∈j表示詞在音樂j中。反文檔頻率公式為:
其中,N指所有音樂的數量,n(i)指N中特征詞i出現過的音樂數量。
音樂j中特征詞i的組合TF-IDF權值計算為:
其中,PTF-IDF(i,j)表示第j首音樂中與特征詞i對應的詞。歸一化處理:
其中,Wji指第j首音樂第i個詞的歸一化處理,于是可得到用戶音樂偏好矩陣
1.2.1 基于User-CF的推薦算法
User-CF算法必須要先找到“相似的用戶”,再尋找“相似用戶所喜歡的物品”。這里首先使用余弦相似度:
第一步,構造一個歌曲到User的倒排表D,記錄用戶對哪些歌曲發(fā)生過動作。
第二步,依據倒排表D,構造一個用戶相似矩陣M,M指式(4)中的分子部分,在倒排表D中,對于每首歌曲i,設其相應的用戶為a、b。
第三步,在M中,更新對應位置的元素值,。依次掃描便能夠得到一切用戶之間不為0的M[a][b]值。
根據文獻[13],對式(4)改進,有
式(5)中分子的倒數部分用來懲罰用戶u和v的共同偏好列表中的受歡迎的音樂,減少熱門歌曲對用戶相似度的影響。用戶對歌曲的偏好公式為:
其中,P(u,j)指用戶u對歌曲j的喜歡程度,S(u,K)指與用戶u興趣最相近的前K個用戶,N(j)指用戶對歌曲j產生過行為歷史的集合,Wuv指用戶u、v之間的偏好相似度,Rvj指用戶對歌曲j的偏好評分矩陣(如果數據集為隱反饋數據集,那么當用戶對歌曲產生了行為,可使Rvj=E,E為單位矩陣)。
Item-CF推薦算法是通過興趣物品來尋找相似物品,將相似物品推薦給用戶。歌曲之間的相似度為:
其中,|N(h)|表示多個用戶都喜歡歌曲h的數目,分子則表示多個用戶都喜歡歌曲h、j的數目。懲罰熱門音樂后,相似度計算為:
式(8)降低了歌曲j的權重,減小了任何歌曲和熱門歌曲很相似的可能。
Item-CF推薦算法首先建立一個用戶到歌曲的倒排表E,得到用戶與歌曲之間的對應關系;其次通過倒排表E來構建同現矩陣,根據式(8)計算兩音樂之間的相似度,得到各音樂之間的相似度矩陣;最后計算用戶對于歌曲偏好程度。計算用戶對于歌曲的偏好程度的公式為:
其中,N(u)表示歌曲被用戶u喜歡的集合,S(h,K)指和歌曲h最相似的前K首歌曲的集合,Whj表示音樂h和音樂j的相似度,Ruj指用戶u對音樂j的偏好評分(如果數據集為隱反饋數據集,那么當用戶對歌曲產生了行為,可使Ruj=E,E為單位矩陣)。
MR_CCFI推薦算法偏好公式為
其中,β指用戶偏好矩陣的權重,(1-β)指協同過濾算法中用戶對歌曲的偏好權重。β值越小,說明用戶或物品之間偏好的相似對推薦的影響程度越大,隨著β值的增加,音樂內容對推薦的影響程度也在增加。取前K個值,得到Top-K列表,將其推薦給相應的用戶u。在用戶量不變的情況下:
(1)當音樂數據集較小時,使用Content-User的推薦算法更容易,且更加準確地使目標用戶獲得相應的Top-K推薦列表。
(2)當音樂數據集較大時,使用Content-Item 的推薦算法可以更精確地將Top-K推薦列表推薦給目標用戶。
通過設置數據集的大小來測試不同算法在給用戶進行推薦時的準確率。實驗數據所采用的數據源是網易云音樂網站2020年上半年的部分數據,選擇了一千多個歌單進行相應的數據獲取,包含用戶、音樂、歌單等信息,使用用戶的已聽歌曲記錄和評分記錄等進行實驗。為了提高數據挖掘的質量,需要對信息文本進行預處理,再以其中的80%作為訓練集(取其中的40%作為小數據集),另外20%作為最后的測試集。
(1)進行分類標注,即將爬取到的文本打標簽,生成標簽列表。
(2)分詞,去停用詞。通過jieba分詞庫將音樂內容文本進行分詞,并對其去停用詞,使用詞頻-逆文檔頻率(TF-IDF)的方式提取關鍵詞,進而得到用戶偏好矩陣Pu。
(3)實驗中主要選取數據維度信息為:音樂編號、音樂名、音樂發(fā)表時間、音樂類型等。
將MR_CCFI 算法與文獻[2]中用戶評分和物品屬性相融合的推薦算法(RC-DFM)、文獻[5]中item-CF-IIF 算法以及Content-Based算法進行對比實驗,觀察幾種算法在不同數據集上的推薦效果。
參數設置。在MR_CCFI 推薦算法中參數β的設置會影響到推薦結果的準確性,本次實驗中,設置K為10、15、20、25來分別檢測不同β值對應的平均絕對誤差(MAE),參數β∈(0,1),如圖2 所示。實驗結果表明,在數據集相同的情況下,MR_CCFI 算法中的權重因子β更偏重于協同過濾算法。由圖2可知,K固定時,當β=0.7 時,MAE 最小,故以下實驗參數β的值均設置為0.7。
圖2 相同K值下,不同β取值對應的MAE值
相似度計算。不一樣的相似度計算方法會對推薦結果產生影響,設置K為5、10、15、…、35,比較Cosine、User-content-Cosine和Item-content-Cosine計算方法的MAE,當數據集較大時,如圖3所示。由圖3可知,K不變時,Item-content算法中余弦計算方法得到的MAE值是最小的,即該算法的推薦效果最好。數據集相對較小時,User-Content算法的結果誤差較小,如圖4所示。本文使用的余弦相似度計算方法為當前主流計算方法,通過實驗表明,該相似度計算方法能夠很好地滿足用戶對推薦結果的需求。
圖3 大數據集下,相同K,不同算法的MAE值
圖4 小數據集下,相同K,不同算法的MAE值
MAE。在評分預測中,預測準確率大多使用MAE和均方根誤差(RMSE)計算結果,這里運用MAE,將本文算法與文獻[2]、[5]進行實驗對比,分析本文加權融合算法的有效性。MAE值越小,最終所得到的推薦準確率就越高。當數據集較大時,對比幾種推薦算法的MAE值,如圖5所示。由圖5可知,當K值相同時,基于User-Content的推薦算法和基于Item-Content的推薦算法這兩種推薦算法MAE值都最小,且當K為20時,Item-Content算法的MAE是最小的。當數據集較小時,User-Content算法更適合對用戶進行推薦,而RC-DFM算法在數據集較小的時候推薦效果會比較差,如圖6所示。
圖5 大數據集下不同算法的MAE值
圖6 小數據集下不同算法的MAE值
通過對音樂各方面內容和所用主流推薦算法進行分析,提出MR_CCFI推薦算法緩解數據的稀疏性并提高用戶對于其偏好音樂獲取的效率,經過對數據集的劃分來測試相同用戶在不同大小數據集下更適合于用戶的推薦算法。實驗結果表明,數據集較小的情況下,User-Content算法更適合對用戶進行推薦;數據集較大的情況下,Item-Content算法更適合對用戶進行推薦。在實際應用中,隨著大量音樂數據的上傳,這種MR_CCFI算法同樣適用。