(寶雞職業(yè)技術(shù)學(xué)院 學(xué)前教育教研室,寶雞 721000)
隨著互聯(lián)網(wǎng)的發(fā)展,信息超載[1]在人們的日常生活中越來(lái)越嚴(yán)重,信息超載的出現(xiàn)給生產(chǎn)和日常生活帶來(lái)了太多的不便[2]。例如,越來(lái)越多的音樂(lè)曲目增加了搜索優(yōu)選歌曲的難度,通常情況下,用戶會(huì)隨機(jī)聽(tīng)音樂(lè)播放器中已存在的音樂(lè),但是當(dāng)涉及到一些特殊場(chǎng)合時(shí),隨機(jī)模型可能無(wú)法滿足用戶的實(shí)際需求,這就需要特定的過(guò)濾算法,從海量的中國(guó)音樂(lè)數(shù)據(jù)庫(kù)歌曲中進(jìn)行提取,并為用戶推薦特殊的個(gè)人播放列表。
基于用戶的過(guò)濾和基于項(xiàng)目的過(guò)濾是傳統(tǒng)使用的推薦算法。在音樂(lè)大數(shù)據(jù)推薦過(guò)程中,基于用戶的過(guò)濾將用戶提供的歌曲的評(píng)分與同一首歌曲上其他用戶的評(píng)分進(jìn)行比較[3],并且根據(jù)與該用戶較高相似度的用戶的偏好來(lái)預(yù)測(cè)用戶喜歡的歌曲;基于用戶和基于項(xiàng)目的過(guò)濾識(shí)別具有相似性,但基于項(xiàng)目的是根據(jù)音樂(lè)本身來(lái)區(qū)分的,即按照音樂(lè)的相似性為用戶做出預(yù)測(cè),該方式前提是樂(lè)曲間相似度關(guān)系的建立,建立用戶/項(xiàng)目矩陣是這兩種技術(shù)中的主要原始數(shù)據(jù)資源,如果用戶或歌曲數(shù)量過(guò)多,同時(shí)出現(xiàn)嚴(yán)重的信息不足問(wèn)題,則這是一個(gè)嚴(yán)重的稀疏矩陣。可惜的是,這兩種技術(shù)在預(yù)測(cè)過(guò)程中并不能很好地解決嚴(yán)重的稀疏問(wèn)題。
協(xié)作過(guò)濾(Collaborative Filtering,CF)是通過(guò)收集來(lái)自其他類似用戶或項(xiàng)目的信息來(lái)自動(dòng)預(yù)測(cè)用戶的相關(guān)值的有效方法,該方法已被廣泛應(yīng)用于電子商務(wù)系統(tǒng)中,如亞馬遜網(wǎng)絡(luò),易趣網(wǎng)等。實(shí)踐證明,CF在推薦系統(tǒng)中取得了巨大的成功。國(guó)內(nèi)外有關(guān)CF推薦的相關(guān)工作很多。Zhou[4]等結(jié)合了基于用戶的方法和基于項(xiàng)目的方法,通過(guò)采用來(lái)自其他類似用戶和類似Web服務(wù)的歷史Web服務(wù)QoS數(shù)據(jù)來(lái)預(yù)測(cè)當(dāng)前用戶的服務(wù)質(zhì)量(QoS)值;Dutta[5]等將線性組合用于項(xiàng)目評(píng)分相似度和項(xiàng)目屬性相似度,以預(yù)測(cè)對(duì)目標(biāo)用戶的評(píng)分,但改文章缺乏足夠的實(shí)驗(yàn)支持其假設(shè);Sutheera等[6]提出了一種基于項(xiàng)目的協(xié)同過(guò)濾方法,該方法將項(xiàng)目的屬性相似度與評(píng)分矩陣相似度相結(jié)合。在音樂(lè)海量數(shù)據(jù)庫(kù)中為用戶推薦合適的音樂(lè)對(duì)象,由于在音樂(lè)推薦過(guò)程中的用戶/音樂(lè)矩陣比較稀疏,因此會(huì)造成信息量的不足,為此本文提出一種更為有效的用于音樂(lè)推薦,解決音樂(lè)大數(shù)據(jù)集推薦問(wèn)題的協(xié)同過(guò)濾算法。
本文所提出的協(xié)同過(guò)濾算法通過(guò)導(dǎo)入權(quán)重因子,將基于項(xiàng)目的方法與基于用戶的方法相結(jié)合。在實(shí)施過(guò)程中,經(jīng)過(guò)幾次實(shí)驗(yàn),通過(guò)改變不同影響因素來(lái)檢驗(yàn)不同預(yù)測(cè)方法的效率;并采取平均絕對(duì)誤差(MAE)方法來(lái)評(píng)估實(shí)驗(yàn)結(jié)果,MAE越低,證明該方法的效果越好。
基于用戶的協(xié)同過(guò)濾和基于項(xiàng)目的協(xié)同過(guò)濾是基于內(nèi)存過(guò)濾的兩種常用的協(xié)同方法,兩個(gè)方法的構(gòu)建過(guò)程圖,如圖1所示。

圖1 協(xié)作過(guò)濾方法構(gòu)建過(guò)程圖
如圖1所示,實(shí)施音樂(lè)推薦的一般協(xié)同過(guò)濾算法有3個(gè)主要步驟。首先,需要從原始數(shù)據(jù)集中獲得用戶音樂(lè)矩陣;其次,根據(jù)用戶音樂(lè)矩陣計(jì)算相似度矩陣,在基于用戶的協(xié)同過(guò)濾算法中,需要計(jì)算用戶之間的相似度,同樣,需要計(jì)算基于項(xiàng)目的過(guò)濾方法中音樂(lè)項(xiàng)目之間的相似度;最后,需要根據(jù)預(yù)測(cè)的評(píng)分值向用戶推薦音樂(lè)項(xiàng)目。這兩種算法的預(yù)測(cè)評(píng)分的計(jì)算方法是不同的,但共同目標(biāo)即是獲取準(zhǔn)確的結(jié)果,以下分別對(duì)各步驟進(jìn)行介紹[7-10]。
(1)獲取用戶音樂(lè)矩陣
從圖1中可以看出,第一步是獲取協(xié)同過(guò)濾算法中的用戶音樂(lè)矩陣。主要數(shù)據(jù)集由用戶信息和對(duì)應(yīng)的音樂(lè)信息組成,描述了用戶的偏好。R描述用戶音樂(lè)信息,由第一用戶評(píng)價(jià)的音樂(lè)的值存儲(chǔ)在矩陣R的第一行中,當(dāng)一些用戶不評(píng)價(jià)音樂(lè)片段時(shí),矩陣中相應(yīng)位置的值將為零。評(píng)分矩陣如表1所示。

表1 評(píng)分矩陣表
(2)計(jì)算相似矩陣
第二步是計(jì)算相似度矩陣。這意味著需要找出目標(biāo)用戶/音樂(lè)的鄰居用戶/音樂(lè)項(xiàng)目。該步主要區(qū)別基于用戶的方法和基于項(xiàng)目的方法,這個(gè)過(guò)程的本質(zhì)是計(jì)算兩個(gè)向量之間的相似性。Pearson相關(guān)性、余弦矢量相似性和調(diào)整余弦矢量相似性已經(jīng)被廣泛用于測(cè)量?jī)蓚€(gè)矢量之間的相似性。具體計(jì)算如式(1)所示。
Pearson相關(guān)性:
(1)
余弦相似性,如式(2)。
(2)
調(diào)整后的余弦相似度,如式(3)。
(3)
(3)獲取推薦結(jié)果
最后一步既獲取用戶的最終推薦結(jié)果,通過(guò)獲取的項(xiàng)目評(píng)級(jí)列表,并且推薦活躍用戶可能評(píng)價(jià)更高值的項(xiàng)目。同樣,有不同的技術(shù)可以預(yù)測(cè)與這兩種方法相關(guān)的評(píng)級(jí)值。
基于用戶的方案
在基于用戶的方法中,根據(jù)用戶的相似性預(yù)測(cè)評(píng)分,如下式(4)所示:
(4)

基于項(xiàng)目的方案
在基于項(xiàng)目的方法中,評(píng)分的預(yù)測(cè)與音樂(lè)項(xiàng)目的相似性有關(guān),計(jì)算式如下式(5)所示。
(5)

本文提出一種基于用戶和基于項(xiàng)目的共同協(xié)作算法,如式(6)為算法描述。
(6)


圖2 算法程序?qū)崿F(xiàn)圖
通過(guò)MATLAB分析及比較了本文所提出的算法以及傳統(tǒng)的基于用戶和基于項(xiàng)目的算法,從百度音樂(lè)網(wǎng)站獲取數(shù)據(jù),根據(jù)實(shí)時(shí)統(tǒng)計(jì)在某時(shí)刻該音樂(lè)網(wǎng)站數(shù)據(jù)集合包含2 231 093個(gè)獨(dú)立用戶,1 474 996條MSD曲目和145 384 582條播放記錄,在本文的研究中選取894個(gè)用戶和884首歌曲以及相應(yīng)的播放記錄作為所研究的數(shù)據(jù)集。假設(shè)播放次數(shù)代表了用戶對(duì)音樂(lè)作品的偏好,即如果用戶對(duì)于某一首歌曲相比其他歌曲播放更多次數(shù),則用戶更喜歡該音樂(lè),并假設(shè)任何人沒(méi)有播放的歌曲的評(píng)分值為零,轉(zhuǎn)換規(guī)則如表2所示。

表2 轉(zhuǎn)換規(guī)則表
獲取用戶音樂(lè)信息評(píng)分矩陣后,通過(guò)從原始數(shù)據(jù)集中隨機(jī)獲取訓(xùn)練集和測(cè)試集。然后通過(guò)使用這套訓(xùn)練集和測(cè)試集來(lái)進(jìn)行完成實(shí)驗(yàn)。在實(shí)驗(yàn)過(guò)程中,通過(guò)本文所提出的協(xié)作過(guò)濾算法和基于用戶及基于項(xiàng)目的過(guò)濾算法進(jìn)行預(yù)測(cè)結(jié)果,在計(jì)算用戶和音樂(lè)片段之間的相似度的過(guò)程中使用了調(diào)整后的余弦矢量相似度。
在以下的實(shí)驗(yàn)過(guò)程中采用平均絕對(duì)誤差(MAE)來(lái)評(píng)估預(yù)測(cè)的準(zhǔn)確性,MAE通過(guò)比較其預(yù)測(cè)值來(lái)評(píng)估預(yù)測(cè)的準(zhǔn)確性。MAE的值越小,預(yù)測(cè)算法越準(zhǔn)確。MAE的計(jì)算定義如下:
(7)
有幾個(gè)因素會(huì)影響預(yù)測(cè)的準(zhǔn)確性,例如不同的預(yù)測(cè)方法,預(yù)測(cè)過(guò)程中鄰居的數(shù)量以及數(shù)據(jù)集中測(cè)試數(shù)據(jù)的百分比。
(1)鄰居數(shù)量的影響結(jié)果
為了找到實(shí)驗(yàn)中鄰居數(shù)量的影響,將其他變量設(shè)置為常量。改變所有這些預(yù)測(cè)方法的鄰居數(shù)量,得到了如圖3所示的結(jié)果。
(2)測(cè)試數(shù)據(jù)的百分比影響結(jié)果
在實(shí)驗(yàn)過(guò)程中,將鄰居的數(shù)量設(shè)置為常量。并且選擇了測(cè)試數(shù)據(jù)的百分比作為變量,然后得到了所有三種方法的結(jié)果,如圖4所示。

圖3 三種方法的MAE隨著鄰居的增加而變化圖

圖4 三種方法的MAE隨著試驗(yàn)數(shù)據(jù)的百分比的增加而變化圖
本文提出一種用于音樂(lè)數(shù)據(jù)庫(kù)推薦的協(xié)同過(guò)濾算法,該算法將基于用戶的協(xié)同過(guò)濾方法和基于項(xiàng)目的協(xié)同過(guò)濾方法進(jìn)行結(jié)合,從理論上該方法可以通過(guò)導(dǎo)入權(quán)重因子參數(shù)來(lái)減少稀疏矩陣的負(fù)面影響。通過(guò)實(shí)驗(yàn)證明,該方法可以改進(jìn)推薦效果。通過(guò)結(jié)果分析,該方法的平均絕對(duì)誤差分別低于基于用戶的方法和基于項(xiàng)目的方法,表明預(yù)測(cè)評(píng)分的準(zhǔn)確性會(huì)提高。同時(shí),隨著鄰居數(shù)量的增加,平均絕對(duì)誤差得到優(yōu)化;隨著測(cè)試數(shù)據(jù)比例的增加而變化,MAE非單調(diào)下降;但是,當(dāng)百分比為25%時(shí),預(yù)測(cè)精度是最優(yōu)的。