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