華澤,葉雨航
(蘇州科技大學(xué)電子與信息工程學(xué)院,蘇州215009)
信息以爆炸方式迅速增長(zhǎng)即給人們帶來(lái)了便利,其中不乏很多有益信息被無(wú)用信息覆蓋掉。對(duì)用戶(hù)來(lái)說(shuō),如何從如此大量的信息中找到自己喜愛(ài)的信息,作為網(wǎng)絡(luò)服務(wù)內(nèi)容的提供方,怎樣讓網(wǎng)絡(luò)服務(wù)信息內(nèi)容更好呈現(xiàn)到用戶(hù)面前,讓用戶(hù)喜歡這些內(nèi)容,是一件較為困難的事情。為了彌補(bǔ)這一領(lǐng)域的空缺,很多公司開(kāi)始開(kāi)發(fā)推薦系統(tǒng),推薦系統(tǒng)將會(huì)結(jié)合用戶(hù)的喜好,去網(wǎng)絡(luò)服務(wù)中尋找那些符合用戶(hù)喜好的信息,將他們呈現(xiàn)給用戶(hù)。搜索引擎的出現(xiàn),能讓用戶(hù)能夠根據(jù)關(guān)鍵字來(lái)搜尋自己喜歡的內(nèi)容。然而,用戶(hù)的知識(shí)是有限的,如果用戶(hù)喜歡的東西但之前沒(méi)有接觸過(guò)的話(huà),用戶(hù)也無(wú)法輸入這樣的關(guān)鍵詞,因此搜索引擎對(duì)于這種情況也就無(wú)能為力了。為了解決用戶(hù)喜歡但他喜歡的東西可能不在用戶(hù)的知識(shí)范圍之內(nèi)這個(gè)問(wèn)題,推薦系統(tǒng)應(yīng)運(yùn)而生。
智能協(xié)同過(guò)濾算法的思路是根據(jù)用戶(hù)提供的評(píng)價(jià)信息計(jì)算目標(biāo)用戶(hù)或項(xiàng)目之間的相似度,并利用相似類(lèi)比法確定最近的用戶(hù)組或項(xiàng)目組,從最近的用戶(hù)組或項(xiàng)目組中的評(píng)分情況預(yù)測(cè)目標(biāo)用戶(hù)的評(píng)分情況。協(xié)同過(guò)濾算法分為:基于用戶(hù)和基于項(xiàng)目?jī)煞N模式。
基于用戶(hù)協(xié)同過(guò)濾算法提出分析不同用戶(hù)的項(xiàng)目評(píng)價(jià)信息,計(jì)算所有用戶(hù)間的相似度,根據(jù)用戶(hù)相似度選擇與當(dāng)前用戶(hù)最相似的m個(gè)近鄰居,從鄰居的用戶(hù)那里獲得目標(biāo)用戶(hù)未接觸過(guò)或未喜歡的項(xiàng)目的評(píng)分反饋,預(yù)測(cè)目標(biāo)用戶(hù)的喜愛(ài)程度。如表1用戶(hù)&歌曲表,如果用戶(hù)1喜歡歌曲A和C,用戶(hù)3也喜歡歌曲A和C,然后我們就猜測(cè)用戶(hù)1、3之間的相似度很大,而用戶(hù)1沒(méi)有聽(tīng)過(guò)歌曲D,所以把用戶(hù)3喜歡的歌曲D推薦給用戶(hù)1,如圖1所示。
圖1 基于用戶(hù)的智能協(xié)同過(guò)濾
表1 用戶(hù)&歌曲
算法步驟如下:
(1)采集用戶(hù)與物品間的關(guān)聯(lián)數(shù)據(jù),記錄用戶(hù)歷史行為。對(duì)所選用戶(hù)收集的歷史業(yè)務(wù)數(shù)據(jù)進(jìn)行預(yù)處理后,生成用戶(hù)—評(píng)分矩陣,分?jǐn)?shù)可以被視為一個(gè)數(shù)值。不同的數(shù)值表示推薦用戶(hù)的不同偏好。
(2)用戶(hù)間相似度的計(jì)算。當(dāng)目標(biāo)用戶(hù)根據(jù)他們沒(méi)有接觸的對(duì)象來(lái)預(yù)測(cè)時(shí),計(jì)算用戶(hù)之間的相似性,計(jì)算方法有余弦相似性、相關(guān)性相似性和修正的余弦相似性。
1)余弦相似性?;谟脩?hù)的協(xié)同過(guò)濾算法,首先要確定用戶(hù)向量,并確定目標(biāo)用戶(hù)在用戶(hù)向量中的興趣。假設(shè)兩個(gè)近鄰用戶(hù)Ui和Uj,他們的愛(ài)好向量為i和j,反映用戶(hù)之間相似度的計(jì)算如式(1)。
2)改進(jìn)的余弦相似性。每個(gè)用戶(hù)的評(píng)分機(jī)制不一樣,用戶(hù)的評(píng)分標(biāo)準(zhǔn)也有差別,有的用戶(hù)評(píng)分比較松弛,普遍給高分,有的用戶(hù)就相對(duì)比較嚴(yán)格,給的分?jǐn)?shù)就比較低,就有了改進(jìn)的余弦相似度,計(jì)算方法如式(2)。
3)相關(guān)相似性。與傳統(tǒng)的兩類(lèi)用戶(hù)的相似度相比,相關(guān)相似度的不同之處在于,它是基于兩個(gè)用戶(hù)對(duì)音樂(lè)供應(yīng)的聯(lián)合評(píng)價(jià),而用戶(hù)之間的相似度則是基于用戶(hù)共同評(píng)分來(lái)估計(jì)。計(jì)算方式如式(3)。
公式符號(hào)的含義與修正之后的余弦相同。
(3)使用協(xié)同過(guò)濾推薦算法創(chuàng)建音樂(lè)推薦列表。通過(guò)估計(jì)多種用戶(hù)之間的相似性,并用來(lái)確定最近的相鄰用戶(hù)之間的相似性,通過(guò)分析相鄰用戶(hù)是否對(duì)該項(xiàng)目感興趣來(lái)預(yù)測(cè)目標(biāo)用戶(hù)的興趣。具體公式如式(4)。
基于項(xiàng)目的推薦算法的基本思想是通過(guò)計(jì)算適合目標(biāo)用戶(hù)的項(xiàng)目之間的相似度來(lái)提出推薦方案。先是從推薦的產(chǎn)品中提取一些典型特征,通過(guò)用戶(hù)的歷史數(shù)據(jù)來(lái)顯示項(xiàng)目,并分析用戶(hù)興趣的優(yōu)先級(jí)。在達(dá)到前一階段后,為目標(biāo)用戶(hù)推薦最高相關(guān)度的產(chǎn)品組。如表2用戶(hù)&歌曲喜歡表,如果用戶(hù)1喜歡歌曲A和C,用戶(hù)3也喜歡歌曲A和C,所以推測(cè)歌曲A和C有很大的相似度,目標(biāo)用戶(hù)2喜歡歌曲A和B而不了解歌曲C時(shí),我們自動(dòng)將歌曲C推薦給用戶(hù)2,如圖2所示。
圖2 基于項(xiàng)目的協(xié)同過(guò)濾
表2 用戶(hù)&歌曲喜歡的關(guān)系
其主要步驟如下:
(1)分析用戶(hù)-物品評(píng)分矩陣。采集用戶(hù)與物品之間的關(guān)聯(lián)數(shù)據(jù),如瀏覽、購(gòu)買(mǎi)或者交易記錄等信息形成初始數(shù)據(jù)。
(2)計(jì)算項(xiàng)目間的相似性。依據(jù)用戶(hù)-物品評(píng)分?jǐn)?shù)據(jù)計(jì)算所有物品的相似度,對(duì)當(dāng)前用戶(hù)沒(méi)有瀏覽過(guò)的某個(gè)物品,選擇最相似的K個(gè)物品。基于相似度的項(xiàng)目協(xié)同過(guò)濾計(jì)算主要是基于對(duì)音樂(lè)相似度的評(píng)估,而不是基于對(duì)用戶(hù)相似度的估計(jì),它們可以分為三種不同的方式來(lái)實(shí)現(xiàn)相應(yīng)的相似度。
1)余弦相似性。設(shè)置物品向量,將所有用戶(hù)對(duì)物品Vi和Vj的評(píng)分記為向量i和j,余弦公式如式(5)。
2)修正后的余弦相似性公式如式(6)。
3)相關(guān)相似性。采用相關(guān)相似性的具體運(yùn)算過(guò)程如式(7)。
公式中的符號(hào)介紹同基于用戶(hù)協(xié)同過(guò)濾中的一致。
(3)生成推薦列表?;陧?xiàng)目的協(xié)同過(guò)濾算法不用去考慮用戶(hù)之間的關(guān)系,避免了用戶(hù)評(píng)價(jià)數(shù)據(jù)差異性問(wèn)題。項(xiàng)目之間的相似性比較穩(wěn)定,減少了離線(xiàn)計(jì)算中大量的相似工作,大大提高了推薦效率。但是很難提取視頻或音頻數(shù)據(jù)的特點(diǎn),所以它不能直接探索潛在目標(biāo)用戶(hù)的最?lèi)?ài),只能依靠前面的目標(biāo)用戶(hù)推薦的最?lèi)?ài)和內(nèi)容產(chǎn)生的推薦也有高重復(fù)率。兩者對(duì)比之下,基于用戶(hù)的協(xié)同過(guò)濾推薦算法更適合該系統(tǒng)的實(shí)現(xiàn)。
系統(tǒng)在用戶(hù)注冊(cè)后,對(duì)用戶(hù)的行為記錄進(jìn)行取樣。采集用戶(hù)下載、播放和收藏歌曲的行為信息數(shù)據(jù),分析形成用戶(hù)歌曲矩陣,再計(jì)算用戶(hù)相似度生成推薦列表,過(guò)程如圖3所示。
圖3 為用戶(hù)推薦歌曲流程
音樂(lè)推薦算法實(shí)現(xiàn)分為3個(gè)步驟:
(1)獲取用戶(hù)的播放、下載以及收藏記錄,分析數(shù)據(jù)形成用戶(hù)—歌曲評(píng)分矩陣;
(2)計(jì)算用戶(hù)的相似鄰居用戶(hù);
(3)從鄰居用戶(hù)集中選取相似最高的M個(gè)相似用戶(hù),將這M個(gè)用戶(hù)評(píng)分取均值作為當(dāng)前用戶(hù)的預(yù)測(cè)評(píng)分,選取最高的N首歌曲推薦給當(dāng)前用戶(hù),前提要當(dāng)前用戶(hù)沒(méi)有評(píng)分過(guò)該歌曲。
個(gè)性化推薦列表如圖4所示。
圖4 個(gè)性化推薦列表
其主要方法的實(shí)現(xiàn)也分為3個(gè)步驟:
(1)構(gòu)建用戶(hù)—歌曲評(píng)分矩陣的主要函數(shù):根據(jù)用戶(hù)的下載、收藏和播放次數(shù)。
(2)用戶(hù)相似性計(jì)算的主要函數(shù)。
(3)生成個(gè)性化推薦的主要函數(shù)。
系統(tǒng)運(yùn)行狀況良好,音樂(lè)網(wǎng)站引入個(gè)性化推薦系統(tǒng),可以幫助用戶(hù)在網(wǎng)站海量音樂(lè)中,尋找出他們感興趣的音樂(lè),能夠挖掘出網(wǎng)站中更多的音樂(lè)數(shù)據(jù)展現(xiàn)給用戶(hù),使得整個(gè)網(wǎng)站能夠被訪(fǎng)問(wèn)到數(shù)據(jù)的覆蓋面變得更為廣,一個(gè)音樂(lè)軟件可以準(zhǔn)確地推薦給用戶(hù)最喜歡的音樂(lè),人們對(duì)它的依賴(lài)度就會(huì)加深。
如今社會(huì)網(wǎng)絡(luò)上信息資源種類(lèi)越來(lái)越繁多,分類(lèi)也變得復(fù)雜,另外,面對(duì)龐大的數(shù)據(jù)資源,用戶(hù)的認(rèn)知和時(shí)間也是有限的,簡(jiǎn)單的引擎搜索已逐漸的難以滿(mǎn)足用戶(hù)對(duì)互聯(lián)網(wǎng)的需求。常用的淘寶、騰訊視頻、網(wǎng)易云音樂(lè)等App都引入了推薦系統(tǒng),根據(jù)用戶(hù)的行為歷史記錄,生成推薦清單。本文實(shí)現(xiàn)了基于協(xié)同過(guò)濾算法的個(gè)性化音樂(lè)推薦系統(tǒng),該系統(tǒng)可以為用戶(hù)生成音樂(lè)推薦清單,推薦系統(tǒng)中最常用的技術(shù)便是協(xié)同過(guò)濾算法,它查找與用戶(hù)或項(xiàng)目相似的群體,然后根據(jù)這些群體的歷史行為記錄產(chǎn)生推薦列表和推薦結(jié)果,從而使用戶(hù)可以感知使用過(guò)去未接觸過(guò)的音樂(lè),方便用戶(hù)選擇和欣賞自己喜歡的音樂(lè)。