黃浩
摘要:該文在傳統(tǒng)的基于奇異值矩陣分解模型(SVD)的基礎(chǔ)上提出一種非對稱的協(xié)同過濾算法,對電影的評分進行預測。并在Movielens數(shù)據(jù)集上實驗驗證,該算法在平均誤差方根(RMSE)上比SVD、SVD++的算法更優(yōu)。
關(guān)鍵詞:電影評分預測;SVD;RMSE;矩陣分解
中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2017)03-0079-02
1 研究背景
推薦系統(tǒng)現(xiàn)已廣泛應(yīng)用于很多領(lǐng)域,其中最典型并具有良好的發(fā)展和應(yīng)用前景的領(lǐng)域就是電子商務(wù)領(lǐng)域,比如亞馬遜(Amazon)、谷歌新聞(Google News)以及國內(nèi)的淘寶網(wǎng)等知名互聯(lián)網(wǎng)巨頭。一般來說,個性化推薦是根據(jù)用戶的特點或購買行為,向用戶推薦其感興趣的信息。但同時,隨著電子商務(wù)規(guī)模的不斷擴大,商品個數(shù)和種類快速增長,用戶需要花費大量的時間才能找到自己想買的商品。這種瀏覽大量無關(guān)的信息和產(chǎn)品過程無疑會使淹沒在信息過載問題中的消費者不斷流失。為了解決所謂的“信息過載”問題,針對特定每一個用戶的個性化推薦系統(tǒng)應(yīng)景而生。特別是近幾年來,隨著學術(shù)界對推薦系統(tǒng)的研究熱度不斷攀升,已經(jīng)形成了一門相對獨立的學科。
1.1 基于電影評分預測的推薦算法
當今社會,人們把欣賞電影當成日常娛樂中一種不可或缺的方式。有很多電影的評分網(wǎng)站允許用戶根據(jù)其喜好程度對電影進行評分,比如IMDB,豆瓣以及一些提供在線觀看的網(wǎng)站。然而,對于某個用戶而言,并不是所有的電影都觀看并且評分了。對這些缺失的評分有很多算法對其進行預測,其中典型的有基于內(nèi)容的評分預測和協(xié)同過濾算法。
2 實驗數(shù)據(jù)集和評價指標
2.1 Movielens數(shù)據(jù)集
實驗使用Grouplens網(wǎng)站開放給用戶的電影評分數(shù)據(jù)集,其中Movielens 100K數(shù)據(jù)集包含943個用戶對1682部電影的10萬條評分記錄(評分范圍1-5分,每個用戶至少對20部電影進行了評分),此數(shù)據(jù)集的稀疏度為93.7%。本文采用其中ua.base和ua.test作為訓練集和測試集,即80%的數(shù)據(jù)作為訓練集,余下的20%的數(shù)據(jù)作為測試集,并以此對本文提出的推薦算法進行實驗。
2.2 評價指標
實際上,針對推薦算法性能優(yōu)劣的衡量方法有很多,如平均絕對誤差(MAE)、平均方根偏差(RMSE)、覆蓋率(COV)等。本文主要采用RMSE值作為算法優(yōu)劣的評價標準,即通過計算預測值與真實值的平均絕對誤差來判斷推薦算法的好壞,推薦精度的高低與RMSE值的大小成反比。其公式如下:
[RMSE=1Stest(u,i)∈Stest(rui-rui)2]
其中,Stest為測試集中有評分記錄的集合內(nèi)元素的計數(shù), [rui]為用戶u對電影i的預測評分,[rui]為測試集中用戶u對電影i的真實評分。
3 算法
3.1 基線預測算法
多數(shù)情況下,人們早已發(fā)現(xiàn)用戶對電影的評分往往具有很多與電影無關(guān)的因素,用戶有一些屬性和電影無關(guān),電影也有一些屬性和用戶無關(guān)。因此,一種將偏置項加入到推薦算法當中,并將其稱為基線預測算法。定義對一部電影評分的預測值為[rui],那么其公式為:
[rui=μ+bi+bu]
其中,[μ]表示所有評分的平均值;[bi]表示電影的偏移量,代表電影在接受評分時與用戶無關(guān)的因素;[bu]表示用戶的偏移量,代表用戶在評分中與電影無關(guān)的因素。
3.2 SVD算法
但基線預測無法針對用戶的潛在偏好進行評分預測,因人們對電影進行評分的時候極可能有一些偏好,如A用戶對科幻片比較感興趣,那么該用戶在對其他具有科幻特征的電影評分很可能偏高,而對非科幻片的潛在評分就很可能偏低。因此我們引入2個特征向量:[pu]和[qi]。其中[pu]表示用戶對不同風格的電影的偏好,[qi]表示不同風格的用戶對電影的偏好。那么,在基線預測的基礎(chǔ)上加入上述向量,對電影評分的預測值公式為:
[rui=μ+bi+bu+qTipu]
為了得到更為準確的特征向量值,通常采用隨機梯度下降法來訓練上述各參量,以防止過擬合。其更新公式分別為:
[bu←bu+α1?(eui-β1?bu)]
[bi←bi+α1?(eui-β1?bi)]
[qi←qi+α2?(euipu-β2?qi)]
[pu←pu+α2?(euiqi-β2?pu)]
其中,定義[eui]為每次迭代訓練中用戶u對電影i的預測評分與真實評分之差。
3.3 SVD++算法
在SVD算法的基礎(chǔ)上,Keron等人提出把隱式反饋信息融入到SVD算法中,形成了SVD++算法。算法使用R(u)表示被用戶評分的電影的集合, [yj]為隱主題的維度向量,其向量值與[pu]、[qi]的向量值一致,表示隱式反饋信息的聚類。那么,對用戶偏好建模的同時加入了用戶已評分電影的反饋來修正用戶在隱主題上的偏好。當然,此處的隱性反饋并沒有直觀地反映出來用戶對該電影的喜歡或厭惡程度, 而是僅僅表明該用戶隱性地對該電影進行了評分,表明用戶隱性的反饋不是隨機的,而是有一定目的的。使用該信息就能夠很大程度上提升系統(tǒng)的效果。那么,其對電影評分的預測值公式為:
[rui=μ+bi+bu+qTi(pu+R(u)-12j∈R(u)yj)]
其他參量的更新式保持不變,[yj]的更新式如下:
[yj←yj+α2?(eui?R(u)-12?qi-β2?qi)]
3.4 非對稱SVD算法
最后本文提出把用戶已看過或已瀏覽過(但未評分)的電影作為反饋信息融入到SVD++算法中,用[xj]表示。其對電影評分的預測值公式為:
[rui=μ+bi+bu+qTi?R(u)-12?j∈R(u)(ruj-buj)xj+yj]
[xj]的更新式為:
[xj←xj+α2?i,j∈R(u)eui?R(u)-12?qi(ruj-μ-buj)-β2?xj]
在公式中無[pu]參量,因此[pu]不用更新,其它參量的更新式保持不變。
4 實驗結(jié)果和分析
4.1 實驗結(jié)果
在Movielens數(shù)據(jù)集上進行實驗,我們選取不同的向量維度(用K表示),測試SVD、SVD++和非對稱SVD算法的RMSE值。結(jié)果如圖1所示。
實驗中,不同算法采用的常量分別設(shè)置如下:
[算法\&α1\&α2\&β1\&β2\&SVD\&0.01\&0.01\&0.05\&0.05\&SVD++\&0.009\&0.005\&0.045\&0.05\&非對稱SVD\&0.001\&0.001\&0.01\&0.01\&]
5 結(jié)束語
對本文提出的幾種算法,我們在Movielens數(shù)據(jù)集上進行實驗,證明在RMSE值的對比上,非對稱SVD算法比其他本文提到的算法更為優(yōu)秀。能夠得到比傳統(tǒng)SVD模型更好的評分預測結(jié)果和推薦結(jié)果。另一方面,非對稱SVD 算法繼承了SVD 算法的優(yōu)點,能夠較好地解決用戶-電影矩陣稀疏性的問題,在用戶共同評分較少的情況下也能得到較好的實驗結(jié)果。當然,當今互聯(lián)網(wǎng)上社交型網(wǎng)絡(luò)也越來越受到用戶關(guān)注和使用,今后考慮把用戶之間的社交關(guān)系和項目元數(shù)據(jù)也融入算法當中,使之能更有效地進行評分預測。
參考文獻:
[1] Wu J L. Collaborative filtering on the Netflix prize database[EB/OL]. http://dsec.pku.edu.cn/~jinlong/.
[2] 李改, 李磊. 基于矩陣分解的協(xié)同過濾算法[J]. 計算機工程與應(yīng)用, 2011, 47(30): 4-7.
[3] 徐翔, 王煦法. 基于SVD的協(xié)同過濾算法的欺詐攻擊行為分析[J]. 計算機工程與應(yīng)用, 2009, 45(20): 92-95.
[4] 馮婧姣. 個性化推薦協(xié)同過濾算法研究[D]. 哈爾濱: 哈爾濱工程大學, 2015.
[5] 張光衛(wèi), 李德毅, 李鵬. 基于云模型的協(xié)同過濾推薦算法[J]. 軟件學報, 2007, 18(10): 2403-2411.