










摘" 要:該文研究一種基于融合協同過濾和XGBoost的音樂推薦算法。首先,使用協同過濾算法計算用戶之間或物品之間的相似度,從而得到初始的推薦列表,作為召回集。考慮到協同過濾法產生的音樂推薦列表還存在計算量大、稀疏性等問題,導致推薦列表并沒有那么準確。接下來,對推薦列表中的每個項目進行特征提取和特征工程,并使用XGBoost算法對其進行預測,得到最終的推薦列表。該研究的貢獻在于提出一種新的音樂推送算法,融合協同過濾和XGBoost算法的優點,可以得到更精準的音樂推薦列表。
關鍵詞:XGBoost;協同過濾;推薦;應用;音樂推送
中圖分類號:TP391.41" " " 文獻標志碼:A" " " " " 文章編號:2095-2945(2024)11-0049-04
Abstract: This paper studies a music recommendation algorithm based on fusion collaborative filtering and XGBoost. First, we used a collaborative filtering algorithm to calculate the similarity between users or items and obtained an initial list of recommendations as a recall set. Considering that the music recommendation list generated by collaborative filtering method still has some problems such as large computation and sparsity, the recommendation list is not so accurate. Next, we carried out feature extraction and feature engineering for each item in the recommendation list, and used XGBoost algorithm to predict it and got the final recommendation list. The contribution of this study is to propose a new music recommendation algorithm, which combines the advantages of collaborative filtering and XGBoost algorithm to get more accurate music recommendation list.
Keywords: XGBoost; collaborative filtering; recommendation; application; music push
迄今,我國同時在線音樂活躍用戶數已超7.7億,網絡用戶大量增長,音樂作品與日俱增,音樂類別日益多元化[1]。在如此信息爆炸的時代,大量新領域下的推薦需求應運而生,音樂正是非常合適的個性化推薦產品。面對龐大的音樂庫和用戶多樣化的偏好,如何準確地向用戶推薦其可能感興趣的音樂仍然是一個具有挑戰性的問題。協同過濾算法通過分析用戶歷史行為和興趣推薦相似的音樂給用戶,但難以應對冷啟動和稀疏數據的挑戰。XGBoost是梯度下降樹的一種[2],具有處理大規模數據和高維特征的能力,并且能夠建模非線性關系。本文將這2種算法結合起來,可以利用協同過濾的協同性和XGBoost的學習能力,提高音樂推送的準確性和個性化程度。
1" 相關工作
1.1" 協同過濾
協同過濾推薦算法使用用戶和產品的交互行為[2],其主要思想是通過計算用戶之間的相似度,為用戶推薦與其興趣相似的其他用戶所喜歡的物品。協同過濾推薦算法可以分為基于用戶的協同過濾和基于物品的協同過濾2種。本篇論文使用基于用戶的協同過濾算法,下面介紹基于用戶的協同過濾算法在音樂推薦上的應用思想。
首先,計算聽眾之間的相似度,可以使用Jaccard相似度算法,然后為目標聽眾推薦與其相似度較高的其他聽眾所喜歡的歌曲。
將每個聽眾的興趣或偏好轉化為文本形式。對于每個聽眾,對其興趣或偏好進行分詞處理,并形成一個詞條集合。
根據詞條集合,計算每對用戶之間的Jaccard相似系數。具體而言,對于2個用戶A和B,計算公式為
式中:A和B分別表示2個用戶的詞條集合,A∩B表示A和B共同出現過的詞條集合,A∪B表示A和B出現過的所有不重復的詞條集合。
根據計算得到的Jaccard相似系數,可以構造一份用戶評分矩陣,其中每個元素表示對應用戶之間的相似度值。
Jaccard算法的計算過程簡單明確,其結果較為容易理解和解釋。相似度值的范圍在0到1之間,數值越大表示用戶之間的相似度越高。但是,只應用協同過濾為聽眾生成音樂推薦列表仍然存在數據稀疏和冷啟動等問題[3]。下面將介紹XGBoost算法,該算法可以通過特征提取和選擇,解決數據稀疏問題,將其與協同過濾相融合建立一個音樂推薦模型,可以提高模型的推薦準確度。
1.2" XGBoost算法原理
XGBoost針對梯度提升決策樹算法的改進型集成學習算法[4],基于歷史數據,XGBoost可以對不同的用戶做不同的預測。其可以根據用戶的歷史進行和項目目標的特征來預測用戶對其他項目的喜愛度,其特有的樹結構具備從原始變量中通過組合獲取隱含信息的特性[5]。
1.2.1" 特征提取
通過分析用戶歷史播放記錄、搜索記錄、收藏記錄等數據,提取出與用戶興趣相關的特征,例如歌曲的音樂風格、歌手信息、發布時間等。
1.2.2" 構建訓練集和測試集
將提取出的特征與用戶對歌曲的評分作為標簽,構建訓練集和測試集。
1.2.3" 訓練模型
使用XGBoost算法訓練模型,通過迭代和優化參數來提高預測準確率。
首先假設數據集T={(xi,yi)},其中xi∈Rm,yi∈Rm,i=1,2,3,4,…,n。xj為特征數據集,特征個數為m,yi為標簽值即目標變量,假定XGBoost模型中共有k棵樹,則模型可以簡單定義為
下面定義XGBoost的目標損失函數為
樹的復雜函數為
目標損失函數中的(t)對應的表達式為
將式(3)與式(4)代入式(2)中并加以改寫可以得到
令Gj=gi、Hj=hi,此時改寫后的目標函數(5)包含了T個獨立的單變量二次函數,如下
現要求得最優解ωk○,令ω=0可得目標函數表達式為
式中:T為葉子節點的個數,γ和λ為比重系數。
1.2.4" 預測結果
根據訓練后的模型,對未聽過的歌曲進行預測,得出推薦結果。
2" 融合協同過濾的XGBoost音樂推薦算法的模型構建
本模型使用協同過濾算法與XGBoost相融合的算法進行音樂個性化推薦。具體算法流程如圖1所示。
2.1" 階段1:基于協同過濾的內容召回
輸入:聽眾歷史交互記錄。
輸出:部分聽眾的召回集。
2.2" 階段2:XGBoost模型訓練
輸入:聽眾的歷史交互記錄,聽眾的特征數據,歌曲的特征數據。
輸出:XGBoost模型。
數據預處理:①提取聽眾交互數據,將存在點擊記錄的歌曲視為1,不存在點擊記錄的項目視為0。②對數據進行均衡化,使得已點擊歌曲與未點擊歌曲的比例為1∶1。
特征工程:提取聽眾的特征,并對其進行預處理,生成用戶—歌曲偏好的文件。
標簽定義:根據用戶對音樂的播放頻率,給音樂分別打上喜歡(2)、中立(1)、不喜歡(0)這3個標簽,再標簽這個字段加載到用戶—歌曲偏好文件。
模型訓練:使用XGBoost進行模型訓練,并對參數進行調整,得到最終的模型。
2.3" 階段3:產生推薦列表
輸入:部分聽眾的召回集,原始候選集,XGBoost模型。
輸出:推薦列表。
使用XGBoost模型對階段一中輸出的部分聽眾的召回集進行預測,將預測值比閾值大的歌曲作為推薦列表中的歌曲。
假若得到的推送歌曲列表少于20首歌曲,那么再從原始候選集中選用數據使用XGBoost進行預測,并將預測值比閾值大的歌曲項目作為推薦歌曲。
3" 融合協同過濾的XGBoost推送模型在音樂推送上的實驗
3.1" 數據集
本文的原始數據集分為2部分,第一部分收集于網上的一些在線音樂播放平臺,大約223首歌曲的基本信息。加工后的歌曲信息表包括的字段信息包括歌曲編號(song_id)、歌手(artist)、風格(style)、情感(emotion)、發布時間(publish_time)和時長(duratio)。
另一部分是用機器模擬生成的用戶—歌曲交互信息,模擬了30組數據,每一組代表一個用戶,每組60~80條記錄,一共2 132條。為了貼合實際,具有普適性進而得到有效的實驗結果,利用程序有意地控制了每組數據即每個用戶的播放次數的占比(play_count 1~80次(20%)、80~220次(30%)、220~300次(50%))。用戶歌曲交互信息表包含的字段信息包括用戶編號(user_id)、歌曲編號(song_id)、播放次數(play_count)。
得到原始的數據集之后,對用戶歌曲信息表的播放次數(play_count)字段進行處理,把其轉化為用戶對歌曲的評分,得到用戶—歌曲—評分的數據。用戶—歌曲交互信息表這部分數據集,用于基于用戶的協同過濾算法,將得到的結果從歌曲信息表中抽取出來,形成一個最初的歌曲推薦列表Au。
將歌曲基本信息表和處理后的用戶—歌曲交互信息表拼接到一起(通過歌曲編號song_id)得到完整的用戶—歌曲信息表,將其按4∶1的比例劃分為訓練集和測試集,分別用于XGBoost模型的訓練和測試。
3.2" 評價指標
本文選取精確率Precision作為XGBoost模型的評價指標,精確率越高,就表明改進融合后的推薦算法預測的音樂推薦列表可以更符合目標用戶的需求。
Precision 計算公式如下
式中:Bu為參與預測的所有音樂,Cu為預測的喜歡的音樂集合,Du為預測正確的中立的音樂,Eu為代表預測正確的不喜歡的音樂。
3.3" 實驗結果及分析
利用基于用戶的協同過濾推薦算法得到初始目標用戶的推薦列表Au,將Au輸入到訓練好的XGBoost模型進行預測,按喜好度的高低排序后得到給目標用戶的最終推薦列表Fu。
本實驗一共有30組數據,每組數據訓練后都會得到對應某個用戶特定的模型,利用Precision 計算公式,計算得到的實驗結果如圖2所示。
圖2中橫軸表示的是目標用戶的編號,縱軸表示的是XGBoost模型的準確度,圖中結果顯示,模型的準確率在0.25~0.60之間波動,計算其平均準確度為4.3。因為最終的精準度理論上由協同過濾算法疊加XGBoost,一般來說協同過濾算法推薦精準度可以達到40%~50%,再綜合XGBoost大約能達到60%~70%,可以說模型的準確度已經屬于比較高的存在。
4" 融合協同過濾的XGBoost在音樂推送上應用的創新
4.1" 增加推薦準確度
協同過濾算法和XGBoost算法的結合可以提高模型的準確性和泛化能力,特別是當數據集比較稠密時,可以大幅提高推薦準確度。
4.2" 解決數據稀疏問題
協同過濾算法在數據稀疏的情況下,推送效果會變得不穩定,而XGBoost算法可以通過音樂特征提取和選擇,解決數據稀疏問題。
4.3" 提高個性化推薦效果
協同過濾算法可以發現相似聽眾之間的隱藏關系,而XGBoost算法可以提供更準確的預測能力,從而實現更加個性化、更精準的音樂推送列表。
4.4" 提高實時推薦效率
XGBoost算法具有高效的預測能力,可以實現實時推薦,而協同過濾算法的訓練和預測時間較長,結合XGBoost算法可以提高算法的實時推薦效率。
總之,協同過濾算法與XGBoost算法結合應用于音樂推薦當中,提高音樂推薦算法的準確性和泛化能力,從而實現更好的個性化推薦效果,提高聽眾對音樂推薦界面音樂的滿意度。
5" 結論
現在,音樂對于越來越多的人來說已經成為不可或缺的部分,但隨著音樂庫的日益增加,對于許多的聽眾來說,短時間內找到自己真正想要的音樂很難[6]。融合協同過濾和XGBoost的模型在音樂推薦中取得了顯著的性能提升。
首先,與單一的協同過濾算法作為推薦算法相比,融合XGBoost的音樂推送模型能夠更準確地捕捉用戶的喜好和音樂的特征,提供更個性化的音樂推薦。通過對用戶的歷史行為數據和音樂的各種特征進行深入挖掘和學習,XGBoost模型能夠有效地捕捉到音樂的隱藏關聯,提升推薦的準確性和多樣性。
其次,融合協同過濾和XGBoost的模型能夠有效解決冷啟動和稀疏性問題。由于協同過濾算法在面對新用戶或新音樂時存在不足,通過融合XGBoost的模型可以利用音樂的內容特征和用戶的個人特征,彌補協同過濾的不足,提供更準確的推薦結果。
總之,融合協同過濾的XGBoost模型在音樂推薦中具有較高的推薦準確性和個性化程度,能夠有效解決傳統協同過濾算法的不足。然而,該模型的性能仍然與數據的質量和數量密切相關,因此,在實際應用中需要綜合考慮數據收集和模型優化的問題。
參考文獻:
[1] 張如琳,王海龍,柳林,等.音樂自動標注分類方法研究綜述[J].計算機科學與探索,2023,17(6):1225-1248.
[2] 陳雷.面向用戶交互行為挖掘的協同過濾推薦算法研究[D].合肥:合肥工業大學,2022.
[3] 陳塏冰.基于協同過濾的個性化推薦算法研究及應用[D].江門:五邑大學,2019.
[4] 謝冬青,周成驥.基于Bagging策略的XGBoost算法在商品購買預測中的應用[J].現代信息科技,2017,1(6):80-82.
[5] 鄧晴元.基于XGBoost算法的債券違約風險預測研究[J].投資與創業,2023,34(2):1-3.
[6] 讓冉,邢林林,張龍波,等.面向新領域的推薦系統綜述[J].智能計算機與應用,2023,13(5):1-8,17.