王炳祥


摘要:根據用戶的歷史聽歌記錄挖掘用戶的音樂偏好,給用戶做出滿意的個性化歌曲推薦具有重要意義。采用基于用戶的K最近鄰協同過濾推薦算法,以網易云1000多份熱門歌單作為測試數據集,蝦米音樂用戶聽歌行為數據,在PyCharm集成開發環境中進行實驗研究,并用三種方法對獲取的歌單推薦結果進行評估。
關鍵詞:歌曲推薦;協同過濾;KNN
中圖分類號:TN391 文獻標識碼:A 文章編號:1007-9416(2019)10-0126-02
0 引言
在上世紀初期的90年代,推薦系統的研究開始逐步盛行,它應用了認知診斷、信息搜索、機器學習等多領域的知識[1-2]。推薦系統即利用一定的技術和方法,通過已有的歷史記錄對用戶的興趣愛好建立模型,給用戶推薦滿足其個性化需求的物品和信息[2]。推薦系統可被看成一種信息過濾工具,因此,推薦算法也被叫做過濾算法。根據過濾算法的不同,推薦算法可以分為三類:基于內容的過濾、協同過濾、混合過濾。目前應用最為廣泛的是協同過濾的方式[3]。
對于音樂推薦而言,用戶的偏好通常隱式地通過對音樂產生的行為記錄和聆聽習慣來表達。另外,用戶無法全面而的且準確地對音樂進行定位。因此,根據用戶的歷史聽歌記錄挖掘用戶的音樂偏好,給用戶做出個性化推薦,提高推薦系統的準確度和用戶滿意度是很重要的一項研究目標。
1 協同推薦算法
協同過濾(CF,Collaborative Filtering)也叫做基于近鄰(NN,Nearest Neighbor)的推薦算法,主要思想是:利用已有用戶群的過去行為或意見來預測數據,根據與當前用戶/當前物品較為相似的近鄰數據來產生推薦結果。本文采用基于用戶的K最近鄰推薦(User-based KNN)協同推薦算法。算法基本原理如下:
首先,對輸入的評分數據集和當前用戶ID作為輸入,找出與當前用戶過去有相似偏好的其它用戶,這些用戶叫做對等用戶或者最近鄰;然后,對當前用戶沒有見過的每個產品p,利用用戶的近鄰對產品p的評分進行預測;最后,選擇所有產品評分最高的TopN個產品推薦給當前用戶。
通過下式計算用戶u對歌曲i的喜愛程度:
其中N(i)表示對歌曲/單i有過行為的用戶集合,wuv是用戶u和用戶v之間的相似度,rvi表示用戶v對歌曲/單i的打分。
算法輸入是一個“用戶-物品”評分矩陣,輸出數據一般有兩類:當前用戶對物品喜歡和不喜歡程度的預測值和n項的推薦物品列表。
2 數據集獲取
任何機器學習算法解決問題,首先需要考慮的就是數據從何而來。在歌曲推薦算法中首先要考慮歌單數據的來源問題。
2.1 測試數據集
本研究中,采用傳參動態密碼的高級加密標準AES(AES, Advanced Encryption Standard)算法爬取了網易云1000多份熱門歌單作為測試數據集。爬蟲主體是利用requst獲取html內容,用BeautifulSoup提取有用數據。
2.2 數據預處理
對數據進行預處理,將歌單數據轉化成推薦系統格式數據。主流的Python推薦系統框架,其評分基礎數據格式為user item rating timestamp,主要抽取歌單id和歌曲流行度,同時保存好歌單id到歌單名的映射字典文件。
2.3 歌曲推薦數據
利用scrpy_redis分布式爬蟲,爬取蝦米音樂用戶聽歌行為數據,最終得到了大概6萬多條真實的未脫敏用戶播放數據。
要完成推薦,需要得到每個用戶對每首歌的一個評價矩陣。因此,需要從中摘取出用戶id、歌曲名和評分(播放次數越多,評分越高),然后做成excel表格,再用pandas轉換成數據框格式進行讀取。
3 實驗研究
3.1 實驗設計
本次實驗是在PyCharm集成開發環境中進行的,所使用的主要庫為Surprise(Simple Python Recommendation System Engine)。首先對整理好的用戶評分矩陣整理成excel表,然后用pandas函數轉化成數據框格式進行讀取,載入自己的數據集并進行手動5折交叉驗證。用基于用戶的協同過濾算訓練模型,計算相似度(采用內置的皮爾森相似度),然后調用Surprise庫并用KNNWithMeans算法對數據集進行實驗。
3.2 實驗分析
首先,導入數據集readersurprise庫算法,然后用pd.reader_ excel讀取用戶評分矩陣并將其轉化成推薦格式,接著載入數據集并進行模型訓練,最后生成用戶推薦列表。推薦結果如圖1所示。
然后對數據集用KNNWithMeans算法進行實驗評估,結果分別如圖2所示。
評估標準均方根誤差RMSE和標準平均絕對誤差MAE,理論上這兩個值是越小越好。
4 結語
本文提出了基于標簽的個性化音樂推薦和基于用戶特征的個性化音樂推薦的方法,在推薦性能上有了一定的改進,但仍存在需要進一步改善的地方。比如,當音樂的數據量越來越大,音樂的平臺越來越多的時候,對用戶信息的提取和利用應該更加完善,因此對于音樂推薦可以更多的考慮深度學習訓練音樂特征,進一步改進音樂推薦效果。
參考文獻
[1] 高鳳麗,孫連山.個性化推薦系統概述[J].技術與市場,2015,22(2):78-79.
[2] 朱天宇,黃振亞,陳恩紅,等.基于認知診斷的個性化試題推薦方法[J].計算機學報,2017(1):176-191.
[3] 冷亞軍,陸青,梁昌勇.協同過濾推薦技術綜述[J].模式識別與人工智能,2014,27(8):720-734.