韓偉森,皮建勇(1.貴州大學(xué) 計(jì)算機(jī)科學(xué)與信息學(xué)院,貴州 貴陽(yáng) 550025;2.貴州大學(xué) 云計(jì)算與物聯(lián)網(wǎng)研究中心,貴州 貴陽(yáng) 550025)
基于自編碼器的評(píng)分預(yù)測(cè)算法
韓偉森1,2,皮建勇1,2
(1.貴州大學(xué)計(jì)算機(jī)科學(xué)與信息學(xué)院,貴州貴陽(yáng) 550025;2.貴州大學(xué) 云計(jì)算與物聯(lián)網(wǎng)研究中心,貴州 貴陽(yáng) 550025)
評(píng)分預(yù)測(cè)是推薦系統(tǒng)的一個(gè)組成部分,通過(guò)一個(gè)實(shí)數(shù)表達(dá)對(duì)用戶的偏好進(jìn)行預(yù)測(cè),在學(xué)術(shù)界被廣泛研究。神經(jīng)網(wǎng)絡(luò)具有很強(qiáng)的特征提取能力,能獲取數(shù)據(jù)深層次的特征。使用神經(jīng)網(wǎng)絡(luò)中的一種網(wǎng)絡(luò)即自編碼器,通過(guò)擴(kuò)展使其具有處理像評(píng)分矩陣這種有缺失數(shù)據(jù)的矩陣的能力,并通過(guò)實(shí)驗(yàn)證明其預(yù)測(cè)結(jié)果與當(dāng)前主流的評(píng)分預(yù)測(cè)算法SVD的性能接近。
推薦系統(tǒng);神經(jīng)網(wǎng)絡(luò);自編碼器;評(píng)分預(yù)測(cè)
協(xié)同過(guò)濾算法是推薦系統(tǒng)中較為常用的算法,因?yàn)槭褂脜f(xié)同過(guò)濾算法進(jìn)行推薦時(shí),只需收集用戶對(duì)某件物品的一個(gè)動(dòng)作表達(dá)用戶對(duì)物品的偏好程度,如評(píng)分、加入購(gòu)物車(chē)、購(gòu)買(mǎi)等,即可進(jìn)行推薦,這樣的數(shù)據(jù)對(duì)于電子商務(wù)網(wǎng)站或者視頻網(wǎng)站來(lái)說(shuō)是非常容易收集的。基于領(lǐng)域[1]的算法是協(xié)同過(guò)濾算法中最基本的算法,主要分為基于用戶的協(xié)同過(guò)濾算法,即給用戶B推薦物品,只需尋找與他相似的用戶并將該用戶喜歡而用戶B沒(méi)有看過(guò)的物品推薦給B。基于物品的協(xié)同過(guò)濾算法與基于用戶的思路類(lèi)似只是主體換成了物品,這兩種算法在業(yè)界被廣泛應(yīng)用。后來(lái)又出現(xiàn)了矩陣分解的方法,其中具有代表性的是SIMON F提出的SVD算法[2]。SVD算法是對(duì)用戶評(píng)分矩陣進(jìn)行分解,然后再重構(gòu),重構(gòu)的結(jié)果就是預(yù)測(cè)結(jié)果,SVD算法在評(píng)分預(yù)測(cè)方面的性能優(yōu)于傳統(tǒng)的基于鄰域的算法,在Netflix Prize競(jìng)賽中取得了巨大的成功。
神經(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ò)中一種用于無(wú)監(jiān)督學(xué)習(xí)的網(wǎng)絡(luò),本文提出一種關(guān)于自編碼器在評(píng)分預(yù)測(cè)上的擴(kuò)展,并與當(dāng)前熱門(mén)的評(píng)分預(yù)測(cè)算法SVD進(jìn)行試驗(yàn)對(duì)比。
目前很多的機(jī)器學(xué)習(xí)工作都會(huì)使用自編碼器進(jìn)行無(wú)監(jiān)督學(xué)習(xí),得到一組好的特征表示來(lái)完成更高級(jí)的任務(wù)[4-5],使用這樣的方法獲得了顯著的效果。基于自編碼器有很強(qiáng)的發(fā)現(xiàn)潛在特征的能力,在評(píng)分預(yù)測(cè)中對(duì)于用戶評(píng)分矩陣,用已經(jīng)評(píng)分的部分作為輸入,使用自編碼器學(xué)習(xí)恒等函數(shù)y(x)≈x獲得數(shù)據(jù)更深層次的表達(dá),然后再利用這組表達(dá)去重構(gòu)評(píng)分矩陣缺失的部分,即得到預(yù)測(cè)值。
1.1網(wǎng)絡(luò)結(jié)構(gòu)
假設(shè)有N個(gè)用戶,M部電影,用戶對(duì)某個(gè)電影的評(píng)分為1~K之間的某個(gè)整數(shù),就形成了M×N的矩陣V,這個(gè)矩陣是一個(gè)有缺失數(shù)據(jù)的矩陣,如果用戶i沒(méi)有對(duì)電影j進(jìn)行評(píng)分則元素Vji就是缺失的。矩陣的一列的第i屬性表示用戶i對(duì)電影的評(píng)分,用矩陣V的一個(gè)列向量作為輸入給自編碼器。自編碼器輸入層的每一個(gè)節(jié)點(diǎn)代表用戶對(duì)當(dāng)前電影的評(píng)分,對(duì)于輸入向量中缺失評(píng)分的那個(gè)用戶,網(wǎng)絡(luò)中對(duì)應(yīng)的輸入的單元和輸出單元也是缺失的,這樣自編碼器會(huì)根據(jù)不同的電影輸入而改變網(wǎng)絡(luò)結(jié)構(gòu),但是隱藏層的單元數(shù)是固定的,單元之間的參數(shù)是共享的,網(wǎng)絡(luò)的結(jié)構(gòu)如圖1所示。在圖中展示了兩個(gè)電影輸入給自編碼器的情況,第一個(gè)電影只被用戶1、2、3、5評(píng)過(guò)分,則相應(yīng)的第 4個(gè)輸入和輸出節(jié)點(diǎn)是缺失的;第二個(gè)電影被用戶1、3、4評(píng)過(guò)分,則第2和第 5個(gè)節(jié)點(diǎn)是缺失的。

圖1 訓(xùn)練網(wǎng)絡(luò)
現(xiàn)在來(lái)分析特定電影被用戶評(píng)分的向量作為輸入情況下的自編碼器。假設(shè)電影被n個(gè)用戶評(píng)價(jià),h為隱藏層的單元個(gè)數(shù),則有如下符號(hào)定義:
v:神經(jīng)網(wǎng)絡(luò)的輸入,v∈Rn。
h:隱藏層的單元數(shù)。
其中 W(1)∈Rh×n,W(2)∈Rh×n。
輸入。
自編碼器的向前計(jì)算過(guò)程為:

損失函數(shù)為:

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

使用 bath-method訓(xùn)練時(shí),不同電影的輸入被相同用戶評(píng)分為輸出單元和輸入單元,可以把與這些單元相關(guān)的參數(shù)的梯度進(jìn)行累加,作為總梯度來(lái)進(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ù)測(cè)評(píng)分算法很容易擴(kuò)展到處理大數(shù)據(jù)的環(huán)境。
1.3預(yù)測(cè)
網(wǎng)絡(luò)訓(xùn)練完成后進(jìn)入到預(yù)測(cè)階段,如要預(yù)測(cè)用戶u1對(duì)電影的評(píng)分,網(wǎng)絡(luò)的輸入層到隱藏層不變,只需在輸出層增加一個(gè)關(guān)于用戶u1的輸出節(jié)點(diǎn),為了能夠預(yù)測(cè)其訓(xùn)練集中所有用戶對(duì)當(dāng)前電影的評(pí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就是算法對(duì)用戶4關(guān)于當(dāng)前電影的評(píng)分預(yù)測(cè)。然后使用式(1)、(2)對(duì)網(wǎng)絡(luò)進(jìn)行一次向前計(jì)算,即可得到網(wǎng)絡(luò)對(duì)電影被某個(gè)用戶評(píng)分的預(yù)測(cè)。
1.4利用隱式反饋
在推薦系統(tǒng)領(lǐng)域,會(huì)遇到一種叫做冷啟動(dòng)的問(wèn)題。網(wǎng)站有很多的電影和用戶,但是用戶對(duì)電影的評(píng)分卻很少,評(píng)分矩陣過(guò)于稀疏,導(dǎo)致評(píng)分預(yù)測(cè)精度下降。電影網(wǎng)站很容易獲得一種隱式的反饋,即用戶看過(guò)或?yàn)g覽過(guò)某部電影,但是因?yàn)槟撤N原因沒(méi)有給出評(píng)分,這種隱式的反饋,也可以在一定程度上解釋用戶的偏好,因此算法就可以利用這組隱式反饋數(shù)據(jù)。考慮向量d∈{0,1}N是一個(gè)長(zhǎng)度為N的0~1向量,表示電影是否被某個(gè)用戶查看過(guò),這樣就可以通過(guò)這組向量去影響隱藏層的表示,這時(shí)對(duì)式(1)進(jìn)行修改如下:

其中,θ為新增參數(shù) θ=Rh×N,θ的梯度為:

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

每次訓(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。對(duì)比實(shí)驗(yàn)選擇當(dāng)下預(yù)測(cè)評(píng)分算法中比較流行的 SVD,SVD的隱式因子設(shè)定為 50,數(shù)據(jù)全部經(jīng)過(guò)算法訓(xùn)練一次記一個(gè)周期(epoch),訓(xùn)練50個(gè)周期,在 1~50個(gè)周期的誤差中選擇最好的訓(xùn)練結(jié)果,如圖3所示。10次測(cè)試的平均結(jié)果如表1所示。從結(jié)果來(lái)看,基于自編碼器的評(píng)分預(yù)測(cè)算法性能在當(dāng)前數(shù)據(jù)集上好于SVD,帶有隱式反饋的自編碼器性能略好于原始的自編碼器,但是提升效果不明顯,僅有 0.06。
本文提出了一種基于自編碼器的評(píng)分預(yù)測(cè)算法,在MoiveLens數(shù)據(jù)集上獲得了不錯(cuò)的效果,實(shí)驗(yàn)中的參數(shù)并沒(méi)有被很好地調(diào)節(jié),算法還有提高的可能性,用戶的隱式反饋雖然還能提高算法的預(yù)測(cè)精度,但是在實(shí)驗(yàn)中提高僅僅只有 0.06,并不明顯,如何更好地利用這種隱式反饋需要進(jìn)一步研究。通常在獲取的用戶評(píng)分?jǐn)?shù)據(jù)中往往帶有時(shí)間屬性,而這也是一個(gè)非常好收集到的屬性,KOREN Y提出的一個(gè) SVD的變種[1]中使用了時(shí)間屬性并取得了好的成績(jī),今后的研究中會(huì)考慮把時(shí)間屬性加入到自編碼器模型中。近年來(lái)基于深度結(jié)構(gòu)的神經(jīng)網(wǎng)絡(luò)成為機(jī)器學(xué)習(xí)研究的熱點(diǎn),已被成功地使用到很多領(lǐng)域,如自然語(yǔ)言處理、信息檢索、分類(lèi)。未來(lái)利用具有構(gòu)建深度結(jié)構(gòu)的自編碼器來(lái)提高預(yù)測(cè)結(jié)果也值得進(jìn)一步研究。

圖3 模型迭代結(jié)果

表1 測(cè)試結(jié)果
[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 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-),男,碩士,主要研究方向:機(jī)器學(xué)習(xí)。
皮建勇(1973-),男,博士,副教授,主要研究方向:數(shù)據(jù)挖掘,人工智能,分布式并行計(jì)算。
網(wǎng)絡(luò)安全與數(shù)據(jù)管理2015年2期