王屯屯
(四川大學(xué)計(jì)算機(jī)學(xué)院,成都 610065)
隨著信息化的快速發(fā)展,我們已經(jīng)從信息匱乏時(shí)代轉(zhuǎn)化到了信息過(guò)載的階段,推薦系統(tǒng)是為信息提供方和信息消費(fèi)者進(jìn)行友好對(duì)接的一個(gè)有效方式。推薦系統(tǒng)幫助商家將自己的產(chǎn)品推銷(xiāo)給合適的用戶(hù),同時(shí)也可以幫助用戶(hù)找到自己需要的商品。信息化的快速發(fā)展雖然給我們帶來(lái)了信息過(guò)載問(wèn)題,但同時(shí)也為我們提供了大量的數(shù)據(jù),這使得深度學(xué)習(xí)模型再次進(jìn)入人們的視野。本文我們將利用深度學(xué)習(xí)模型為用戶(hù)進(jìn)行商品推薦。
我們已經(jīng)熟知的、比較成熟的推薦算法有很多,例如基于協(xié)同過(guò)濾的推薦算法[1]、基于內(nèi)容的推薦算法[2]、基于模型的推薦算法[3]等,利用這些推薦算法都能夠給用戶(hù)推薦商品。但這些經(jīng)典的推薦算法在根據(jù)用戶(hù)歷史購(gòu)買(mǎi)行為進(jìn)行推薦時(shí),無(wú)法考慮用戶(hù)購(gòu)買(mǎi)商品的順序,也就是說(shuō),在一般情況下,用戶(hù)購(gòu)買(mǎi)了一個(gè)奶粉,推薦系統(tǒng)認(rèn)為用戶(hù)會(huì)同時(shí)奶粉和玩具,于是會(huì)為用戶(hù)推薦各種兒童玩具。然而實(shí)際情況是,該用戶(hù)可能幾年后才會(huì)購(gòu)買(mǎi)玩具,現(xiàn)在沒(méi)有購(gòu)買(mǎi)需求,不會(huì)購(gòu)買(mǎi)推薦系統(tǒng)為其推薦的玩具商品,導(dǎo)致推薦系統(tǒng)準(zhǔn)確率不高。
假設(shè)某個(gè)用戶(hù)兩年前開(kāi)始購(gòu)買(mǎi)嬰幼兒奶粉,我們認(rèn)為該用戶(hù)家庭中添加了一位寶寶。一年前開(kāi)始購(gòu)買(mǎi)適合一歲嬰兒穿的衣服,現(xiàn)在對(duì)其進(jìn)行商品推薦。從用戶(hù)的歷史購(gòu)物行為分析,發(fā)現(xiàn)該用戶(hù)家庭中的寶寶已經(jīng)兩歲了,我們需要為其推薦適合兩歲嬰兒的商品,例如衣服、奶粉、玩具等。傳統(tǒng)的推薦系統(tǒng)雖然也會(huì)為其推薦衣服和奶粉,但是我們提出的模型會(huì)更加準(zhǔn)確地為其推薦適合兩歲嬰兒穿的衣服和奶粉;雖然其他推薦系統(tǒng)也會(huì)為用戶(hù)推薦玩具,但是我們的推薦算法會(huì)在合適的時(shí)間進(jìn)行推薦。
本文提出的模型(LSTMBaseRec),主要利用長(zhǎng)短期記憶人工神經(jīng)網(wǎng)絡(luò)[4](Long-Short Term Memory,LSTM)進(jìn)行推薦。LSTM模型是一種改進(jìn)的時(shí)間循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN),可以學(xué)習(xí)時(shí)間序列長(zhǎng)短期依賴(lài)信息,由于神經(jīng)網(wǎng)絡(luò)包含時(shí)間記憶單元,比較適合于對(duì)時(shí)間序列中的間隔和延遲事件進(jìn)行處理和預(yù)測(cè)。
LSTM提出四層門(mén)控制的概念,解決了長(zhǎng)期依賴(lài)問(wèn)題,分別為輸入門(mén)、忘記門(mén)、更新門(mén)和輸出門(mén)。如圖1所示。
輸入門(mén)主要包含兩部分,第一部分通過(guò)sigmoid函數(shù)決定需要輸入值,第二部分會(huì)通過(guò)tanh函數(shù)創(chuàng)建一個(gè)候選值向量并加入到狀態(tài)Ct中,計(jì)算公式如下:
圖1 LSTM四層門(mén)控制
忘記門(mén)會(huì)讀取上一層的輸入ht-1和當(dāng)前時(shí)間點(diǎn)的輸入xt,輸出數(shù)值ft并賦值給當(dāng)前神經(jīng)元的狀態(tài)Ct-1中,計(jì)算公式如下:
更新門(mén)主要用來(lái)對(duì)舊神經(jīng)元的狀態(tài)進(jìn)行更新,將Ct-1改為 Ct,公式如下:
輸出門(mén)主要分為兩部分,首先利用sigmoid函數(shù)決定神經(jīng)元輸出哪個(gè)部分,接著通過(guò)tanh函數(shù)對(duì)當(dāng)前狀態(tài)進(jìn)行處理,并將其與第一步的輸出相乘。計(jì)算公式如下:
經(jīng)過(guò)上面的四個(gè)步驟,可以有效地對(duì)時(shí)序信息進(jìn)行處理和預(yù)測(cè)。
本文采取準(zhǔn)確性評(píng)價(jià)指標(biāo)對(duì)模型進(jìn)行評(píng)估,主要評(píng)價(jià)指標(biāo)包括:平均準(zhǔn)確率(MAP)和召回率(Recall)。其定義如下:
其中U表示系統(tǒng)中所有用戶(hù)的集合,hit(u)表示推薦列表中,用戶(hù)u購(gòu)買(mǎi)的商品數(shù)量,H(u)表示用戶(hù)u購(gòu)買(mǎi)的所有商品數(shù)量。
基于物品的協(xié)同過(guò)濾算法(ItemCF)給用戶(hù)推薦與其之前喜歡的物品相似的物品,通過(guò)分析用戶(hù)的行為記錄計(jì)算物品之間的相似度,該算法認(rèn)為物品A和物品B具有較高的相似性使用為兩者經(jīng)常同時(shí)出現(xiàn)在同一個(gè)用戶(hù)的購(gòu)買(mǎi)列表中。
協(xié)同過(guò)濾算法存在很明顯的問(wèn)題:數(shù)據(jù)稀疏性和冷啟動(dòng)問(wèn)題。針對(duì)該問(wèn)題,可以使用物品的內(nèi)容信息解決這兩個(gè)問(wèn)題。物品的內(nèi)容可以通過(guò)向量空間模型表示,該模型會(huì)把物品表示成一個(gè)關(guān)鍵詞向量?;谖锲穬?nèi)容的推薦算法(ContentBaseKNN),通過(guò)計(jì)算物品間的相似度,將與用戶(hù)歷史購(gòu)買(mǎi)商品最相似的前K個(gè)商品推薦給用戶(hù)。
基于模型的推薦算法(ModelBaseRank),通過(guò)特征工程階段,提取盡可能多的特征對(duì)用戶(hù)和商品進(jìn)行畫(huà)像描述,對(duì)于某個(gè)用戶(hù),按照潛在購(gòu)買(mǎi)概率對(duì)所有商品進(jìn)行排序,將前K個(gè)商品推薦給用戶(hù)。
實(shí)驗(yàn)數(shù)據(jù)來(lái)自于2017年京東大數(shù)據(jù)比賽公開(kāi)的數(shù)據(jù)集中。該數(shù)據(jù)包括用戶(hù)3月至5月的行為動(dòng)作歷史記錄。通過(guò)數(shù)據(jù)預(yù)處理以及特征工程后,對(duì)于每條訓(xùn)練數(shù)據(jù),均包含200個(gè)特征,如果當(dāng)前用戶(hù)對(duì)購(gòu)買(mǎi)了當(dāng)前商品,將類(lèi)別設(shè)置為1,否則設(shè)置為0。實(shí)驗(yàn)采取離線實(shí)驗(yàn)方法,將數(shù)據(jù)分為訓(xùn)練集,測(cè)試集以及驗(yàn)證集,訓(xùn)練集用來(lái)對(duì)模型進(jìn)行訓(xùn)練,通過(guò)模型在測(cè)試集的性能來(lái)對(duì)模型的參數(shù)進(jìn)行設(shè)置,最后將所有的對(duì)比模型在驗(yàn)證集上運(yùn)行,對(duì)其性能進(jìn)行比較。在將數(shù)據(jù)代入模型前,對(duì)其進(jìn)行Softmax歸一化操作。
基于Keras深度學(xué)習(xí)框架,搭建三層RNN神經(jīng)網(wǎng)絡(luò)模型,每一層的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)中均包含LSTM神經(jīng)元。輸入層的神經(jīng)元個(gè)數(shù)需要與特征數(shù)量保持一致,所以輸入層的神經(jīng)元為200個(gè)。輸出層只需要輸出類(lèi)別信息,這里只有兩類(lèi),所以輸出層的輸出單元為2。需要重點(diǎn)考慮的是隱藏層的神經(jīng)元個(gè)數(shù),這個(gè)可以通過(guò)實(shí)驗(yàn)獲取。
設(shè)置每個(gè)神經(jīng)元的激活函數(shù)為常用的sigmoid函數(shù),模型的誤差函數(shù)設(shè)置為均分誤差MSE。根據(jù)這個(gè)誤差函數(shù),模型不斷地進(jìn)行迭代,直到神經(jīng)元之間的連接權(quán)值保持不變或者基本不變。根據(jù)MAP定義公式和Recall定義公式,可以得到如下實(shí)驗(yàn)對(duì)比結(jié)果如圖2、圖3所示。
由圖2和圖3可知,本文提出的基于LSTM的推薦算法能夠更加準(zhǔn)確的為用戶(hù)進(jìn)行商品推薦。用戶(hù)購(gòu)買(mǎi)下一個(gè)商品與之前的購(gòu)買(mǎi)行為有著非常緊密的聯(lián)系,但是其他三個(gè)模型沒(méi)有考慮到這一點(diǎn)。本文提出的模型,可以隱形地對(duì)用戶(hù)歷史購(gòu)買(mǎi)行為進(jìn)行時(shí)序建模,能夠更加準(zhǔn)確地對(duì)用戶(hù)行為進(jìn)行分析,因此具有較高的準(zhǔn)確性。
圖2 模型的平均準(zhǔn)確率
圖3 模型的召回率
本文提出了基于LSTM的商品推薦模型,基于大數(shù)據(jù)比賽公開(kāi)的數(shù)據(jù)集進(jìn)行了實(shí)驗(yàn)對(duì)比,根據(jù)MAP和Recall等準(zhǔn)確性評(píng)價(jià)指標(biāo)的實(shí)驗(yàn)結(jié)果,證明了該模型能夠更好地對(duì)用戶(hù)進(jìn)行商品推薦。該算法具備一定的擴(kuò)展性,不僅可以用于在線商城的商品推薦,同樣適用于視頻網(wǎng)站的視頻推薦以及音樂(lè)網(wǎng)站的音樂(lè)推薦。
參考文獻(xiàn):
[1]JB Schafer,F Dan,J.Collaborative Filtering Recommender Systems[J].Web,2007,22(1):291-324.
[2]江周峰,楊俊,鄂海紅.結(jié)合社會(huì)化標(biāo)簽的基于內(nèi)容的推薦算法[J].威者軟件,2015(1):1-5.
[3]李鵬飛,吳為民.基于混合模型推薦算法的優(yōu)化[J].計(jì)算機(jī)科學(xué),2014,41(2):68-71.
[4]K Greff,RK Srivastava,J Koutnik.LSTM:A Search Space Odyssey.IEEE Transactions on Neural Networks&Learning Systems,2017,28(10):2222-2232.