韓偉森,皮建勇(1.貴州大學 計算機科學與信息學院,貴州 貴陽 550025;2.貴州大學 云計算與物聯(lián)網(wǎng)研究中心,貴州 貴陽 550025)
基于自編碼器的評分預測算法
韓偉森1,2,皮建勇1,2
(1.貴州大學計算機科學與信息學院,貴州貴陽 550025;2.貴州大學 云計算與物聯(lián)網(wǎng)研究中心,貴州 貴陽 550025)
評分預測是推薦系統(tǒng)的一個組成部分,通過一個實數(shù)表達對用戶的偏好進行預測,在學術(shù)界被廣泛研究。神經(jīng)網(wǎng)絡(luò)具有很強的特征提取能力,能獲取數(shù)據(jù)深層次的特征。使用神經(jīng)網(wǎng)絡(luò)中的一種網(wǎng)絡(luò)即自編碼器,通過擴展使其具有處理像評分矩陣這種有缺失數(shù)據(jù)的矩陣的能力,并通過實驗證明其預測結(jié)果與當前主流的評分預測算法SVD的性能接近。
推薦系統(tǒng);神經(jīng)網(wǎng)絡(luò);自編碼器;評分預測
協(xié)同過濾算法是推薦系統(tǒng)中較為常用的算法,因為使用協(xié)同過濾算法進行推薦時,只需收集用戶對某件物品的一個動作表達用戶對物品的偏好程度,如評分、加入購物車、購買等,即可進行推薦,這樣的數(shù)據(jù)對于電子商務網(wǎng)站或者視頻網(wǎng)站來說是非常容易收集的?;陬I(lǐng)域[1]的算法是協(xié)同過濾算法中最基本的算法,主要分為基于用戶的協(xié)同過濾算法,即給用戶B推薦物品,只需尋找與他相似的用戶并將該用戶喜歡而用戶B沒有看過的物品推薦給B?;谖锲返膮f(xié)同過濾算法與基于用戶的思路類似只是主體換成了物品,這兩種算法在業(yè)界被廣泛應用。后來又出現(xiàn)了矩陣分解的方法,其中具有代表性的是SIMON F提出的SVD算法[2]。SVD算法是對用戶評分矩陣進行分解,然后再重構(gòu),重構(gòu)的結(jié)果就是預測結(jié)果,SVD算法在評分預測方面的性能優(yōu)于傳統(tǒng)的基于鄰域的算法,在Netflix Prize競賽中取得了巨大的成功。
神經(jīng)網(wǎng)又稱為多層感知器,因其具有強大的函數(shù)表達能力,可以表達復雜模型,是機器學習的一個重要研究分支,2006年HINTON G E[3]等人發(fā)明訓練深度網(wǎng)絡(luò)的方法以后,具有深度結(jié)構(gòu)的神經(jīng)網(wǎng)絡(luò)成為了機器學習領(lǐng)域的一個研究熱點。自編碼器是神經(jīng)網(wǎng)絡(luò)中一種用于無監(jiān)督學習的網(wǎng)絡(luò),本文提出一種關(guān)于自編碼器在評分預測上的擴展,并與當前熱門的評分預測算法SVD進行試驗對比。
目前很多的機器學習工作都會使用自編碼器進行無監(jiān)督學習,得到一組好的特征表示來完成更高級的任務[4-5],使用這樣的方法獲得了顯著的效果?;谧跃幋a器有很強的發(fā)現(xiàn)潛在特征的能力,在評分預測中對于用戶評分矩陣,用已經(jīng)評分的部分作為輸入,使用自編碼器學習恒等函數(shù)y(x)≈x獲得數(shù)據(jù)更深層次的表達,然后再利用這組表達去重構(gòu)評分矩陣缺失的部分,即得到預測值。
1.1網(wǎng)絡(luò)結(jié)構(gòu)
假設(shè)有N個用戶,M部電影,用戶對某個電影的評分為1~K之間的某個整數(shù),就形成了M×N的矩陣V,這個矩陣是一個有缺失數(shù)據(jù)的矩陣,如果用戶i沒有對電影j進行評分則元素Vji就是缺失的。矩陣的一列的第i屬性表示用戶i對電影的評分,用矩陣V的一個列向量作為輸入給自編碼器。自編碼器輸入層的每一個節(jié)點代表用戶對當前電影的評分,對于輸入向量中缺失評分的那個用戶,網(wǎng)絡(luò)中對應的輸入的單元和輸出單元也是缺失的,這樣自編碼器會根據(jù)不同的電影輸入而改變網(wǎng)絡(luò)結(jié)構(gòu),但是隱藏層的單元數(shù)是固定的,單元之間的參數(shù)是共享的,網(wǎng)絡(luò)的結(jié)構(gòu)如圖1所示。在圖中展示了兩個電影輸入給自編碼器的情況,第一個電影只被用戶1、2、3、5評過分,則相應的第 4個輸入和輸出節(jié)點是缺失的;第二個電影被用戶1、3、4評過分,則第2和第 5個節(jié)點是缺失的。
圖1 訓練網(wǎng)絡(luò)
現(xiàn)在來分析特定電影被用戶評分的向量作為輸入情況下的自編碼器。假設(shè)電影被n個用戶評價,h為隱藏層的單元個數(shù),則有如下符號定義:
v:神經(jīng)網(wǎng)絡(luò)的輸入,v∈Rn。
h:隱藏層的單元數(shù)。
其中 W(1)∈Rh×n,W(2)∈Rh×n。
輸入。
自編碼器的向前計算過程為:
損失函數(shù)為:
1.2網(wǎng)絡(luò)訓練
網(wǎng)絡(luò)的訓練采用反向傳播算法,包含向前階段和向后階段兩個過程。向前階段使用式(1)、(2)計算出預測值,在向后階段利用誤差向后傳播的思想計算梯度,即先計算l+1梯度,再計算l層的梯度。每個電影的輸入用向量v表示,則每個參數(shù)的梯度為:
使用 bath-method訓練時,不同電影的輸入被相同用戶評分為輸出單元和輸入單元,可以把與這些單元相關(guān)的參數(shù)的梯度進行累加,作為總梯度來進行參數(shù)的更新。
2006年Chu Chengtao[6]提出當算法能夠?qū)懗梢环N稱為summation form的形式時這種算法就能很容易地進行并行化訓練,并給出了神經(jīng)網(wǎng)絡(luò)在 Map-Reduce框架下的并行化訓練思路,本文提出的預測評分算法很容易擴展到處理大數(shù)據(jù)的環(huán)境。
1.3預測
網(wǎng)絡(luò)訓練完成后進入到預測階段,如要預測用戶u1對電影的評分,網(wǎng)絡(luò)的輸入層到隱藏層不變,只需在輸出層增加一個關(guān)于用戶u1的輸出節(jié)點,為了能夠預測其訓練集中所有用戶對當前電影的評分,可以把輸出層的節(jié)點數(shù)增加到N,網(wǎng)絡(luò)結(jié)構(gòu)修改如圖2所示。輸入層的節(jié)點4是缺失的,但是輸出層的節(jié)點4還在,因此輸出層的節(jié)點4就是算法對用戶4關(guān)于當前電影的評分預測。然后使用式(1)、(2)對網(wǎng)絡(luò)進行一次向前計算,即可得到網(wǎng)絡(luò)對電影被某個用戶評分的預測。
1.4利用隱式反饋
在推薦系統(tǒng)領(lǐng)域,會遇到一種叫做冷啟動的問題。網(wǎng)站有很多的電影和用戶,但是用戶對電影的評分卻很少,評分矩陣過于稀疏,導致評分預測精度下降。電影網(wǎng)站很容易獲得一種隱式的反饋,即用戶看過或瀏覽過某部電影,但是因為某種原因沒有給出評分,這種隱式的反饋,也可以在一定程度上解釋用戶的偏好,因此算法就可以利用這組隱式反饋數(shù)據(jù)??紤]向量d∈{0,1}N是一個長度為N的0~1向量,表示電影是否被某個用戶查看過,這樣就可以通過這組向量去影響隱藏層的表示,這時對式(1)進行修改如下:
其中,θ為新增參數(shù) θ=Rh×N,θ的梯度為:
圖2 預測網(wǎng)絡(luò)
本次實驗采用 MoiveLens-100k數(shù)據(jù)集,其中含有943個用戶對 1 682部電影的 10萬次評分,評分取值是從1~5之間的整數(shù),實驗前需要對數(shù)據(jù)進行預處理,即對整個數(shù)據(jù)除以5,最后算法的輸出結(jié)果乘以5得到最終的預測結(jié)果。在實驗中把數(shù)據(jù)集劃分為不相交的兩部分,第一部分包含9萬個用戶評分作為訓練集,剩下的作為測試集驗證預測效果,上述過程會重復劃分10次,進行10次訓練和預測。預測結(jié)果的評價采用評分預測中常用的均方根誤差(RMSE)作為評分標準。假設(shè)用戶u對電影i的真實評分為 rui,算法預測評分為r?ui,T是一個集合存放測試集中用戶u對電影i評分的二元組,則RMSE的計算公式為:
每次訓練,把訓練數(shù)據(jù)分成 10批(batche),每批含有 168個電影的訓練用例,最后一批含有 170個電影訓練用例,每一批計算完梯度后進行參數(shù)更新,神經(jīng)網(wǎng)絡(luò)的隱藏單元個數(shù)設(shè)置為50。對比實驗選擇當下預測評分算法中比較流行的 SVD,SVD的隱式因子設(shè)定為 50,數(shù)據(jù)全部經(jīng)過算法訓練一次記一個周期(epoch),訓練50個周期,在 1~50個周期的誤差中選擇最好的訓練結(jié)果,如圖3所示。10次測試的平均結(jié)果如表1所示。從結(jié)果來看,基于自編碼器的評分預測算法性能在當前數(shù)據(jù)集上好于SVD,帶有隱式反饋的自編碼器性能略好于原始的自編碼器,但是提升效果不明顯,僅有 0.06。
本文提出了一種基于自編碼器的評分預測算法,在MoiveLens數(shù)據(jù)集上獲得了不錯的效果,實驗中的參數(shù)并沒有被很好地調(diào)節(jié),算法還有提高的可能性,用戶的隱式反饋雖然還能提高算法的預測精度,但是在實驗中提高僅僅只有 0.06,并不明顯,如何更好地利用這種隱式反饋需要進一步研究。通常在獲取的用戶評分數(shù)據(jù)中往往帶有時間屬性,而這也是一個非常好收集到的屬性,KOREN Y提出的一個 SVD的變種[1]中使用了時間屬性并取得了好的成績,今后的研究中會考慮把時間屬性加入到自編碼器模型中。近年來基于深度結(jié)構(gòu)的神經(jīng)網(wǎng)絡(luò)成為機器學習研究的熱點,已被成功地使用到很多領(lǐng)域,如自然語言處理、信息檢索、分類。未來利用具有構(gòu)建深度結(jié)構(gòu)的自編碼器來提高預測結(jié)果也值得進一步研究。
圖3 模型迭代結(jié)果
表1 測試結(jié)果
[1]項亮.推薦系統(tǒng)實戰(zhàn)[M].北京:人民郵電出版社,2012.
[2]SIMON F.Netfix update:tray this at home[EB/OL].[2006-12-11](2014-09-01).http://sifter.org/~simon/journal/20061211. html.
[3]HINTON G E,OSINDERO S,TEH Y.A fast learning algorithm for deep belief nets[J].Neural Computation,2006,(18):1527-1554.
[4]RAINA R,BATTLE A,LEE H,et al.Self-taught learning:transfer learning from unlabeled data[C].Proceedings of the24thInternationalConferenceonMachineLearning,ICML 2007,2007:759-766.
[5]HINTON G E,SALAKHUTDINOV R.Reducing the dimensionality of data with neural networks[J].Science,2006,31 (3):504-507.
[6]Chu Chengtao,KIM S K,Lin Yian,el al.Map-reduce for machine learning on multicore[C].NIPS 2006.
A rating prediction algorithm based on autoencoder
Han Weisen1,2,Pi Jianyong1,2
(1.College of Computer Science and Information,Guizhou University,Guiyang 550025,China;2.Research Centre of Cloud Computing and Internet of Things,Guizhou University,Guiyang 550025,China)
Rating prediction is a part of recommender system,and capturing user′s preference through a number has been extensively studied in academia.Neural network is a powerful framework which has a strong feature extraction capabilities and can obtain deep structure in data.In this paper,we use a kind of unsupervised learning neural network namely autoencoder,by extending this model let it can handle the user rating matrix which has missing rating.Experiments show that the performance is similar with SVD which is the most popular of rating prediction algorithm.
recommender system;neural network;autoencoder;rating prediction
TP183
A
1674-7720(2015)02-0011-03
(2014-09-29)
韓偉森(1990-),男,碩士,主要研究方向:機器學習。
皮建勇(1973-),男,博士,副教授,主要研究方向:數(shù)據(jù)挖掘,人工智能,分布式并行計算。