本發(fā)明屬于人工智能技術(shù)領(lǐng)域,更具體地,涉及一種基于詞向量數(shù)據(jù)驅(qū)動的商品智能推薦方法。
背景技術(shù):
隨著互聯(lián)網(wǎng)的發(fā)展,電子商務(wù)作為新興產(chǎn)業(yè)應(yīng)運(yùn)而生,電子商務(wù)把商品從實(shí)體店搬運(yùn)到網(wǎng)絡(luò)的虛擬環(huán)境中,使得用戶足不出戶就可以購物。虛擬購物降低了賣家的成本,提高了買家的購物體驗(yàn)。但對于網(wǎng)絡(luò)購物的用戶來說,網(wǎng)絡(luò)上紛繁多樣的商品給挑選帶來了麻煩。解決這一問題的方法就是使用推薦系統(tǒng)為用戶進(jìn)行個性化的物品推薦。
傳統(tǒng)的個性化推薦系統(tǒng)有協(xié)同過濾算法、knn聚類算法、因子模型、受限玻爾茲曼機(jī)等。這些傳統(tǒng)方法往往精確度不夠高,不能完成精確推薦的目的。詞向量(word2vec)方法是google公司在2013年開源的一款將詞表征為實(shí)數(shù)值向量的高效工具,利用深度學(xué)習(xí)的思想,通過訓(xùn)練把對文本內(nèi)容的處理簡化為k維向量空間中的向量運(yùn)算,利用向量空間上的相似度來表示文本語義上的相似度;word2vec輸出的詞向量可以被用來做很多nlp相關(guān)的工作,比如聚類、找同義詞、詞性分析等等。將詞向量的方法應(yīng)用在推薦系統(tǒng)上,可提供高精確度的推薦,給用戶更好的體驗(yàn)。
技術(shù)實(shí)現(xiàn)要素:
針對現(xiàn)有技術(shù)的以上缺陷或改進(jìn)需求,本發(fā)明提供了一種基于詞向量數(shù)據(jù)驅(qū)動的商品智能推薦方法,其目的在于提供一種可用于電子商務(wù)平臺的簡單、有效、高精度的商品智能推薦方法。
為實(shí)現(xiàn)上述目的,按照本發(fā)明的一個方面,提供了一種基于詞向量數(shù)據(jù)驅(qū)動的商品智能推薦方法,包括如下步驟:
(1)預(yù)處理步驟:將用戶的購買行為日志及對商品評分?jǐn)?shù)據(jù)按比例隨機(jī)分為訓(xùn)練數(shù)據(jù)和測試數(shù)據(jù);
對訓(xùn)練數(shù)據(jù)中的異常數(shù)據(jù)、重復(fù)數(shù)據(jù)進(jìn)行篩除,對缺失值數(shù)據(jù)進(jìn)行填充或者篩除,對商品評分?jǐn)?shù)據(jù)進(jìn)行歸一化處理,得到預(yù)處理的數(shù)據(jù);其中,商品評分?jǐn)?shù)據(jù)通過統(tǒng)計(jì)用戶對商品的評分獲得;
(2)詞向量生成步驟:將預(yù)處理的數(shù)據(jù)中的用戶編號和商品編號作為訓(xùn)練數(shù)據(jù),分別進(jìn)行獨(dú)熱編碼處理,再乘以權(quán)重矩陣,將用戶編號和商品編號分別映射到低維、稠密的特征空間中形成詞向量;再將用戶詞向量和商品詞向量進(jìn)行融合,得到第一融合詞向量;其中,權(quán)重矩陣采用隨機(jī)初始化的權(quán)重矩陣;
(3)模型訓(xùn)練步驟:將上述的第一融合詞向量、歸一化后的商品評分?jǐn)?shù)據(jù)作為模型訓(xùn)練數(shù)據(jù),構(gòu)建模型的輸入層、若干隱藏層、輸出層,指定損失函數(shù)、最優(yōu)解方法、激活函數(shù),進(jìn)行訓(xùn)練,得到模型各層的權(quán)重;
(4)商品評分預(yù)測步驟:對測試數(shù)據(jù)中的異常數(shù)據(jù)、重復(fù)數(shù)據(jù)進(jìn)行篩除,對缺失值數(shù)據(jù)進(jìn)行填充或者篩除,得到預(yù)處理后的測試集;
將測試集中的用戶編號和物品編號作為步驟(2)訓(xùn)練數(shù)據(jù),進(jìn)入步驟(2),得到第二融合詞向量;
將第二融合詞向量作為模型訓(xùn)練數(shù)據(jù),輸入到步驟(3)所訓(xùn)練好的模型,得到用戶對新商品的歸一化預(yù)測評分,將該歸一化預(yù)測評分進(jìn)行反歸一化處理,得到預(yù)測評分。
優(yōu)選地,上述基于詞向量數(shù)據(jù)驅(qū)動的商品智能推薦方法,其步驟(2)包括以下子步驟:
(2.1)獨(dú)熱編碼:把每一個用戶編號作為一個詞,由所有的用戶編號組成一個用戶字段,用一個維度為用戶數(shù)的向量對每一個用戶編號進(jìn)行唯一標(biāo)識,獲得稀疏矩陣;其中,向量只包括一個為1的分量,其他分量全為0,分量1所對應(yīng)的位置為該用戶在用戶字典中的位置;
(2.2)初始化權(quán)重矩陣:隨機(jī)設(shè)置權(quán)重矩陣的初始值;
(2.3)將稀疏向量轉(zhuǎn)為詞向量:將步驟(2.1)獨(dú)熱編碼得到的稀疏矩陣乘上步驟(2.2)中所設(shè)置的初始權(quán)重矩陣,將原始的稀疏、高維向量映射到稠密、低維的特征空間中,分別獲得用戶詞向量和商品詞向量;
(2.4)平整向量:將步驟(2.3)獲得的低維的用戶詞向量和商品詞向量分別平鋪為一維向量;
(2.5)向量融合步驟:將步驟(2.4)獲得的一維的商品詞向量和用戶詞向量采用連接的方式進(jìn)行融合,獲得融合詞向量;
所述連接的方式是指在商品詞向量后面追加用戶詞向量,合為一個詞向量。
優(yōu)選地,上述基于詞向量數(shù)據(jù)驅(qū)動的商品智能推薦方法,其步驟(3)包括以下子步驟:
(3.1)隨機(jī)輸入置零:采用隨機(jī)選取的方式將步驟(2)得到的第一融合詞向量中的部分元素根據(jù)一定比例置零,以防止過擬合;該比例小于0.5;
(3.2)設(shè)定隱藏層參數(shù):設(shè)置網(wǎng)絡(luò)深度、每層神經(jīng)元數(shù)目以及激活函數(shù);
(3.3)前向傳播:將每一層的輸入數(shù)據(jù)乘以權(quán)重矩陣,并加上偏置量,計(jì)算得到該層的輸出值;其中,偏置量在最初設(shè)置神經(jīng)網(wǎng)絡(luò)參數(shù)時進(jìn)行隨機(jī)初始化,在參數(shù)訓(xùn)練中自動更新為較優(yōu)的結(jié)果;
(3.4)采用批量梯度下降法對神經(jīng)網(wǎng)絡(luò)每層的參數(shù)進(jìn)行反向傳播求解。
優(yōu)選地,上述基于詞向量數(shù)據(jù)驅(qū)動的商品智能推薦方法,其步驟(4)包括以下子步驟:
(4.1)對測試集的用戶編號、商品編號作為步驟(2)的輸入,獲得融合詞向量;
(4.2)將上述融合詞向量作為輸入數(shù)據(jù),輸入至步驟(3)得到的已訓(xùn)練模型中,獲得歸一化的預(yù)測評分;
(4.3)根據(jù)反歸一化方程將預(yù)測評分從[0,1]轉(zhuǎn)換為正常的評分值區(qū)域中。
優(yōu)選地,上述基于詞向量數(shù)據(jù)驅(qū)動的商品智能推薦方法,其步驟(4.3)還包括以下子步驟:
根據(jù)下式將反歸一化后獲得的float型評分轉(zhuǎn)換為int型,
其中s為評分最大值,t為反歸一化后的float評分值,round(t,-1)是取評分t四舍五入得到的整數(shù)。
總體而言,通過本發(fā)明所構(gòu)思的以上技術(shù)方案與現(xiàn)有技術(shù)相比,能夠取得下列有益效果:
(1)本發(fā)明所提供的基于詞向量數(shù)據(jù)驅(qū)動的商品智能推薦方法,把用戶編號、商品編號看作詞,把詞當(dāng)做特征,通過word2vec方法把特征映射為稠密空間的詞向量,為文本數(shù)據(jù)尋求更加深層次的特征表示,再運(yùn)用深度神經(jīng)網(wǎng)絡(luò)模型進(jìn)行對未知商品進(jìn)行評分預(yù)測,為系統(tǒng)向用戶進(jìn)行智能商品推薦提供依據(jù),具有較高的精確度和可解釋性;
(2)本發(fā)明所提供的基于詞向量數(shù)據(jù)驅(qū)動的商品智能推薦方法,對輸入樣本評分項(xiàng)先進(jìn)行歸一化,在預(yù)測后進(jìn)行反歸一化,并進(jìn)行取整處理,具有進(jìn)一步提高精確度的效果。
附圖說明
圖1是實(shí)施例提供的基于詞向量數(shù)據(jù)驅(qū)動的商品智能推薦方法的流程示意圖;
圖2是實(shí)施例提供的基于詞向量數(shù)據(jù)驅(qū)動的商品智能推薦方法進(jìn)行預(yù)處理的流程示意圖;
圖3是實(shí)施例提供的基于詞向量數(shù)據(jù)驅(qū)動的商品智能推薦方法的詞向量生成流程示意圖;
圖4是實(shí)施例提供的基于詞向量數(shù)據(jù)驅(qū)動的商品智能推薦方法的單神經(jīng)元示意圖;
圖5是實(shí)施例提供的基于詞向量數(shù)據(jù)驅(qū)動的商品智能推薦方法的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)示意圖。
具體實(shí)施方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。此外,下面所描述的本發(fā)明各個實(shí)施方式中所涉及到的技術(shù)特征只要彼此之間未構(gòu)成沖突就可以相互組合。
實(shí)施例提供的基于詞向量數(shù)據(jù)驅(qū)動的商品智能推薦方法,其流程如圖1所示,包括以下步驟:
(1)預(yù)處理步驟,其具體流程如圖2所示;
本實(shí)施例中以netflixprize競賽中的cf數(shù)據(jù)集為例來進(jìn)行闡述;cf數(shù)據(jù)集的數(shù)據(jù)格式為[uid,iid,score];其中,uid是用戶編號,為整數(shù)類型;iid是商品編號,為整數(shù)類型;score是用戶對商品評分,為整數(shù),共5檔,分別為[1,2,3,4,5],評分越高表示對商品評價越好;
由于輸入的數(shù)據(jù)量過大,直接將原始數(shù)據(jù)加載至內(nèi)存的方式對硬件要求會計(jì)較高,浪費(fèi)大量內(nèi)存;因此采用流讀入的方式,將原始數(shù)據(jù)的某一個樣本數(shù)據(jù)讀入進(jìn)行處理后,再讀取下一個樣本數(shù)據(jù)進(jìn)行處理;這種方式雖然速度慢一些,但對內(nèi)存需求大大減少;
對重復(fù)、異常、缺失的樣本數(shù)據(jù)進(jìn)行刪除;對輸入的商品評分進(jìn)行歸一化,即變換到[0,1]區(qū)間;本實(shí)施例中,根據(jù)下式進(jìn)行歸一化:
其中,x是指評分,f(x)是指歸一化后的評分。
(2)詞向量生成,其具體流程如圖3所示;
輸入預(yù)處理訓(xùn)練數(shù)據(jù)后,分別對用戶編號和商品編號進(jìn)行獨(dú)熱編碼處理;以用戶編號為詞庫,詞庫長度為用戶數(shù)量nuser,將每一個用戶編號作為一個詞,將用戶編號按照升序排列,每個用戶編號所處位置即是該用戶編號在詞庫中的位置;對商品編號采用同樣方法處理,生成商品詞向量;本步驟包括如下子步驟:
(2.1)獨(dú)熱編碼子步驟:假設(shè)用戶編號詞庫為{u0,u1,u2,...,un-1,un},對于第k個用戶的獨(dú)熱編碼向量為<0,0,0,...,1,...0>,該向量僅含一個元素為1,其余均為0,且為1的元素下標(biāo)為k-1,;對商品做同樣處理;
(2.2)初始化權(quán)重矩陣步驟:初始化
(2.3)稀疏向量轉(zhuǎn)為詞向量:將步驟(2.1)中所述的獨(dú)熱編碼得到的用戶向量矩陣乘以(2.2)中所設(shè)置的用戶初始權(quán)重矩陣mu,將原始的稀疏、高維向量映射到稠密、低維的特征空間中,獲得用戶詞向量;
通過將步驟(2.1)獨(dú)熱編碼得到的物品向量矩陣乘上步驟(2.2)中所設(shè)置的物品初始權(quán)重矩陣
(2.4)平整向量步驟:將步驟(2.3)中的低維向量平鋪為一維向量;
(2.5)向量融合步驟:將步驟(2.4)中商品詞向量和物品詞向量通過連接的方式進(jìn)行融合,即在商品詞向量后面追加物品詞向量,合為一個詞向量,得到用戶-商品詞向量;
(3)模型訓(xùn)練步驟:輸入步驟(2)得到的詞向量,通過神經(jīng)網(wǎng)絡(luò)訓(xùn)練模型,得到模型參數(shù),具體包含以下子步驟:
(3.1)隨機(jī)輸入置零:隨機(jī)的將步驟(2)中得到的融合詞向量中的部分元素根據(jù)比例置零,以防止過擬合;本實(shí)施例中,該比例在[0.2~0.5]的范圍選擇;
(3.2)設(shè)定隱藏層參數(shù)步驟:設(shè)置網(wǎng)絡(luò)深度、每層神經(jīng)元數(shù)目以及激活函數(shù);
(3.3)前向傳播步驟:以下以一個3層神經(jīng)網(wǎng)絡(luò)為例說明該步驟的工作原理;
本實(shí)施例中設(shè)輸入的訓(xùn)練樣本為(x(i),y(i)),輸出為hw,b(x),其中w和b為模型參數(shù);
以圖4所示的單神經(jīng)元為例說明輸入經(jīng)過一層神經(jīng)元后的輸出結(jié)果,該圖中,“神經(jīng)元”是一個以x1、x2、x3及截距+1為輸入值的運(yùn)算單元,其輸出為
如圖5所示為在本實(shí)施例中的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)示意圖;神經(jīng)網(wǎng)絡(luò)就是將許多個單一“神經(jīng)元”聯(lián)結(jié)在一起;一個“神經(jīng)元”的輸出可以是另一個“神經(jīng)元”的輸入;圖5中使用圓圈來表示神經(jīng)網(wǎng)絡(luò)的輸入,標(biāo)上”+1”的圓圈稱為偏置節(jié)點(diǎn),也就是截距項(xiàng),其中“l(fā)ayerl1”是輸入層,“l(fā)ayerl3”是輸出層,僅有一個”layerl2”是隱藏層;但實(shí)際情況中,隱藏層往往不止一個;圖5中共有3個輸入單元(這里偏置單元不包含在內(nèi)),4個隱藏單元和1個輸出單元。
以nl表示網(wǎng)絡(luò)層數(shù),則本示例共nl=3,將第l層記為ll,則上例中l(wèi)1是輸入層,l2是隱藏層,l3是輸出層。則該神經(jīng)網(wǎng)絡(luò)的參數(shù)有(w,b)=(w(1),b(1),w(2),b(2)),其中
用
用
則有:
將激活函數(shù)f(.)擴(kuò)展為向量(用分量的形式),
f(|z1,z2,z3|)=|f(z1),f(z2),f(z3)|
將上式簡化為:
z(2)=w(1)x+b(1)
a(2)=f(z(2))
z(3)=w(2)a(2)+b(2)
hw,b(x)=a(3)=f(z(3))
按照下式求得各層輸出,得到最終的輸出結(jié)果;
z(l+1)=w(l)a(l)+b(l)
a(l+1)=f(z(l+1))
(3.4)反向傳播求參步驟:假設(shè)有固定樣本集{(x(1),y(1)),...,(x(m),y(m))}包含m個樣例;
以下采用批量梯度下降法對每層的參數(shù)w,b進(jìn)行求解。
對于單個樣例(x,y),其代價函數(shù)設(shè)為:
則對于m個樣例,整體的代價函數(shù)為:
求解參數(shù)的方法即是最小化代價函數(shù);對j(w,b)求偏導(dǎo)數(shù)得:
對于第nl層(輸出層)的每個輸出單元i,根據(jù)以下公式計(jì)算殘差:
對于l=nl-1,nl-2,nl-3,...,2的各個層,第l層的第i個節(jié)點(diǎn)的殘差計(jì)算方法如下式:
則計(jì)算出偏導(dǎo)數(shù)公式為:
更新權(quán)重參數(shù)方法為:
其中α為學(xué)習(xí)率,設(shè)定一定的迭代次數(shù),反復(fù)迭代直至損失函數(shù)到達(dá)某閾值或者不再減小為止。
本實(shí)施例中,梯度下降法的偽代碼如下:
a.對于所有的l,令δw(l):=0,δb(l):=0;
b.對于i=1到m,計(jì)算
c.更新權(quán)重參數(shù)
(4)評分預(yù)測步驟:具體包括以下子步驟:
(4.1)對測試集的用戶編號、商品編號作為步驟(2)中輸入,獲得用戶-商品詞向量;
(4.2)將步驟(4.1)得到的用戶-商品詞向量作為輸入數(shù)據(jù),輸入至步驟(3)得到的已訓(xùn)練模型中,獲得歸一化的預(yù)測評分。
(4.3)由于步驟(4.2)中獲得的歸一化預(yù)測評分進(jìn)行反歸一化和取整處理,獲得實(shí)際評分。
本領(lǐng)域的技術(shù)人員容易理解,以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。