黃杰 張?chǎng)螣睢堝\濤
摘要:在信息過(guò)載的時(shí)代,推薦系統(tǒng)應(yīng)運(yùn)而生。協(xié)同過(guò)濾推薦系統(tǒng)算法是應(yīng)用最成熟最廣泛的推薦技術(shù)。本文模擬電影推薦這一場(chǎng)景,應(yīng)用了協(xié)同過(guò)濾推薦系統(tǒng)下不同推薦算法,并將推薦質(zhì)量進(jìn)行對(duì)比得出一個(gè)相對(duì)客觀的實(shí)驗(yàn)結(jié)論。
關(guān)鍵詞:推薦系統(tǒng);協(xié)同過(guò)濾;個(gè)性化推薦
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1007-9416(2019)05-0136-01
0 引言
隨著信息技術(shù)和互聯(lián)網(wǎng)的發(fā)展,信息過(guò)載給用戶和生產(chǎn)者都帶來(lái)不小的挑戰(zhàn)。而推薦系統(tǒng)的產(chǎn)生正是為了應(yīng)對(duì)用戶需求不明確以及長(zhǎng)尾信息等問(wèn)題。推薦系統(tǒng)通過(guò)分析用戶的歷史行為給用戶的興趣建模,從而為用戶推薦滿足其興趣和需求的信息。如今,協(xié)同過(guò)濾推薦系統(tǒng)應(yīng)用到各類電商平臺(tái),如亞馬遜、京東商城等等。在電影推薦領(lǐng)域,Netflix公司是最為成功的公司之一,其應(yīng)用協(xié)同過(guò)濾推薦算法中基于物品的推薦算法。本文針對(duì)3種基于模型的協(xié)同過(guò)濾推薦算法,將其應(yīng)用在模擬的電影評(píng)分環(huán)境中,并對(duì)其進(jìn)行分析。其中包括:Slope One、SVD、SVD++。
1 協(xié)同過(guò)濾推薦算法
協(xié)同過(guò)濾的基本思想是,如果用戶在過(guò)去有著某種偏好,那么在未來(lái)也會(huì)有相似的偏好?;诖?,如果兩個(gè)用戶的偏好有大量重疊,那么可以在他們之間進(jìn)行項(xiàng)目的相互推薦。由于選擇感興趣的項(xiàng)目來(lái)自從大量集合中過(guò)濾出來(lái)的結(jié)果,而且用戶是在隱式地與其他人相互協(xié)作,因此這種技術(shù)稱為協(xié)同過(guò)濾。
目前,協(xié)同過(guò)濾推薦算法大致分類兩類:基于記憶的協(xié)同過(guò)濾算法和基于模型的協(xié)同過(guò)濾算法。其中基于記憶的協(xié)同過(guò)濾推薦算法又分為基于用戶的最近鄰?fù)扑]和基于物品的最近鄰?fù)扑]。
1.1 基于用戶的最近鄰?fù)扑]
通過(guò)對(duì)目標(biāo)用戶的歷史行為數(shù)據(jù)發(fā)現(xiàn)用戶對(duì)商品的喜好。然后,找出與目標(biāo)用戶過(guò)去有相似偏好的其他用戶,即尋找目標(biāo)用戶的最近鄰。針對(duì)目標(biāo)用戶沒(méi)有見(jiàn)過(guò)的項(xiàng)目i,利用其近鄰對(duì)i的評(píng)分計(jì)算預(yù)測(cè)值。若結(jié)果是積極的,則向目標(biāo)用戶進(jìn)行推薦。
1.2 基于物品的最近鄰?fù)扑]
通過(guò)不同用戶對(duì)不同物品的評(píng)分或其他行為(如加入心愿單,分享給他人,評(píng)價(jià)等)來(lái)量化物品間的關(guān)系,從而找到物品的最近鄰。若目標(biāo)用戶對(duì)物品i的態(tài)度為積極的,并且物品j是物品i的鄰居,那么,將物品j推薦給目標(biāo)用戶。在實(shí)踐中會(huì)將用戶對(duì)物品的態(tài)度量化,從而進(jìn)行更加精準(zhǔn)的推薦。
1.3 基于模型的推薦算法
基于模型的推薦方法首先會(huì)離線處理原始數(shù)據(jù),如利用某些降維技術(shù)。運(yùn)行時(shí),只需要預(yù)計(jì)算或“學(xué)習(xí)過(guò)”的模型就能預(yù)測(cè)。
2 電影推薦系統(tǒng)的推薦算法
在Netflix競(jìng)賽中,參賽隊(duì)伍使用基于模型的推薦算法能有效提高推薦系統(tǒng)的預(yù)測(cè)準(zhǔn)確率?;诖耍榻B三種常見(jiàn)的基于模型的推薦算法,并應(yīng)用于實(shí)驗(yàn)。實(shí)驗(yàn)數(shù)據(jù)是Netflix公司比賽的三萬(wàn)余條用戶對(duì)電影的評(píng)分。本文按照8:2的比例劃分訓(xùn)練集和測(cè)試集。以RMSE(均方根誤差)作為評(píng)價(jià)指標(biāo)。其中,RMSE值越小,則預(yù)測(cè)質(zhì)量越佳。
2.1 Slope One算法
算法思想:基于一種簡(jiǎn)單的線性回歸模型進(jìn)行預(yù)測(cè)。
算法原理:將用戶的評(píng)分之間的關(guān)系看作簡(jiǎn)單的線性關(guān)系:Y=X+b。
(1)根據(jù)評(píng)分矩陣計(jì)算兩兩項(xiàng)目之間的偏差;
(2)根據(jù)偏差數(shù)據(jù)為用戶未評(píng)分商品做出推薦列表。
2.2 SVD算法
算法思想:基于奇異值分解模型進(jìn)行預(yù)測(cè)。
算法原理:將龐大且稀疏的用戶評(píng)分矩陣?yán)肧VD算法映射到低維空間,然后計(jì)算低維空間中未評(píng)分項(xiàng)目與其他項(xiàng)目間的相似度,計(jì)算預(yù)測(cè)評(píng)分,然后將預(yù)測(cè)評(píng)分從高到低進(jìn)行排序,返回前N個(gè)項(xiàng)目對(duì)用戶進(jìn)行推薦。即通過(guò)壓縮矩陣,提取重要特征后進(jìn)行計(jì)算并推薦。比如,電影特征直觀而言可有驚悚片,喜劇片這種明顯的劃分。
2.3 SVD++算法
算法思想:SVD++算法是SVD算法的一種改進(jìn),同樣是基于奇異矩陣分解模型的一種算法。
算法原理:SVD++算法在SVD算法的基礎(chǔ)上引入隱式反饋,使用用戶的歷史瀏覽數(shù)據(jù)、用戶歷史評(píng)分?jǐn)?shù)據(jù)、等作為新的參數(shù)。計(jì)算用戶對(duì)未知項(xiàng)目的評(píng)分后,通過(guò)均方根誤差量化評(píng)分質(zhì)量,加入正則化參數(shù)的意義在于防止過(guò)擬合。
3 算法應(yīng)用結(jié)果
Slope One預(yù)測(cè)結(jié)果:RMSE: 0.835657411324? SVD預(yù)測(cè)結(jié)果:RMSE: 0.813470466441
SVD++預(yù)測(cè)結(jié)果:RMSE: 0.816237015507
4 結(jié)語(yǔ)
由于不同環(huán)境下運(yùn)行結(jié)果具有差異性,分別在多臺(tái)機(jī)器上進(jìn)行了測(cè)試。初步得出結(jié)論:SVD++算法推薦效果相對(duì)更加精確。Slope One算法運(yùn)行速度快,其理論上相對(duì)簡(jiǎn)單,沒(méi)有實(shí)現(xiàn)個(gè)性化的推薦;SVD和SVD++是一種相對(duì)基礎(chǔ)的算法,在此基礎(chǔ)上不斷進(jìn)行改進(jìn),如timeSVD++算法是一種考慮了時(shí)間感知的算法。在推薦系統(tǒng)方面,將各個(gè)方面的知識(shí)融會(huì)貫通,推薦系統(tǒng)會(huì)更加人性化、智能化。
參考文獻(xiàn)
[1] 王國(guó)霞,劉賀平.個(gè)性化推薦系統(tǒng)綜述[J].計(jì)算機(jī)工程與應(yīng)用,2012,48(7):66-76.
[2] 吳揚(yáng),林世平.基于正負(fù)反饋矩陣的SVD推薦模型[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2015,24(6):14-18.