胡曉麗 張會(huì)兵 董俊超 吳冬強(qiáng)
1(桂林電子科技大學(xué)教學(xué)實(shí)踐部 廣西 桂林 541004)
2(桂林電子科技大學(xué)廣西可信軟件重點(diǎn)實(shí)驗(yàn)室 廣西 桂林 541004)
3(南寧地精科技有限公司 廣西 南寧 530000)
網(wǎng)民在電商平臺(tái)上選購(gòu)商品的過程中伴隨著瀏覽、收藏、放入購(gòu)物車等各種在線操作行為。當(dāng)前,在電商平臺(tái)上沉淀了海量的用戶購(gòu)物歷史數(shù)據(jù),深入分析這些數(shù)據(jù)能夠較好預(yù)測(cè)其購(gòu)物習(xí)慣、偏好或購(gòu)物意愿。特別地,對(duì)用戶購(gòu)買行為進(jìn)行預(yù)測(cè)有助于提升用戶購(gòu)物體驗(yàn),促進(jìn)電子商務(wù)可持續(xù)發(fā)展[1]。
用戶購(gòu)買行為預(yù)測(cè)是國(guó)內(nèi)外諸多學(xué)者關(guān)注的熱點(diǎn)[2-6]。文獻(xiàn)[3]使用決策樹與神經(jīng)網(wǎng)絡(luò)方法挖掘用戶購(gòu)物歷史行為數(shù)據(jù),預(yù)測(cè)用戶是否會(huì)購(gòu)買他們已經(jīng)添加到購(gòu)物車?yán)锏纳唐?。曾憲宇等[4]針對(duì)海量在線消費(fèi)行為數(shù)據(jù)準(zhǔn)確預(yù)測(cè)興趣偏好和購(gòu)物行為,提出融合了潛在因子和行為序列的效用函數(shù)選擇模型,與邏輯回歸(Logistic Regression,LR)和梯度提升決策樹(Gradient Boosting Decision Tree,GBDT)相比,該模型有更好的精確度和有效性。Liu等[5]利用大量的用戶瀏覽、點(diǎn)擊、購(gòu)買等行為數(shù)據(jù),通過支持向量機(jī)(Support Vector Machine,SVM)對(duì)未來網(wǎng)絡(luò)消費(fèi)者的購(gòu)買情況進(jìn)行預(yù)測(cè),得到了滿意的結(jié)果。祝歆等[6]融合邏輯回歸和支持向量機(jī)構(gòu)建了網(wǎng)絡(luò)購(gòu)物行為預(yù)測(cè)模型,取得了比單一模型更好的預(yù)測(cè)效果。
隨著電商平臺(tái)中行為數(shù)據(jù)的日益增加,應(yīng)用傳統(tǒng)機(jī)器學(xué)習(xí)算法的特征構(gòu)造和選擇需要花費(fèi)時(shí)間與人力急劇增加,并且不同的電子商務(wù)平臺(tái)中數(shù)據(jù)的格式和內(nèi)容有所不同,使得算法的移植性受限。同時(shí),對(duì)用戶購(gòu)買行為的獨(dú)立性假設(shè)也與用戶購(gòu)買的實(shí)際情況不符,導(dǎo)致其不能準(zhǔn)確預(yù)測(cè)不同時(shí)間段的用戶購(gòu)買行為。
為此,提出一種CNN-LSTM神經(jīng)網(wǎng)絡(luò)組合模型來預(yù)測(cè)用戶購(gòu)買行為。首先使用卷積神經(jīng)網(wǎng)絡(luò)層CNN從用戶歷史行為數(shù)據(jù)中自動(dòng)抽取高影響力的特征,然后通過長(zhǎng)短期記憶神經(jīng)網(wǎng)絡(luò)LSTM建立時(shí)間序列預(yù)測(cè)模型[7-9],最后通過全連接層(Fully Connected Layer,F(xiàn)C)輸出模型預(yù)測(cè)結(jié)果。以此實(shí)現(xiàn)特征自動(dòng)抽取和基于行為序列的用戶購(gòu)買行為預(yù)測(cè)。
圖1為融合用戶屬性、商品屬性和用戶行為特征的預(yù)測(cè)用戶購(gòu)買行為的CNN-LSTM模型總體架構(gòu)[8,15]。數(shù)據(jù)處理和特征構(gòu)建完成用戶歷史行為數(shù)據(jù)清洗,剔除刷單用戶、重大促銷等不具有一般規(guī)律的數(shù)據(jù),并采用分段下采樣方法進(jìn)行樣本均衡處理;CNN層接收影響用戶購(gòu)買行為的各種特征,如瀏覽數(shù)、購(gòu)買數(shù)、瀏覽購(gòu)買轉(zhuǎn)化率等,進(jìn)行特征選擇和特征優(yōu)化;LSTM依據(jù)CNN提取的用戶購(gòu)買行為序列中的重要特征進(jìn)行用戶購(gòu)買行為預(yù)測(cè);全連接層把LSTM單元輸出的高維用戶購(gòu)買行為信息壓縮為相應(yīng)的特征向量,實(shí)現(xiàn)對(duì)用戶購(gòu)買行為的分類表達(dá)。
圖1 CNN-LSTM用戶購(gòu)買行為預(yù)測(cè)模型
(1) 在線交互行為樣本均衡。用戶與商品的在線交互過程中,只有極少部分瀏覽行為會(huì)轉(zhuǎn)化為購(gòu)買行為,出現(xiàn)購(gòu)買樣本與未購(gòu)買樣本極度不均衡的問題[10]。目前,解決樣本不均衡問題的主流方法是上采樣和下采樣[11]。然而,上采樣方法很難適應(yīng)電子商務(wù)中用戶-商品交互數(shù)據(jù)結(jié)構(gòu)復(fù)雜、數(shù)據(jù)量大的特點(diǎn);下采樣方法因?yàn)閿?shù)據(jù)傾斜和信息丟失也不適合解決此類問題。為此,設(shè)計(jì)了如算法1所示的分段下采樣方法[11-12]:根據(jù)用戶購(gòu)買行為預(yù)測(cè)樣本數(shù)據(jù)具有時(shí)間衰減的特性,將購(gòu)買用戶和未購(gòu)買用戶歷史數(shù)據(jù)樣本以天為單位進(jìn)行分段。針對(duì)用戶樣本中的每個(gè)用戶找出其三個(gè)最近鄰用戶,若該用戶是未購(gòu)買用戶且其三個(gè)最近鄰用戶中有兩個(gè)以上是購(gòu)買用戶,則刪除它;反之,當(dāng)該樣本是購(gòu)買用戶并且其三個(gè)最近鄰中有兩個(gè)以上是未購(gòu)買用戶,則去除最近鄰中的未購(gòu)買用戶,其余情況均保留原始用戶樣本。
算法1分段下采樣樣本均衡算法。
輸入:用戶原始?xì)v史數(shù)據(jù)(D),數(shù)據(jù)記錄天數(shù)(T);
輸出:新用戶平衡歷史數(shù)據(jù)(D′);
算法流程:
1: D′=D/T
//對(duì)原始數(shù)據(jù)按照數(shù)據(jù)記錄天數(shù)進(jìn)行分段
2: for D(u)∈D′ do
//遍歷原始數(shù)據(jù)中的每個(gè)用戶
3: D′(u)=RandomChoose(D(u))
//隨機(jī)選擇任意用戶數(shù)據(jù)
4: if D′(u)為購(gòu)買用戶then
5: //判斷D′(u)最近鄰中是否有兩個(gè)以上未購(gòu)買用戶
if no-buy=sum(KNN(D′(u)))≥2 then
6: //刪除最近鄰中的未購(gòu)買用戶
delete(KNN(D′(u))no-buy)
7: else
8: save(D′(u))
//保留新用戶數(shù)據(jù)
9: else
10: if buy=sum(KNN(D′(u)))≥2 then
11: //刪除新用戶
delete(D′(u))
12: else
13: save(D′(u))
//保留新用戶數(shù)據(jù)
(2) 在線交互行為特征構(gòu)建。分析京東商城等的交互數(shù)據(jù)發(fā)現(xiàn):用戶行為數(shù)據(jù)分散在用戶屬性、商品信息、用戶對(duì)商品的行為等處[13-14]。原始數(shù)據(jù)中可用的特征數(shù)量極少,直接用于CNN-LSTM模型無法有效預(yù)測(cè)用戶購(gòu)買行為。為此,運(yùn)用統(tǒng)計(jì)分析構(gòu)建出如表1所示的用戶購(gòu)買行為預(yù)測(cè)特征。然后,將該特征輸入到CNN-LSTM模型中,CNN自動(dòng)進(jìn)行用戶歷史購(gòu)買行為的特征提取,可以有效簡(jiǎn)化傳統(tǒng)機(jī)器學(xué)習(xí)中特征提取和特征選擇過程[7]。
表1 用戶購(gòu)買行為預(yù)測(cè)特征
CNN由接收用戶歷史行為特征的輸入層、對(duì)接LSTM輸入層的輸出層以及多個(gè)隱藏層組成。其中,隱藏層包括卷積層和池化層,如圖2所示。
圖2 CNN-LSTM模型中CNN層
(1)
用戶行為特性經(jīng)過卷積操作后,傳入池化層中進(jìn)一步減少參數(shù)數(shù)量,壓縮數(shù)據(jù)維度,減少過擬合。用式(2)的最大池化方法篩選出對(duì)用戶購(gòu)買行為影響最大的特征信息,實(shí)現(xiàn)用戶購(gòu)買行為預(yù)測(cè)。
(2)
式中:T為池化區(qū)域的步長(zhǎng);R是池化尺寸。
LSTM接收CNN提取的重要特征向量序列,通過遺忘門、輸入門和輸出門改變細(xì)胞狀態(tài),更新以前隱藏狀態(tài)的內(nèi)存單元來保持用戶歷史購(gòu)買行為信息持續(xù)存在,更準(zhǔn)確地預(yù)測(cè)了用戶購(gòu)物行為[16-17]。LSTM單元結(jié)構(gòu)如圖3所示。
圖3 LSTM單元結(jié)構(gòu)圖
門控單元中的各個(gè)門和記憶細(xì)胞的表達(dá)式如下:
外部輸入門單元表達(dá)式:
(3)
遺忘門單元表達(dá)式:
(4)
細(xì)胞內(nèi)部狀態(tài)更新表達(dá)式:
(5)
輸出門單元表達(dá)式:
(6)
CN-LSTM模型的最后一層為全連接,該層將LSTM單元輸出的高維用戶歷史購(gòu)買行為信息壓縮為一個(gè)特征向量hI={h1,h2,…,hn},進(jìn)行用戶-商品對(duì)的分類,預(yù)測(cè)用戶是否會(huì)購(gòu)買某種商品,其函數(shù)表達(dá)式如下:
(7)
基于CNN-LSTM模型的用戶購(gòu)買行為預(yù)測(cè)算法如算法2所示。
算法2基于CNN-LSTM模型的用戶購(gòu)買行為預(yù)測(cè)算法。
輸入:用戶屬性數(shù)據(jù)(U)、商品屬性數(shù)據(jù)(M)和用戶對(duì)商品的行為數(shù)據(jù)(B);
輸出:用戶-商品對(duì)(U-M),是否購(gòu)買(buy)(1:表示購(gòu)買,0:表示未購(gòu)買);
算法流程:
1: read date={U,M,B}
//讀取輸入數(shù)據(jù),構(gòu)建用戶行為特征
//構(gòu)建用戶行為特征
3: //根據(jù)樣本均衡算法進(jìn)行用戶購(gòu)買行為數(shù)據(jù)樣本均衡
U*=choose(U)
4: //設(shè)置卷積核數(shù)量為32,卷積尺寸3,根據(jù)式(1)進(jìn)行卷積操作,得到特征向量矩陣
Cu=ReLU(Convolution(32,3,3))
5: //設(shè)置池化層尺寸為2,根據(jù)式(2)進(jìn)行池化操作,特征
//降維得到新特征向量Cu*
Cu*=MaxPooling(3,3)(Cu)
6: //根據(jù)式(3)到式(6)進(jìn)行LSTM層訓(xùn)練,得到特征向
//量矩陣Lu*
Lu*=LSTM(output=128,activation=′tanh′)(Cu*)
7: buy=softmax(Lu*)
//根據(jù)式(7)進(jìn)行用戶購(gòu)買行為分類
本文選用天池大賽中阿里巴巴移動(dòng)電商平臺(tái)數(shù)據(jù)集進(jìn)行測(cè)試,包括11月18日到12月18日的2 084 859條用戶歷史購(gòu)買行為數(shù)據(jù):包含用戶標(biāo)識(shí)、商品標(biāo)識(shí)等6個(gè)字段,19 972個(gè)用戶,1 054種類的422 858件商品,對(duì)12月19日用戶對(duì)商品的購(gòu)買行為進(jìn)行預(yù)測(cè)[14]。其中,行為信息有瀏覽、收藏、加購(gòu)物車、購(gòu)買四種方式。對(duì)清洗后的數(shù)據(jù)字段進(jìn)行組合優(yōu)化,刪除用戶行為時(shí)間、商品位置與用戶位置字段,增加購(gòu)買瀏覽轉(zhuǎn)化率、購(gòu)買收藏轉(zhuǎn)化率、購(gòu)買加購(gòu)轉(zhuǎn)換率三個(gè)與用戶購(gòu)買行為密切相關(guān)的3個(gè)字段,優(yōu)化后的數(shù)據(jù)字段如表2所示。
表2 測(cè)試數(shù)據(jù)字段
續(xù)表2
這里采用精確率P、召回率R和F1值三個(gè)指標(biāo)來評(píng)估預(yù)測(cè)模型性能。根據(jù)樣例真實(shí)類別與CNN-LSTM預(yù)測(cè)類別組合劃分為真正例(TP)、假正例(FP)、真負(fù)例(TN)、假負(fù)例(FN)四種類型,混淆矩陣如表3所示。預(yù)測(cè)結(jié)果在主對(duì)角線上取值越大,副對(duì)角線上取值越小的模型越好。將混淆矩陣數(shù)字化后即為精確率P、召回率R和F1值,計(jì)算公式分別為:
(8)
(9)
(10)
(1) CNN-LSTM模型驗(yàn)證。為了驗(yàn)證CNN-LSTM模型的性能,我們將CNN-LSTM模型與5種基線模型進(jìn)行比較。參數(shù)設(shè)置如表4和表5所示。
表4 機(jī)器學(xué)習(xí)算法參數(shù)設(shè)置
續(xù)表4
表5 神經(jīng)網(wǎng)絡(luò)參數(shù)設(shè)置
為了保證實(shí)驗(yàn)數(shù)據(jù)的準(zhǔn)確和客觀,將每個(gè)模型在同一訓(xùn)練和測(cè)試數(shù)據(jù)集上分別運(yùn)行10次,求得精確率、召回率和F1值的平均值作為模型最終結(jié)果,所得結(jié)果如表6所示。
表6 六種用戶購(gòu)買行為預(yù)測(cè)模型精確率、召回率和F1值對(duì)比
從表6中的實(shí)驗(yàn)結(jié)果可以看出,基于CNN-LSTM模型的F1值在訓(xùn)練集和測(cè)試集中均高于其余基準(zhǔn)模型,其原因主要為該模型集成了CNN在網(wǎng)絡(luò)特性提取、特征選擇方面和LSTM記憶機(jī)制處理時(shí)序模型方面的優(yōu)勢(shì)。XGBoost模型的F1值優(yōu)于CNN模型,低于LSTM模型的F1值,主要原因?yàn)閄GBoost是一種集成很多弱分類器的強(qiáng)分類器,在很多數(shù)據(jù)挖掘相關(guān)比賽中的表現(xiàn)多次優(yōu)于神經(jīng)網(wǎng)絡(luò)。此外,LSTM模型的表現(xiàn)優(yōu)于CNN和XGBoost模型的主要原因與本次的實(shí)驗(yàn)數(shù)據(jù)選擇密切相關(guān),本次采用的數(shù)據(jù)集是用戶購(gòu)買行為一個(gè)月的歷史數(shù)據(jù),屬于標(biāo)準(zhǔn)的時(shí)序數(shù)據(jù),LSTM模型較其余基準(zhǔn)模型更適合時(shí)序數(shù)據(jù)的分析和預(yù)測(cè)。
從表6中可見,6種模型在訓(xùn)練數(shù)據(jù)集上的F1值均優(yōu)于其在測(cè)試數(shù)據(jù)集上的F1值。主要原因是模型僅僅在測(cè)試數(shù)據(jù)集尋找購(gòu)買行為的樣本,其中有部分在12月19日購(gòu)買的用戶為新進(jìn)用戶,在訓(xùn)練集中的11月18日到12月18日(除11月11日外)一個(gè)月時(shí)間之內(nèi)沒有該用戶購(gòu)買歷史記錄,模型預(yù)測(cè)將其預(yù)測(cè)為未購(gòu)買用戶,導(dǎo)致模型預(yù)測(cè)結(jié)果的召回率降低,F(xiàn)1值也隨之下降。
為了更直觀地驗(yàn)證CNN-LSTM模型的穩(wěn)定性,將六種模型的10次訓(xùn)練數(shù)據(jù)集的F1值畫出折線圖分析波動(dòng)幅度,如圖4所示。
圖4 六種模型F1值變化曲線
可以看出,CNN-LSTM模型與支持向量、隨機(jī)森林和CNN模型在預(yù)測(cè)效果上有明顯優(yōu)勢(shì)。LSTM和XGBoost模型偶爾一次的F1值會(huì)優(yōu)于CNN-LSTM模型,然而LSTM和XGBoost模型的F1值跟隨實(shí)驗(yàn)次數(shù)波動(dòng)較大對(duì)于整體效果而言,CNN-LSTM模型處于高F1值的區(qū)間小幅度波動(dòng),模型穩(wěn)定性較好。
(2) “分段下采樣”樣本均衡算法驗(yàn)證。圖5為6種模型樣本均衡前后的F1值對(duì)比結(jié)果,可以看出,經(jīng)過分段下采樣樣本均衡算法的六種模型的F1值均有不同程度的提升。其中支持向量機(jī)、隨機(jī)森林、XGBoost、CNN、LSTM這5種模型的F1值提升比較明顯。實(shí)驗(yàn)結(jié)果表明,使用分段下采樣的樣本均衡算法對(duì)樣本不均衡的用戶行為歷史數(shù)據(jù)進(jìn)行均衡處理,對(duì)提升用戶購(gòu)買行為的預(yù)測(cè)準(zhǔn)確率有一定作用。
圖5 六種模型樣本均衡前后F1值對(duì)比
本文基于CNN-LSTM模型對(duì)用戶購(gòu)買行為進(jìn)行預(yù)測(cè),與現(xiàn)有的購(gòu)買行為預(yù)測(cè)模型相比,簡(jiǎn)化了特征選擇過程,提高了模型準(zhǔn)確性和穩(wěn)定性。分段下采樣樣本均衡算法有效解決了電商平臺(tái)中購(gòu)買樣本與未購(gòu)買樣本極度不均衡的問題,提升了CNN-LSTM模型預(yù)測(cè)的準(zhǔn)確率。然而,目前的模型尚未考慮用戶性別、年齡、商品評(píng)論以及“雙十一”“六一八”重大促銷活動(dòng)等信息對(duì)用戶購(gòu)買行為的影響。在后續(xù)研究中,我們將構(gòu)建一種能夠包含更多上述信息的用戶購(gòu)買行為預(yù)測(cè)模型,使其預(yù)測(cè)更精準(zhǔn)、實(shí)用。