葉志宇 馮愛(ài)民 高航
摘要:針對(duì)輕量化梯度促進(jìn)機(jī)(LightGBM)等集成學(xué)習(xí)模型只對(duì)數(shù)據(jù)信息進(jìn)行一次挖掘,無(wú)法自動(dòng)地細(xì)化數(shù)據(jù)挖掘粒度或通過(guò)深入挖掘得到更多的數(shù)據(jù)中潛在內(nèi)部關(guān)聯(lián)信息的問(wèn)題,提出了深度LightGBM集成學(xué)習(xí)模型,該模型由滑動(dòng)窗口和加深兩部分組成。首先,通過(guò)滑動(dòng)窗口使得集成學(xué)習(xí)模型能夠自動(dòng)地細(xì)化數(shù)據(jù)挖掘粒度,從而更加深入地挖掘數(shù)據(jù)中潛在的內(nèi)部關(guān)聯(lián)信息,同時(shí)賦予模型一定的表示學(xué)習(xí)能力。然后,基于滑動(dòng)窗口,用加深步驟進(jìn)一步地提升模型的表示學(xué)習(xí)能力。最后,結(jié)合特征工程對(duì)數(shù)據(jù)集進(jìn)行處理。在谷歌商店數(shù)據(jù)集上進(jìn)行的實(shí)驗(yàn)結(jié)果表明,所提深度集成學(xué)習(xí)模型相較原始集成學(xué)習(xí)模型的預(yù)測(cè)精度高出6.16個(gè)百分點(diǎn)。所提方法能夠自動(dòng)地細(xì)化數(shù)據(jù)挖掘粒度,從而獲取更多數(shù)據(jù)集中的潛在信息,并且深度LightGBM集成學(xué)習(xí)模型與傳統(tǒng)深度神經(jīng)網(wǎng)絡(luò)相比是非神經(jīng)網(wǎng)絡(luò)的深度模型,參數(shù)更少,可解釋性更強(qiáng)。
關(guān)鍵詞:機(jī)器學(xué)習(xí);輕量化梯度促進(jìn)機(jī);數(shù)據(jù)挖掘;深度模型;集成學(xué)習(xí);特征工程
中圖分類號(hào): TP391.4文獻(xiàn)標(biāo)志碼:A
Customer purchasing power prediction of Google store based on deep LightGBM
ensemble learning model
YE Zhiyu, FENG Aimin*, GAO Hang
(College of Computer Science and Technology, Nanjing University of Aeronautics and Astronautics, Nanjing Jiangsu 211100, China)
Abstract: The ensemble learning models such as Light Gradient Boosting Machine (LightGBM) only mine data information once, and cannot automatically refine the granularity of data mining or obtain more potential internal correlation information in the data by deep digging. In order to solve the problems, a deep LightGBM ensemble learning model was proposed, which was composed of sliding window and deepening. Firstly, the ensemble learning model was able to automatically refine the granularity of data mining through the sliding window, so as to further mine the potential internal correlation information in the data and a certain expressive learning ability was given to the model. Secondly, based on the sliding window, the deepening step was used to further improve the representation learning ability of the model. Finally, the dataset was processed with feature engineering. The experimental results on the dataset of Google store show that, the prediction accuracy of the proposed deep ensemble learning model is 6.16 percentage points higher than that of original ensemble learning model. The proposed method can automatically refine the granularity of data mining, so as to obtain more potential information in the dataset. Moreover, compared with the traditional deep neural network, the deep LightGBM ensemble learning model has fewer parameters and better interpretability as a non-neural network.
Key words: machine learning; Light Gradient Boosting Machine (LightGBM); data mining; deep model; ensemble learning; feature engineering
0引言
今廣泛應(yīng)用于數(shù)據(jù)挖掘任務(wù)的集成學(xué)習(xí)[1]模型主要有隨機(jī)森林(Random Forest, RF)[2]、輕量化梯度促進(jìn)機(jī)(Light Gradient Boosting Machine, LightGBM)[3]、Catboost(gradient boosting with Categorical features support)[4]。隨機(jī)森林屬于集成學(xué)習(xí)中的bagging[5],而LightGBM、Catboost屬于集成學(xué)習(xí)中的boosting[6],都是基于梯度促進(jìn)決策樹(shù)(Gradient Boosting Decision Tree, GBDT)[7]的集成學(xué)習(xí)模型,且具有預(yù)測(cè)精度高、訓(xùn)練速度快、占用內(nèi)存少等優(yōu)點(diǎn),成為解決數(shù)據(jù)挖掘問(wèn)題的主流方案;但目前對(duì)于集成學(xué)習(xí)模型的應(yīng)用,大都只是將所得到的特征集整塊地放入模型中進(jìn)行訓(xùn)練學(xué)習(xí),其對(duì)數(shù)據(jù)關(guān)聯(lián)關(guān)系只進(jìn)行一次挖掘,挖掘粒度較為粗糙,不具備深度挖掘的能力,因而亦無(wú)法自動(dòng)挖掘出數(shù)據(jù)間更為深入的關(guān)聯(lián)關(guān)系。
為了獲取更多的數(shù)據(jù)關(guān)聯(lián)信息,目前主流方法都是依靠人工設(shè)計(jì)的特征工程對(duì)原始特征集進(jìn)行處理,將處理后的數(shù)據(jù)再整體放入集成學(xué)習(xí)模型中進(jìn)行訓(xùn)練。人工設(shè)計(jì)的特征工程非常依賴設(shè)計(jì)人員的經(jīng)驗(yàn)積累以及大量的數(shù)據(jù)分析工作,因而,如何能夠使得LightGBM等模型自動(dòng)地獲取深度信息成為關(guān)鍵。
對(duì)于如何自動(dòng)地獲取數(shù)據(jù)中的深度信息,深度網(wǎng)絡(luò)在圖像處理以及自然語(yǔ)言處理任務(wù)上都獲得了很出色的成績(jī)。例如:長(zhǎng)短期記憶(Long Short Term Memory, LSTM)模型[8]及其變型[9-11]被廣泛地應(yīng)用于自然語(yǔ)言處理等任務(wù)上;深度卷積神經(jīng)網(wǎng)絡(luò)(Deep Convolutional Neural Network, DeepCNN)[12]則被廣泛地應(yīng)用于圖像處理任務(wù)中。其中,表示學(xué)習(xí)能力[13]被公認(rèn)為是深度網(wǎng)絡(luò)中不可或缺的一部分。若能夠賦予集成學(xué)習(xí)模型一定的表示學(xué)習(xí)能力,將使其能夠自動(dòng)地挖掘數(shù)據(jù)中更為深入的關(guān)聯(lián)關(guān)系。
深度森林[14]的提出給深度模型帶來(lái)了新的思考方向——能夠做成深度形式的模型不只有神經(jīng)網(wǎng)絡(luò)。借鑒深度森林的思想,本文通過(guò)將LightGBM、Catboost模型做成深度的形式,從而使其具有挖掘數(shù)據(jù)中深度信息的能力。首先,通過(guò)加入滑動(dòng)窗口對(duì)特征集進(jìn)行劃分,細(xì)化數(shù)據(jù)挖掘粒度,從而使得模型能夠潛在地具有情境意識(shí)或結(jié)構(gòu)意識(shí);然后,在滑動(dòng)窗口的基礎(chǔ)上,通過(guò)加深操作進(jìn)一步地提升模型的表示學(xué)習(xí)能力。與原始集成學(xué)習(xí)模型相比,本文所提的深度集成學(xué)習(xí)模型能夠自動(dòng)地發(fā)掘更多特征之間的潛在關(guān)系,對(duì)數(shù)據(jù)潛在信息進(jìn)行深入挖掘,而不是僅停留在已有的特征層面上;并且,所使用的基礎(chǔ)模型是集成樹(shù)模型,樹(shù)模型與其他模型相比具有更好的可解釋性,其樹(shù)節(jié)點(diǎn)的劃分思想與人類的思考過(guò)程是非常相似的,有助于對(duì)模型的分析和研究。
除此之外,本文還提出了半自動(dòng)化特征工程來(lái)進(jìn)一步強(qiáng)化模型的挖掘信息能力。在數(shù)據(jù)挖掘領(lǐng)域,特征工程往往起著很重要的作用,不同特征工程得到的特征集不同,一個(gè)好的特征工程可以揭示數(shù)據(jù)集中更多的關(guān)聯(lián)信息,從而使得機(jī)器學(xué)習(xí)模型得到更加精準(zhǔn)的預(yù)測(cè);而特征工程[15]的設(shè)計(jì)又非常依賴人工分析,一旦涉及到人工的方式就非常耗時(shí)耗力,特別是當(dāng)數(shù)據(jù)量非常龐大的時(shí)候,因而如果能通過(guò)自動(dòng)化生成特征和人工分析相結(jié)合的方式來(lái)獲取更多潛藏信息將會(huì)大幅減少人工操作量,同時(shí)還能提高預(yù)測(cè)的精確度。最后,將本文所提的方法應(yīng)用在谷歌商店顧客數(shù)據(jù)集上,驗(yàn)證了本文方法的可行性、有效性。
1.1LightGBM
LightGBM是對(duì)GBDT的高效實(shí)現(xiàn),盡管已經(jīng)有了一些關(guān)于GBDT實(shí)現(xiàn)的算法,例如XGBoost(eXtreme Gradient Boosting)[16]、pGBRT(parallel Gradient Boosted Regression Trees)[17]、scikit-learn(machine learning in Python)[18]等;但是當(dāng)數(shù)據(jù)的特征維度高、樣本個(gè)數(shù)多時(shí),它們的表現(xiàn)就不盡如人意了。其中,最主要的原因在于以上的實(shí)現(xiàn)算法都需要對(duì)所有數(shù)據(jù)樣本遍歷,然后估計(jì)所有可能劃分點(diǎn)的信息增益,這項(xiàng)操作是非常耗時(shí)的。因而,LightGBM提出了GOSS(Gradient-based One-Side Sampling)和EFB(Exclusive Feature Building)兩種解決方法。
GOSS算法(算法1)排除了大部分具有小梯度的樣本,只使用剩余的樣本來(lái)進(jìn)行信息增益估計(jì),LightGBM[3]研究表明:具有較大梯度的樣本在計(jì)算信息增益的時(shí)候扮演著更加重要的角色,GOSS可以通過(guò)更加小規(guī)模的數(shù)據(jù)來(lái)獲得非常精準(zhǔn)的信息增益計(jì)算。
EFB算法(算法2和算法3)通過(guò)將互斥的特征捆綁在一起,來(lái)減少特征數(shù)目?;コ馓卣饕馕吨鼈儙缀鹾苌偻瑫r(shí)出現(xiàn)非零值,并且LightGBM也表明:找到最優(yōu)互斥特征捆綁是NP(Non-deterministic Polynomial)難問(wèn)題,但是貪心算法能夠獲得非常好的近似概率。
算法1GOSS。
輸入訓(xùn)練數(shù)據(jù)I, 迭代次數(shù)d,大梯度數(shù)據(jù)采樣率a,小梯度數(shù)據(jù)采樣率b,損失函數(shù)loss,弱學(xué)習(xí)器L。程序前
models←{}, fact←(1-a)/b
1)topN←a×len(I),randN← b×len(I)
2)for i=1 to d do
3)preds←models.predict(I)
4)g← loss(I,preds),w←{1,1,…}
5)sorted← GetSortedIndices(abs(g))
6)topSet← sorted[1: topN]
7)randSet← RandomPick(sorted[topN:len(I)],randN)
8)usedSet← topSet+randSet
9)w[randSet]×=fact∥給小梯度數(shù)據(jù)分配權(quán)重參數(shù)
10)newModel←L(I[usedSet],-g[usedSet],w[usedSet])
11)models.append(newModel)程序后
算法2Greedy Bundling。
輸入特征集F,最大沖突計(jì)數(shù)K;
輸出捆綁集bundles。程序前
構(gòu)造圖G
1)searchOrder←G.sortByDegree()
2)bundles←{},bundlesConflict←{}
3)for i in searchOrder do
4)needNew← True
5)for j=1 to len(bundles) do
6)cnt←ConflictCnt(bundles[j],F(xiàn)[i])
7)if cnt+bundlesConflict[i]≤K then
8)bundles[j].add(F[i]),needNew← False
9)break
10)if needNew then
11)將F[i]作為新的捆綁束bundle加入到捆綁集bundles中程序后算法3Merge Exclusive Features。
輸入數(shù)據(jù)的數(shù)目numData,一束關(guān)于互斥特征的捆綁特征F;
輸出新的直方圖newBin,直方圖區(qū)間binRanges。程序前
1)binRanges←{0},totalBin←0
2)for? f? in F do
3)totalBin+=f.numBin
4)binRanges.append(totalBin)
5)newBin←new Bin(numData)
6)for i=1 to numData do
7)newBin[i]←0
8)for j=1 to len(F) do
9)if F[j].bin[i]≠0 then
10)newBin[i]←F[j].bin[i]+binRanges[j]程序后
1.2Catboost
首先,該模型通過(guò)在訓(xùn)練的過(guò)程中處理和利用類屬特征,而不是在預(yù)處理階段進(jìn)行此操作。其次,該模型使用了新的模式來(lái)計(jì)算葉節(jié)點(diǎn)的值,從而減少了過(guò)擬合現(xiàn)象。對(duì)于某個(gè)樣本的某個(gè)類屬特征的替換式如下:
∑p-1j=1[xσj,k=xσp,k]Yσj+a·P∑p-1j=1[xσj,k=xσp,k]+a
2本文模型
本文提出的深度集成學(xué)習(xí)模型主要由兩部分組成:
1)滑動(dòng)窗口。在原始特征向量上進(jìn)行滑動(dòng),自動(dòng)地將原始特征集分割成多個(gè)不同的窗口,從而實(shí)現(xiàn)進(jìn)行深度特征抽取,滑動(dòng)窗口的大小自主選擇,步長(zhǎng)固定為1;假設(shè),全特征向量用full_cols表示,滑動(dòng)窗口大小為window_size,總的滑動(dòng)窗口數(shù)目為len(full_cols)-window_size+1。
2)加深。將第一塊中每個(gè)窗口所產(chǎn)生的預(yù)測(cè)結(jié)果串聯(lián)成一個(gè)全新的特征向量,再將新的特征向量放入所選基礎(chǔ)模型中進(jìn)行訓(xùn)練,這樣會(huì)產(chǎn)生預(yù)測(cè)結(jié)果,將預(yù)測(cè)結(jié)果與輸入的特征向量串聯(lián)作為下一層的輸入;可以不斷迭代來(lái)加深模型深度。
2.1滑動(dòng)窗口
為了使得集成學(xué)習(xí)模型能夠自動(dòng)地細(xì)化數(shù)據(jù)挖掘粒度并且在數(shù)據(jù)集上潛在地具有情境意識(shí)或結(jié)構(gòu)意識(shí),本文提出將滑動(dòng)窗口(對(duì)應(yīng)圖1中內(nèi)部和外圍虛線框)預(yù)測(cè)結(jié)果以及原始特征向量串聯(lián)作為新的特征向量,具體算法流程見(jiàn)算法4。并且,在進(jìn)行訓(xùn)練的時(shí)候都采用K折交叉驗(yàn)證方式進(jìn)行訓(xùn)練,避免出現(xiàn)過(guò)擬合現(xiàn)象。
算法4滑動(dòng)窗口產(chǎn)生新特征。
輸入原始數(shù)據(jù)集為D,window size為w;
輸出將full_cols與each_time_cols預(yù)測(cè)結(jié)果串聯(lián)。程序前
1)full_cols=D.columns
2)window_size=len(full_cols)
3)LightGBM/Catboost對(duì)window_size數(shù)據(jù)進(jìn)行訓(xùn)練,產(chǎn)生預(yù)測(cè)結(jié)果
4)window_size=w
5)for i in range(len(full_cols)-window_size+1)
6)each_time_cols=full_cols[i:i+window_size]
7)LightGBM/Catboost對(duì)each_time_cols數(shù)據(jù)進(jìn)行訓(xùn)練,并產(chǎn)
生預(yù)測(cè)結(jié)果程序后
從圖1和算法4可以清晰地看到,圖1中最外圍虛線框?qū)?yīng)著算法4中第2)步:全特征訓(xùn)練及其預(yù)測(cè)結(jié)果,圖1中內(nèi)部虛線框?qū)?yīng)著算法4中第4)步:滑動(dòng)窗口訓(xùn)練及其預(yù)測(cè)結(jié)果,圖1的最右輸出向量對(duì)應(yīng)著算法4的輸出;無(wú)論是全特征還是滑動(dòng)窗口都可看作滑動(dòng)窗口,只是window_size不同。
根據(jù)最終評(píng)判指標(biāo)的變化來(lái)對(duì)window_size進(jìn)行調(diào)整,例如:window_size從小到大進(jìn)行變化,當(dāng)window_size偏小時(shí),所產(chǎn)生的新特征向量維數(shù)就更大;若在增大window_size時(shí)預(yù)測(cè)誤差越來(lái)越小,則繼續(xù)增大window_size,直到預(yù)測(cè)誤差增加時(shí)停止增加window_size。
2.2加深
為了使本文所提的算法也能具有一定的深度網(wǎng)絡(luò)中的表示學(xué)習(xí)能力[13],因而在滑動(dòng)窗口的基礎(chǔ)上,對(duì)于模型層次進(jìn)行加深,通過(guò)加深模型層次的方式來(lái)進(jìn)一步提升算法表示學(xué)習(xí)能力,具體算法步驟見(jiàn)算法5。
算法5深度LightGBM/Catboost集成學(xué)習(xí)模型。
輸入滑動(dòng)窗口輸出的特征向量,深度參數(shù)Depth;
輸出學(xué)習(xí)模型預(yù)測(cè)值。程序前
1)for i in range(Depth)
2)輸入向量放入LightGBM/Catboost模型進(jìn)行訓(xùn)練
3)if i==0
4)預(yù)測(cè)結(jié)果作為新特征與輸入向量串聯(lián)
5)else
6)預(yù)測(cè)結(jié)果覆蓋輸入向量中對(duì)應(yīng)位置特征值
7)更新過(guò)的輸入向量作為下一層輸入向量程序后
在該部分,本文首先將滑動(dòng)窗口部分的輸出特征向量作為輸入。對(duì)于LightGBM/Catboost+滑動(dòng)窗口模型進(jìn)行加深的算法5,其算法流程為:首先,將輸入特征向量放入學(xué)習(xí)模型進(jìn)行訓(xùn)練,同樣也將采用K折交叉驗(yàn)證進(jìn)行訓(xùn)練。其次,如若當(dāng)前所處深度等于1,則將學(xué)習(xí)模型的預(yù)測(cè)結(jié)果和輸入特征向量串聯(lián);如若當(dāng)前所處深度大于1,則將學(xué)習(xí)模型的預(yù)測(cè)結(jié)果覆蓋到輸入特征向量中存儲(chǔ)上一層預(yù)測(cè)結(jié)果的位置。圖2中每層輸出特征向量的第一個(gè)虛線框代表著每層學(xué)習(xí)模型的預(yù)測(cè)結(jié)果。最后,達(dá)到指定深度時(shí),將學(xué)習(xí)模型的預(yù)測(cè)結(jié)果輸出。圖2所展示的是Depth=2時(shí)模型結(jié)構(gòu),通過(guò)控制Depth參數(shù)來(lái)調(diào)整模型的深度。
深度的確定依據(jù)最終預(yù)測(cè)結(jié)果的精度,若層次過(guò)深、精度下降,則減少加深層次、調(diào)整深度以達(dá)到最優(yōu)精度輸出。
除了將LightGBM和Catboost做成深度形式以外,還將LightGBM+Catboost集合做成深度形式。在對(duì)LightGBM+Catboost進(jìn)行加深之前,首先,按照算法4分別生成對(duì)應(yīng)于LightGBM和Catboost的全特征預(yù)測(cè)值以及滑動(dòng)窗口預(yù)測(cè)值,假設(shè):len(full_cols)=100,window_size=25,那么滑動(dòng)窗口階段所輸出的特征向量維數(shù)d=len(full_cols)+2+2(len(full_cols)-window_size+1)=254;接下來(lái),關(guān)于深度模型的具體操作見(jiàn)算法6。算法6中i==0的情況對(duì)應(yīng)著圖3中Depth=1的過(guò)程,在圖3中可以清楚地看到,Depth=1時(shí),輸入向量和輸出向量之間的差異。
算法6深度LightGBM+Catboost集成學(xué)習(xí)模型。
輸入滑動(dòng)窗口輸出的特征向量,深度參數(shù)Depth;
輸出加權(quán)求和的預(yù)測(cè)結(jié)果。程序前
1)for i in range(Depth)
2)輸入向量分別放入LightGBM和Catboost學(xué)習(xí)模型進(jìn)行訓(xùn)練
3)if i==0
4)LightGBM和Catboost預(yù)測(cè)結(jié)果分別作為新特征與輸入向量串聯(lián)
5)else
6)LightGBM和Catboost預(yù)測(cè)結(jié)果分別覆蓋輸入向量中對(duì)應(yīng)位置特征值
7)更新過(guò)的輸入向量作為下一層輸入向量
8)LightGBM和Catboost預(yù)測(cè)結(jié)果分別乘上wlgb、wcat,相加得到最終預(yù)測(cè)結(jié)果程序后
2.3特征工程
將通過(guò)分析谷歌商店顧客數(shù)據(jù)集中的各個(gè)特征在LightGBM中重要性表現(xiàn)來(lái)進(jìn)行特征工程操作。對(duì)原始特征集中幾個(gè)較重要的特征進(jìn)行解釋說(shuō)明,如表1所示。
首先,將原始谷歌商店顧客數(shù)據(jù)集放入LightGBM訓(xùn)練的結(jié)果如表2所示。
從表2可以發(fā)現(xiàn),關(guān)于pageviews(每次會(huì)話中頁(yè)面瀏覽次數(shù))的特征權(quán)值最大,而在原始數(shù)據(jù)集中對(duì)于pageviews的操作有sum、count、mean。通過(guò)分析可知,進(jìn)行上述操作的特征都是屬于數(shù)值型特征,對(duì)于數(shù)值計(jì)算的指標(biāo)不僅僅是以上3種。
于是,本文的特征工程自動(dòng)地對(duì)數(shù)值型特征進(jìn)行處理,對(duì)其進(jìn)行sum、count、mean、median、std統(tǒng)計(jì)分析,最終獲得基于數(shù)值型特征的額外統(tǒng)計(jì)分析特征。而原始數(shù)據(jù)集中對(duì)于totals_newVisits(每次會(huì)話中新訪問(wèn)次數(shù)總和)卻沒(méi)有進(jìn)行處理,通過(guò)分析pageviews產(chǎn)生衍生特征的過(guò)程,對(duì)totals_newVisits按照network_domain(網(wǎng)絡(luò)管區(qū))、region(地理區(qū)域)分組進(jìn)行count、sum、mean、median、std操作來(lái)獲取額外的新特征。在進(jìn)行上述兩個(gè)操作后,再將獲得的新數(shù)據(jù)集放入LightGBM中進(jìn)行訓(xùn)練,可以得到表3所示的特征權(quán)值排序。
如果只是一直不停地增加特征,不但增加運(yùn)行時(shí)間,還使得預(yù)測(cè)精度下降。從表2和表3中可以觀察到,后半部分特征的權(quán)值遠(yuǎn)遠(yuǎn)大于前半部分特征,并且有一些特征的權(quán)值幾乎為零。
而這些對(duì)于學(xué)習(xí)模型沒(méi)有幫助的特征是多余的,本文通過(guò)刪除Date_Hour(會(huì)話發(fā)生在幾時(shí))、Date_Is_year_start(會(huì)話是否發(fā)生在一年的開(kāi)端)、Date_Is_year_end(會(huì)話是否發(fā)生在一年的末尾)、Date_Is_quarter_start(會(huì)話是否發(fā)生在季度的開(kāi)端)、Date_Is_quarter_end(會(huì)話是否發(fā)生在季度的末尾)等權(quán)值偏低的特征,最終所得數(shù)據(jù)集再放入LightGBM中訓(xùn)練,便可得到表4中所示的特征權(quán)值排序。
從表4中可以觀察到,在刪除了一些特征之后,整體特征的權(quán)值分布更加均勻了,而且在圖中的最后幾名特征也有了一定的貢獻(xiàn),雖然也很低,但不像表2和表3中貢獻(xiàn)幾乎為0。
通過(guò)上述兩種操作來(lái)實(shí)現(xiàn)半自動(dòng)化特征工程,其中對(duì)于數(shù)值型特征的操作屬于自動(dòng)化處理,而刪除特征操作屬于人工分析的方式。
3實(shí)驗(yàn)與結(jié)果分析
3.1數(shù)據(jù)集
本文所使用的數(shù)據(jù)集是來(lái)自Kaggle網(wǎng)站上2018年9月份左右舉辦的Google Analytics Custmer Revenue Prediction比賽數(shù)據(jù)集,通過(guò)分析Google Merchandise Store(also known as GStore swag is sold)的顧客數(shù)據(jù)集來(lái)預(yù)測(cè)將來(lái)每位顧客的購(gòu)買(mǎi)力,可以確保數(shù)據(jù)來(lái)源的真實(shí)性和有效性,同時(shí)也能驗(yàn)證本文所提方法的實(shí)際性。本文所述的原始數(shù)據(jù)集,指的是在進(jìn)行過(guò)數(shù)據(jù)清洗和一定的特征工程操作后所得到的數(shù)據(jù)集,數(shù)據(jù)集及其評(píng)測(cè)指標(biāo)如表5所示。表5中,訓(xùn)練集之所以比測(cè)試集多了一列特征的原因是:多出的一列是預(yù)測(cè)目標(biāo),也就是客戶購(gòu)買(mǎi)力。其中均方根誤差(Root Mean Squard Error, RMSE)的計(jì)算式為:
RMSE=1n∑ni=1(yi-y^i)2
其中,y^i是預(yù)測(cè)某客戶購(gòu)買(mǎi)力的自然對(duì)數(shù),并且yi是實(shí)際某客戶購(gòu)買(mǎi)力總和加1的自然對(duì)數(shù)。RMSE越小表明預(yù)測(cè)結(jié)果越準(zhǔn)確。
在關(guān)于客戶購(gòu)買(mǎi)力預(yù)測(cè)問(wèn)題上,往往存在著80/20定律,該定律證明了在許多商業(yè)貿(mào)易中,大部分的利潤(rùn)來(lái)源于一小部分的顧客。
通過(guò)對(duì)數(shù)據(jù)進(jìn)行簡(jiǎn)單的分析可以發(fā)現(xiàn),比賽所給出的數(shù)據(jù)的確符合80/20準(zhǔn)則,圖4顯示了有進(jìn)行商品購(gòu)買(mǎi)的用戶大多集中在編號(hào)700000以上,而在此之前的用戶幾乎都不產(chǎn)生任何利潤(rùn)。
3.2結(jié)果分析
[10]BAO W, YUE J, RAO Y. A deep learning framework for financial time series using stacked autoencoders and long-short term memory [J]. PloS One, 2017, 12(7):? Article No. e0180944.
[11]SHAO X, MA D, LIU Y, et al. Short-term forecast of stock price of multi-branch LSTM based on K-means [C]// Proceedings of the 2018 International Conference on Systems and Informatics. Piscataway: IEEE, 2018: 1546-1551.
[12]SIMONYAN K, ZISSERMAN A. Very deep convolutional networks for large-scale image recognition [EB/OL]. [2019-03-20]. https://arxiv.org/pdf/1409.1556.pdf.
[13]BENGIO Y, COURVILLE A, VINCENT P. Representation learning: a review and new perspectives [J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2013, 35(8): 1798-1828.
[14]ZHOU Z-H, FENG J. Deep forest: towards an alternative to deep neural networks [C]// Proceedings of the 26th International Joint Conference on Artificial Intelligence. Menlo Park: AAAI Press, 2017: 3553-3559.
[15]SCOTT S, MATWIN S. Feature engineering for text classification [C]// Proceedings of the 1999 International Machine Learning Conference. San Francisco: Morgan Kaufmann Publishers Inc., 1999: 379-388.
[16]CHEN T, GUESTRIN C. XGBoost: a scalable tree boosting system [C]// Proceedings of the 22nd ACM SIGKDD International Conference on Knowledge Discovery and Data Mining. New York: ACM, 2016: 785-794.
[17]TYREE S, WEINBERGER K Q, AGRAWAL K, et al. Parallel boosted regression trees for Web search ranking [C]// Proceedings of the 2011 International Conference on World Wide Web. New York: ACM, 2011: 387-396.
[18]PEDREGOSA F, VAROQUAUX G, GRAMFORT A, et al. Scikit-learn: machine learning in python [J]. Journal of Machine Learning Research, 2011, 12: 2825-2830.
YE Zhiyu, born in 1994, M. S. candidate. His research interests include machine learning, data mining, tree model, deep model.
FENG Aimin, born in 1971, Ph. D., associate professor. Her research interests include machine learning, data mining.
GAO Hang, born in 1964, Ph. D., associate professor. His research interests include multimedia technology, embedded system.
收稿日期:2019-04-29;修回日期:2019-07-25;錄用日期:2019-07-26。
作者簡(jiǎn)介:葉志宇(1994—),男,福建三明人,碩士研究生,主要研究方向:機(jī)器學(xué)習(xí)、數(shù)據(jù)挖掘、樹(shù)模型、深度模型;馮愛(ài)民(1971—),女,江蘇南京人,副教授,博士,主要研究方向:機(jī)器學(xué)習(xí)、數(shù)據(jù)挖掘;高航(1964—),男,江蘇南京人,副教授,博士,主要研究方向:多媒體技術(shù)、嵌入式系統(tǒng)。
文章編號(hào):1001-9081(2019)12-3434-06DOI:10.11772/j.issn.1001-9081.2019071305