《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 通信與網(wǎng)絡(luò) > 設(shè)計(jì)應(yīng)用 > 基于自編碼器的評分預(yù)測算法
基于自編碼器的評分預(yù)測算法
2015年微型機(jī)與應(yīng)用第2期
韓偉森1,2,皮建勇1,,2
(1.貴州大學(xué) 計(jì)算機(jī)科學(xué)與信息學(xué)院,貴州 貴陽 550025,; 2.貴州大學(xué) 云計(jì)算與物聯(lián)網(wǎng)研究中心,,貴州 貴陽 550025)(1.貴州大學(xué) 計(jì)算機(jī)科學(xué)與信息學(xué)院,貴州 貴陽 550025,; 2.貴州大學(xué) 云計(jì)算與物聯(lián)網(wǎng)研究中心,,貴州 貴陽 550025)
摘要: 評分預(yù)測是推薦系統(tǒng)的一個(gè)組成部分,通過一個(gè)實(shí)數(shù)表達(dá)對用戶的偏好進(jìn)行預(yù)測,,在學(xué)術(shù)界被廣泛研究,。神經(jīng)網(wǎng)絡(luò)具有很強(qiáng)的特征提取能力,能獲取數(shù)據(jù)深層次的特征,。使用神經(jīng)網(wǎng)絡(luò)中的一種網(wǎng)絡(luò)即自編碼器,,通過擴(kuò)展使其具有處理像評分矩陣這種有缺失數(shù)據(jù)的矩陣的能力,并通過實(shí)驗(yàn)證明其預(yù)測結(jié)果與當(dāng)前主流的評分預(yù)測算法SVD的性能接近,。
Abstract:
Key words :

  摘  要評分預(yù)測推薦系統(tǒng)的一個(gè)組成部分,,通過一個(gè)實(shí)數(shù)表達(dá)對用戶的偏好進(jìn)行預(yù)測,在學(xué)術(shù)界被廣泛研究,。神經(jīng)網(wǎng)絡(luò)具有很強(qiáng)的特征提取能力,,能獲取數(shù)據(jù)深層次的特征。使用神經(jīng)網(wǎng)絡(luò)中的一種網(wǎng)絡(luò)即自編碼器,,通過擴(kuò)展使其具有處理像評分矩陣這種有缺失數(shù)據(jù)的矩陣的能力,并通過實(shí)驗(yàn)證明其預(yù)測結(jié)果與當(dāng)前主流的評分預(yù)測算法SVD的性能接近,。

  關(guān)鍵詞: 推薦系統(tǒng),;神經(jīng)網(wǎng)絡(luò);自編碼器,;評分預(yù)測

0 引言

  協(xié)同過濾算法是推薦系統(tǒng)中較為常用的算法,,因?yàn)槭褂脜f(xié)同過濾算法進(jìn)行推薦時(shí),只需收集用戶對某件物品的一個(gè)動作表達(dá)用戶對物品的偏好程度,,如評分,、加入購物車、購買等,,即可進(jìn)行推薦,,這樣的數(shù)據(jù)對于電子商務(wù)網(wǎng)站或者視頻網(wǎng)站來說是非常容易收集的?;陬I(lǐng)域[1]的算法是協(xié)同過濾算法中最基本的算法,,主要分為基于用戶的協(xié)同過濾算法,即給用戶B推薦物品,,只需尋找與他相似的用戶并將該用戶喜歡而用戶B沒有看過的物品推薦給B,。基于物品的協(xié)同過濾算法與基于用戶的思路類似只是主體換成了物品,,這兩種算法在業(yè)界被廣泛應(yīng)用,。后來又出現(xiàn)了矩陣分解的方法,,其中具有代表性的是SIMON F提出的SVD算法[2]。SVD算法是對用戶評分矩陣進(jìn)行分解,,然后再重構(gòu),,重構(gòu)的結(jié)果就是預(yù)測結(jié)果,SVD算法在評分預(yù)測方面的性能優(yōu)于傳統(tǒng)的基于鄰域的算法,,在Netflix Prize競賽中取得了巨大的成功,。

  神經(jīng)網(wǎng)又稱為多層感知器,因其具有強(qiáng)大的函數(shù)表達(dá)能力,,可以表達(dá)復(fù)雜模型,,是機(jī)器學(xué)習(xí)的一個(gè)重要研究分支,2006年HINTON G E[3]等人發(fā)明訓(xùn)練深度網(wǎng)絡(luò)的方法以后,,具有深度結(jié)構(gòu)的神經(jīng)網(wǎng)絡(luò)成為了機(jī)器學(xué)習(xí)領(lǐng)域的一個(gè)研究熱點(diǎn),。自編碼器是神經(jīng)網(wǎng)絡(luò)中一種用于無監(jiān)督學(xué)習(xí)的網(wǎng)絡(luò),本文提出一種關(guān)于自編碼器在評分預(yù)測上的擴(kuò)展,,并與當(dāng)前熱門的評分預(yù)測算法SVD進(jìn)行試驗(yàn)對比,。

1 算法

  目前很多的機(jī)器學(xué)習(xí)工作都會使用自編碼器進(jìn)行無監(jiān)督學(xué)習(xí),得到一組好的特征表示來完成更高級的任務(wù)[4-5],,使用這樣的方法獲得了顯著的效果,。基于自編碼器有很強(qiáng)的發(fā)現(xiàn)潛在特征的能力,,在評分預(yù)測中對于用戶評分矩陣,,用已經(jīng)評分的部分作為輸入,使用自編碼器學(xué)習(xí)恒等函數(shù)y(x)≈x獲得數(shù)據(jù)更深層次的表達(dá),,然后再利用這組表達(dá)去重構(gòu)評分矩陣缺失的部分,,即得到預(yù)測值。

  1.1 網(wǎng)絡(luò)結(jié)構(gòu)

  假設(shè)有N個(gè)用戶,,M部電影,,用戶對某個(gè)電影的評分為1~K之間的某個(gè)整數(shù),就形成了M×N的矩陣V,,這個(gè)矩陣是一個(gè)有缺失數(shù)據(jù)的矩陣,,如果用戶i沒有對電影j進(jìn)行評分則元素Vji就是缺失的。矩陣的一列的第i屬性表示用戶i對電影的評分,,用矩陣V的一個(gè)列向量作為輸入給自編碼器,。自編碼器輸入層的每一個(gè)節(jié)點(diǎn)代表用戶對當(dāng)前電影的評分,對于輸入向量中缺失評分的那個(gè)用戶,,網(wǎng)絡(luò)中對應(yīng)的輸入的單元和輸出單元也是缺失的,,這樣自編碼器會根據(jù)不同的電影輸入而改變網(wǎng)絡(luò)結(jié)構(gòu),但是隱藏層的單元數(shù)是固定的,,單元之間的參數(shù)是共享的,,網(wǎng)絡(luò)的結(jié)構(gòu)如圖1所示,。在圖中展示了兩個(gè)電影輸入給自編碼器的情況,第一個(gè)電影只被用戶1,、2,、3、5評過分,,則相應(yīng)的第4個(gè)輸入和輸出節(jié)點(diǎn)是缺失的,;第二個(gè)電影被用戶1、3,、4評過分,,則第2和第5個(gè)節(jié)點(diǎn)是缺失的。

001.jpg

  現(xiàn)在來分析特定電影被用戶評分的向量作為輸入情況下的自編碼器,。假設(shè)電影被n個(gè)用戶評價(jià),,h為隱藏層的單元個(gè)數(shù),則有如下符號定義:

  v:神經(jīng)網(wǎng)絡(luò)的輸入,,v∈Rn,。

  h:隱藏層的單元數(shù)。

  W:第層的單元j到連接到第l+1層的單元i的參數(shù),,其中W(1)∈Rh×n,,W(2)∈Rh×n。

  b:連接到l+1層的單元i的偏置,。

  a:第l層的單元i的激活,,其中a=vi表示第i個(gè)輸入。

  自編碼器的向前計(jì)算過程為:

  1.png

  2.jpg

  1.2 網(wǎng)絡(luò)訓(xùn)練

  網(wǎng)絡(luò)的訓(xùn)練采用反向傳播算法,,包含向前階段和向后階段兩個(gè)過程。向前階段使用式(1),、(2)計(jì)算出預(yù)測值,,在向后階段利用誤差向后傳播的思想計(jì)算梯度,即先計(jì)算l+1梯度,,再計(jì)算l層的梯度,。每個(gè)電影的輸入用向量v表示,則每個(gè)參數(shù)的梯度為:

  3.jpg

  使用bath-method訓(xùn)練時(shí),,不同電影的輸入被相同用戶評分為輸出單元和輸入單元,,可以把與這些單元相關(guān)的參數(shù)的梯度進(jìn)行累加,作為總梯度來進(jìn)行參數(shù)的更新,。

  2006年Chu Chengtao[6]提出當(dāng)算法能夠?qū)懗梢环N稱為summation form的形式時(shí)這種算法就能很容易地進(jìn)行并行化訓(xùn)練,,并給出了神經(jīng)網(wǎng)絡(luò)在Map-Reduce框架下的并行化訓(xùn)練思路,本文提出的預(yù)測評分算法很容易擴(kuò)展到處理大數(shù)據(jù)的環(huán)境,。

  1.3 預(yù)測

002.jpg

  網(wǎng)絡(luò)訓(xùn)練完成后進(jìn)入到預(yù)測階段,,如要預(yù)測用戶u1對電影的評分,,網(wǎng)絡(luò)的輸入層到隱藏層不變,只需在輸出層增加一個(gè)關(guān)于用戶u1的輸出節(jié)點(diǎn),,為了能夠預(yù)測其訓(xùn)練集中所有用戶對當(dāng)前電影的評分,,可以把輸出層的節(jié)點(diǎn)數(shù)增加到N,網(wǎng)絡(luò)結(jié)構(gòu)修改如圖2所示,。輸入層的節(jié)點(diǎn)4是缺失的,,但是輸出層的節(jié)點(diǎn)4還在,因此輸出層的節(jié)點(diǎn)4就是算法對用戶4關(guān)于當(dāng)前電影的評分預(yù)測,。然后使用式(1),、(2)對網(wǎng)絡(luò)進(jìn)行一次向前計(jì)算,即可得到網(wǎng)絡(luò)對電影被某個(gè)用戶評分的預(yù)測,。

  1.4 利用隱式反饋

  在推薦系統(tǒng)領(lǐng)域,,會遇到一種叫做冷啟動的問題。網(wǎng)站有很多的電影和用戶,,但是用戶對電影的評分卻很少,,評分矩陣過于稀疏,導(dǎo)致評分預(yù)測精度下降,。電影網(wǎng)站很容易獲得一種隱式的反饋,,即用戶看過或?yàn)g覽過某部電影,但是因?yàn)槟撤N原因沒有給出評分,,這種隱式的反饋,,也可以在一定程度上解釋用戶的偏好,因此算法就可以利用這組隱式反饋數(shù)據(jù),??紤]向量d∈{0,1}N是一個(gè)長度為N的0~1向量,,表示電影是否被某個(gè)用戶查看過,,這樣就可以通過這組向量去影響隱藏層的表示,這時(shí)對式(1)進(jìn)行修改如下:

  4.jpg

  本次實(shí)驗(yàn)采用MoiveLens-100k數(shù)據(jù)集,,其中含有943個(gè)用戶對1 682部電影的10萬次評分,,評分取值是從1~5之間的整數(shù),實(shí)驗(yàn)前需要對數(shù)據(jù)進(jìn)行預(yù)處理,,即對整個(gè)數(shù)據(jù)除以5,,最后算法的輸出結(jié)果乘以5得到最終的預(yù)測結(jié)果。在實(shí)驗(yàn)中把數(shù)據(jù)集劃分為不相交的兩部分,,第一部分包含9萬個(gè)用戶評分作為訓(xùn)練集,,剩下的作為測試集驗(yàn)證預(yù)測效果,上述過程會重復(fù)劃分10次,,進(jìn)行10次訓(xùn)練和預(yù)測,。預(yù)測結(jié)果的評價(jià)采用評分預(yù)測中常用的均方根誤差(RMSE)作為評分標(biāo)準(zhǔn),。假設(shè)用戶u對電影i的真實(shí)評分為rui,算法預(yù)測評分為ui,,T是一個(gè)集合存放測試集中用戶u對電影i評分的二元組,,則RMSE的計(jì)算公式為:

  5.png

  每次訓(xùn)練,把訓(xùn)練數(shù)據(jù)分成10批(batche),,每批含有168個(gè)電影的訓(xùn)練用例,,最后一批含有170個(gè)電影訓(xùn)練用例,每一批計(jì)算完梯度后進(jìn)行參數(shù)更新,,神經(jīng)網(wǎng)絡(luò)的隱藏單元個(gè)數(shù)設(shè)置為50,。對比實(shí)驗(yàn)選擇當(dāng)下預(yù)測評分算法中比較流行的SVD,SVD的隱式因子設(shè)定為50,,數(shù)據(jù)全部經(jīng)過算法訓(xùn)練一次記一個(gè)周期(epoch),,訓(xùn)練50個(gè)周期,在1~50個(gè)周期的誤差中選擇最好的訓(xùn)練結(jié)果,,如圖3所示,。10次測試的平均結(jié)果如表1所示。從結(jié)果來看,,基于自編碼器的評分預(yù)測算法性能在當(dāng)前數(shù)據(jù)集上好于SVD,,帶有隱式反饋的自編碼器性能略好于原始的自編碼器,但是提升效果不明顯,,僅有0.06,。

003.jpg

3 結(jié)論

  本文提出了一種基于自編碼器的評分預(yù)測算法,在MoiveLens數(shù)據(jù)集上獲得了不錯(cuò)的效果,,實(shí)驗(yàn)中的參數(shù)并沒有被很好地調(diào)節(jié),,算法還有提高的可能性,用戶的隱式反饋雖然還能提高算法的預(yù)測精度,,但是在實(shí)驗(yàn)中提高僅僅只有0.06,,并不明顯,如何更好地利用這種隱式反饋需要進(jìn)一步研究,。通常在獲取的用戶評分?jǐn)?shù)據(jù)中往往帶有時(shí)間屬性,,而這也是一個(gè)非常好收集到的屬性,, KOREN Y提出的一個(gè)SVD的變種[1]中使用了時(shí)間屬性并取得了好的成績,,今后的研究中會考慮把時(shí)間屬性加入到自編碼器模型中。近年來基于深度結(jié)構(gòu)的神經(jīng)網(wǎng)絡(luò)成為機(jī)器學(xué)習(xí)研究的熱點(diǎn),,已被成功地使用到很多領(lǐng)域,,如自然語言處理、信息檢索,、分類,。未來利用具有構(gòu)建深度結(jié)構(gòu)的自編碼器來提高預(yù)測結(jié)果也值得進(jìn)一步研究,。

參考文獻(xiàn)

  [1] 項(xiàng)亮.推薦系統(tǒng)實(shí)戰(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 the 24th International Conference on Machine Learning,, 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.


此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載,。