曲文龍 陳笑屹 李一漪 汪慎文,2
1(河北地質(zhì)大學(xué)信息工程學(xué)院 河北 石家莊 050031)2(中國(guó)科學(xué)院自動(dòng)化研究所 北京 100190)
回歸模型是通過對(duì)統(tǒng)計(jì)關(guān)系的定量描述,以實(shí)測(cè)和統(tǒng)計(jì)為依據(jù),確定各相關(guān)變量間的擬合關(guān)系的一種數(shù)學(xué)模型[1]?;貧w問題是機(jī)器學(xué)習(xí)主要應(yīng)用方向之一,F(xiàn)riedman[2]指出回歸問題實(shí)際上是函數(shù)空間的優(yōu)化問題,目的是求出因變量關(guān)于自變量的函數(shù),使損失函數(shù)的期望最小?;貧w預(yù)測(cè)廣泛應(yīng)用于國(guó)民經(jīng)濟(jì)與社會(huì)生產(chǎn)等領(lǐng)域。
統(tǒng)計(jì)學(xué)習(xí)理論是一種研究小樣本機(jī)器學(xué)習(xí)規(guī)律的理論,它從實(shí)際出發(fā),提取數(shù)據(jù)特征,構(gòu)建概率統(tǒng)計(jì)模型進(jìn)行數(shù)據(jù)的分析與預(yù)測(cè)[3]。在統(tǒng)計(jì)學(xué)習(xí)的建模過程中,建立輸入變量與輸出變量之間的函數(shù)關(guān)系,最常見的統(tǒng)計(jì)學(xué)習(xí)模型基于線性回歸模型,這類方法原理簡(jiǎn)單,便于操作,但是十分依賴于以往經(jīng)驗(yàn),針對(duì)復(fù)雜問題容易發(fā)生精度偏差[4]。機(jī)器學(xué)習(xí)是人工智能的重要組成部分,傳統(tǒng)機(jī)器學(xué)習(xí)回歸方法有支持向量機(jī)回歸[6-7]、神經(jīng)網(wǎng)絡(luò)回歸[8-9]和貝葉斯回歸[10]等,目前已應(yīng)用于疾病預(yù)測(cè)、環(huán)境監(jiān)測(cè)和股票預(yù)測(cè)[11]等各個(gè)領(lǐng)域。然而這些單一方法存在局限性且穩(wěn)定性較差、精度不高,無法應(yīng)對(duì)大數(shù)據(jù)量的精準(zhǔn)分析等。集成學(xué)習(xí)通過整合多個(gè)學(xué)習(xí)器來完成學(xué)習(xí)任務(wù),以降低泛化誤差。其優(yōu)勢(shì)在于將多個(gè)個(gè)體學(xué)習(xí)器合并,得到更加合理的邊界,以降低整體的錯(cuò)誤率、提高模型性能[12]。集成學(xué)習(xí)的方法分為Bagging[13]、Boosting[14]和Stacking[15]三類,其代表算法有隨機(jī)森林[16]、GBDT[17]和XGBoost[18]等。
傳統(tǒng)的淺層學(xué)習(xí)模型對(duì)特征的依賴性強(qiáng),表達(dá)能力有限。深度學(xué)習(xí)算法對(duì)于復(fù)雜問題具有更強(qiáng)的處理能力,它的成功主要依賴于深度結(jié)構(gòu),通過多層級(jí)聯(lián)結(jié)構(gòu)將原始特征組合抽象出高級(jí)特征[19-20]。深度學(xué)習(xí)通過構(gòu)建具有多個(gè)隱藏層的網(wǎng)絡(luò)模型,使用海量數(shù)據(jù)進(jìn)行訓(xùn)練,實(shí)現(xiàn)自動(dòng)提取更復(fù)雜、更有用的特征,從而具有遠(yuǎn)超淺層網(wǎng)絡(luò)的表達(dá)能力[21-22]。但深度神經(jīng)網(wǎng)絡(luò)的超參數(shù)多,參數(shù)調(diào)節(jié)較為困難;需要一定數(shù)量的訓(xùn)練樣本,少量的訓(xùn)練樣本會(huì)導(dǎo)致欠擬合的情況;為了保證運(yùn)行速度,復(fù)雜的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)需要有昂貴的硬件支持。將集成學(xué)習(xí)方法與深度學(xué)習(xí)思想相結(jié)合,提供了一個(gè)有前途的研究途徑。Qi等[23]提出的深度支持向量機(jī)(DeepSVM)模型是一種新的深度結(jié)構(gòu),利用Ex-Adaboost學(xué)習(xí)策略來選擇錯(cuò)誤率較低、多樣性較高的SVM學(xué)習(xí)器,之后經(jīng)過每一層生成新的訓(xùn)練數(shù)據(jù),完成最終的分類或回歸任務(wù)。Zhou等[24]提出了深度森林模型gcForest(多粒度級(jí)聯(lián)森林,Multi-Grained Cascade Forest)。它是生成一個(gè)深度樹集成方法,使用級(jí)聯(lián)結(jié)構(gòu)讓gcForest做表征學(xué)習(xí),當(dāng)輸入為高維時(shí),通過多粒度掃描,其表征學(xué)習(xí)能力還能得到進(jìn)一步的提升,其優(yōu)勢(shì)是可以處理小數(shù)據(jù)量,且超參數(shù)少、魯棒性高。
本文提出一種深度梯度提升模型,使用梯度提升回歸樹作為個(gè)體學(xué)習(xí)器,采用多層級(jí)聯(lián)結(jié)構(gòu)進(jìn)行逐層表征學(xué)習(xí)。以并行化的方法訓(xùn)練個(gè)體學(xué)習(xí)器,進(jìn)一步提升學(xué)習(xí)效率。模型可根據(jù)數(shù)據(jù)自動(dòng)適應(yīng)學(xué)習(xí)層數(shù),擬合風(fēng)險(xiǎn)小,超參數(shù)少,運(yùn)行速度快。
集成學(xué)習(xí)建立一組學(xué)習(xí)器,基于某種規(guī)則將各個(gè)學(xué)習(xí)器的結(jié)果整合,從而獲得比單個(gè)學(xué)習(xí)器更好的學(xué)習(xí)效果,提高預(yù)測(cè)精度并降低過擬合風(fēng)險(xiǎn)。1990年Schapire[25]證明了在概率近似正確(Probably Approximately Correct,PAC)學(xué)習(xí)框架下,一個(gè)概念是強(qiáng)可學(xué)習(xí)的充分必要條件是這個(gè)概念是弱可學(xué)習(xí)的,從而為集成學(xué)習(xí)奠定了理論基礎(chǔ)。集成學(xué)習(xí)元算法可分為Bagging、Boosting和Stacking三類。Bagging方法通過對(duì)訓(xùn)練樣本、特征屬性集隨機(jī)采樣,學(xué)習(xí)多個(gè)獨(dú)立模型,對(duì)學(xué)習(xí)結(jié)果做平均或投票做出最終的預(yù)測(cè),可減小模型方差[13]。Boosting是一個(gè)逐步加強(qiáng)的迭代方法,每次學(xué)習(xí)基于前面模型的訓(xùn)練誤差,強(qiáng)調(diào)偏差大(錯(cuò)誤)的樣本,對(duì)樣本的分布進(jìn)行調(diào)整,最后對(duì)多個(gè)弱學(xué)習(xí)器預(yù)測(cè)值加權(quán)組合,可減小模型偏差[14]。Stacking的基本思想是訓(xùn)練一個(gè)基本分類器池,然后使用另一個(gè)分類器來組合它們的預(yù)測(cè),以降低泛化誤差[15]。
梯度提升回歸樹(Gradient Boosting Regression Tree, GBRT)是FrideMan在2000年提出的一種Boosting方法[26],基學(xué)習(xí)器為CART回歸樹。每次迭代中,利用當(dāng)前模型中損失函數(shù)的負(fù)梯度值作為提升樹算法中的殘差的近似值,進(jìn)而擬合一棵回歸樹,并疊加得到新模型。對(duì)于平方損失函數(shù)負(fù)梯度就是殘差,對(duì)于一般損失函數(shù),負(fù)梯度可視為殘差的近似值。
算法1梯度提升回歸樹(GBRT)算法
輸出:強(qiáng)學(xué)習(xí)器y=FM(x)。
初始化模型為常數(shù):
(1)
form=1 toM:
計(jì)算偽梯度:
(2)
計(jì)算回歸樹hM(x)重系數(shù)γm:
(3)
更新模型:
Fm(x)=Fm-1(x)+vγhm(x)
(4)
//v∈(0,1)為收斂參數(shù)
end for
輸出FM(x)
GBRT組合多個(gè)弱學(xué)習(xí)器可以防止過擬合,具有非線性變換處理能力,不需做特征變換,其缺點(diǎn)是基學(xué)習(xí)器通過迭代順序生成,難以實(shí)現(xiàn)并行化。
極限梯度提升樹(eXtreme Gradient Boosting,Xgboost)是由Chen等[18]提出的一種正則化的和可伸縮的梯度提升算法。傳統(tǒng)的梯度提升算法優(yōu)化時(shí)只用到損失函數(shù)一階導(dǎo)數(shù)信息,Xgboost對(duì)損失函數(shù)進(jìn)行了二階泰勒展開,同時(shí)利用了一階和二階導(dǎo)數(shù),并且可自定義損失函數(shù)。Xgboost在損失函數(shù)里加入了正則項(xiàng),用于控制模型的復(fù)雜度,綜合權(quán)衡模型的偏差和方差,簡(jiǎn)化模型并且防止過擬合。算法具有良好的預(yù)測(cè)性能,可處理空缺和稀疏數(shù)據(jù)、支持特征粒度的多核和分布式多處理器并行計(jì)算。
深度梯度提升模型使用級(jí)聯(lián)結(jié)構(gòu)的深度集成方法對(duì)特征向量進(jìn)行逐層表征學(xué)習(xí),分為輸入層、隱層和輸出層。
輸入層(L1)包括若干學(xué)習(xí)器(R11,R12,…,R1m)進(jìn)行初級(jí)特征學(xué)習(xí),每個(gè)學(xué)習(xí)器使用隨機(jī)子空間方法隨機(jī)選擇相同大小的不同特征組合的子空間作為輸入。隱層中含有隱層學(xué)習(xí)器進(jìn)行高層特征抽象。為保持?jǐn)?shù)據(jù)集原始特征信息,第一層隱層(L2)的輸入為原始特征和輸入層若干學(xué)習(xí)器的輸出。從第二層隱層開始(L3),每一層的輸入包含原始數(shù)據(jù)集中的所有特征和所有隱層學(xué)習(xí)器的輸出作為下一層隱層學(xué)習(xí)器的輸入。根據(jù)學(xué)習(xí)結(jié)果,隱層層數(shù)自適應(yīng)確定,當(dāng)上一層的預(yù)測(cè)結(jié)果矩陣與當(dāng)前層預(yù)測(cè)結(jié)果矩陣的差值絕對(duì)值矩陣中每一項(xiàng)值的平均值小于容忍度ε時(shí)停止增加層數(shù)。輸出層(Ln)采用學(xué)習(xí)器,對(duì)最后隱層輸出和原始輸入特征進(jìn)行融合預(yù)測(cè),得到最終預(yù)測(cè)輸出。其級(jí)聯(lián)結(jié)構(gòu)如圖1所示。
圖1 深度梯度提升模型級(jí)聯(lián)結(jié)構(gòu)
假設(shè)有100維輸入特征,輸入層結(jié)構(gòu)將在原始的訓(xùn)練集中使用隨機(jī)特征子空間的方法訓(xùn)練m個(gè)學(xué)習(xí)器并對(duì)所給定樣本進(jìn)行預(yù)測(cè),形成m維的數(shù)據(jù)集合,與原始100維輸入特征按列進(jìn)行合并,形成100+m維的數(shù)據(jù)集合作為首層隱層(L2)中所有學(xué)習(xí)器(R21,R22)的輸入。
從隱層的第二層(L3)開始,隱層中的輸入為上一隱層中2個(gè)學(xué)習(xí)器的輸出的預(yù)測(cè)結(jié)果和原始100維輸入特征按列進(jìn)行合并的數(shù)據(jù)集合,共102維,作為下一隱層學(xué)習(xí)器的輸入。以此類推,直到當(dāng)前隱層與上一隱層的預(yù)測(cè)結(jié)果的每一項(xiàng)差值的絕對(duì)值的平均數(shù)小于容忍度ε時(shí),則停止增加隱層。
輸出層的輸入為最后一層隱層中2個(gè)學(xué)習(xí)器的輸出預(yù)測(cè)結(jié)果向量(2維)與原始的100維輸入特征按列進(jìn)行合并的數(shù)據(jù)集合,共102維,輸出的最終預(yù)測(cè)結(jié)果為1維向量。
輸入層節(jié)點(diǎn)以隨機(jī)子空間方式進(jìn)行特征提取,可能存在部分節(jié)點(diǎn)因差異性和互補(bǔ)性較低,進(jìn)而導(dǎo)致輸入層性能下降的問題。本模型以平均相似度作為衡量標(biāo)準(zhǔn),去除輸入層中較為相似的節(jié)點(diǎn),使得保留下的節(jié)點(diǎn)盡可能具有較高的差異性和互補(bǔ)性,以此提高輸入層的性能和運(yùn)行效率[27]。設(shè)輸入層節(jié)點(diǎn)數(shù)為k,則輸入層第i個(gè)節(jié)點(diǎn)與輸入層其他節(jié)點(diǎn)的平均相似度(Average Similarity,AS)的計(jì)算公式為:
(5)
式中:θi為第i個(gè)節(jié)點(diǎn)的輸出預(yù)測(cè)結(jié)果,ρ(θi,θj)為第i個(gè)節(jié)點(diǎn)的預(yù)測(cè)結(jié)果與第j個(gè)節(jié)點(diǎn)的預(yù)測(cè)結(jié)果的相關(guān)系數(shù)。
輸入層節(jié)點(diǎn)的總體平均相似度(Overall Average Similarity,OAS)計(jì)算公式為:
(6)
將大于總體平均相似度的節(jié)點(diǎn)的輸出數(shù)據(jù)與原始的輸入訓(xùn)練集按列進(jìn)行堆疊,作為隱層第一層(L2)的輸入。輸入層的隨機(jī)子空間學(xué)習(xí)算法如下:
算法2隨機(jī)子空間學(xué)習(xí)算法
輸入:訓(xùn)練樣本Dx_train,訓(xùn)練標(biāo)簽Dy_train,測(cè)試樣本Dx_test,特征數(shù)d,輸入層學(xué)習(xí)器R1={R11,R12,…,R1n},節(jié)點(diǎn)數(shù)n。
輸出:隱層x_train’,隱層訓(xùn)練標(biāo)簽y_train’, 隱層測(cè)試樣本x_test’。
rtrain={?}
//訓(xùn)練樣本的預(yù)測(cè)結(jié)果集合(按列合并)
rtest={?}
//測(cè)試樣本的預(yù)測(cè)結(jié)果集合(按列合并)
fori= 1 tondo
D’x_train=selectRows(Dx_train,F(xiàn))
D’x_test=selectRows(Dx_test,F(xiàn))
D’y_train=Dy_train
//保持訓(xùn)練標(biāo)簽不變
hi←R1i(D’x_train,D’y_train)
//訓(xùn)練生成第i個(gè)梯度提升樹hi
ifASi≤OASdo
//按式(5)和式(6)計(jì)算第i個(gè)梯度提升樹hi的平均相似
//度ASi是否小于或等于總體的平均相似度OAS
rtrain=rtrain∪hi(D’x_train)
//將hi對(duì)D’x_train的預(yù)測(cè)結(jié)果按列合并到rtrain
rtest←rtest∪hi(D’x_test)
//將hi對(duì)D’x_test的預(yù)測(cè)結(jié)果按列合并到rtest
end if
end for
毛澤東說過,在處理復(fù)雜問題時(shí),我們不僅要學(xué)會(huì)抓主要矛盾,而且要學(xué)會(huì)抓住矛盾的主要方面。編織打造限制領(lǐng)導(dǎo)干部權(quán)力之制度籠子毫無疑問是一項(xiàng)復(fù)雜而浩大的系統(tǒng)工程,因此我們必須把官員系列中最主要的官員——“第一把手”的權(quán)力作為重點(diǎn)關(guān)注和考慮的對(duì)象。理由就在于在我國(guó)“第一把手”的權(quán)力是一種具有“至高無上性”(可凌駕于法律之上)、壟斷性和集中性等鮮明特點(diǎn)的“絕對(duì)性權(quán)力”,而“絕對(duì)的權(quán)力意味著絕對(duì)的腐敗”。從近年來媒體所披露的諸多腐敗案件事實(shí)來看,地方或部門“第一把手”的權(quán)力過分集中和無所約束的確是一個(gè)被忽視的大問題。
x_train’ ←rtrain∪Dx_train//原始d維特征與m維預(yù)測(cè)結(jié)果
//按列合并,形成d+m維訓(xùn)練數(shù)據(jù)樣本
y_train’ ←Dy_train
//保持訓(xùn)練標(biāo)簽不變
x_test’ ←rtest∪Dx_test//原始d維特征與m維預(yù)測(cè)結(jié)果按
//列合并,形成d+m維測(cè)試數(shù)據(jù)樣本
輸入層中每一學(xué)習(xí)器的輸入是對(duì)原始數(shù)據(jù)隨機(jī)抽取的特征子集,各節(jié)點(diǎn)采用了隨機(jī)子空間的方法進(jìn)行抽取,有利于選擇更適當(dāng)?shù)念A(yù)測(cè)特征組合。輸入層的輸出結(jié)果的每一維度是基于不同特征組合所得出的預(yù)測(cè)結(jié)果,其保持了個(gè)體學(xué)習(xí)器的差異性,作為隱層的輸入有利于提高模型的泛化能力,將其與原始特征組合后作為隱層輸入,在對(duì)原始信息進(jìn)行高維抽象的基礎(chǔ)上,保留了原始樣本的信息,避免了隱層決策信息丟失。
隱層是由若干個(gè)學(xué)習(xí)器節(jié)點(diǎn)組成的級(jí)聯(lián)網(wǎng)狀結(jié)構(gòu),用于對(duì)輸入層輸出的預(yù)測(cè)值和原始特征組合進(jìn)行高層特征學(xué)習(xí)。隱層的第一層根據(jù)輸入層的輸出和原始特征集按列進(jìn)行合并作為輸入;第二層根據(jù)上一隱層的輸出和原始的特征集按列進(jìn)行合并作為輸入。為降低過擬合風(fēng)險(xiǎn),隱層層數(shù)依據(jù)當(dāng)前隱層預(yù)測(cè)結(jié)果與上一層預(yù)測(cè)結(jié)果變化率均值c和容忍值ε自動(dòng)調(diào)整,容忍值ε為學(xué)習(xí)結(jié)果變化顯著性參數(shù),取值為可容忍預(yù)測(cè)誤差下限。當(dāng)c大于容忍值ε時(shí)繼續(xù)學(xué)習(xí),當(dāng)c<ε時(shí)停止訓(xùn)練。
設(shè)隱層節(jié)點(diǎn)數(shù)為k,樣本數(shù)為n,aij表示當(dāng)前隱層中第i個(gè)樣本在第j個(gè)學(xué)習(xí)器的預(yù)測(cè)值,bij表示上一隱層中第i個(gè)樣本在第j個(gè)學(xué)習(xí)器的預(yù)測(cè)值,c值計(jì)算公式如下:
(7)
隱層表征學(xué)習(xí)算法如下:
算法3多層表征學(xué)習(xí)算法
輸入:隱層訓(xùn)練樣本Dx_train,訓(xùn)練標(biāo)簽Dy_train,測(cè)試樣本Dx_test,第i隱層學(xué)習(xí)器{Ri1,Ri2}容忍度ε,原始訓(xùn)練集,原始測(cè)試集。
輸出:輸出層訓(xùn)練集Dx_train、訓(xùn)練標(biāo)簽Dy_train、輸出層測(cè)試集Dx_test、隱層層數(shù)i。
i← 1
//隱層層數(shù)計(jì)數(shù)變量
c←∞
//相鄰層預(yù)測(cè)累計(jì)絕對(duì)差值
do while(c>ε)
//累計(jì)絕對(duì)差值≤ε時(shí)算法終止
hi1←Ri1(Dx_train,Dy_train);
//訓(xùn)練生成第i隱層的第一個(gè)梯度提升樹hi1
hi2←Ri2(Dx_train,Dy_train);
//訓(xùn)練生成第i隱層的第二個(gè)梯度提升樹hi1
Dx_train=hi1(Dx_train)∪hi2(Dx_train)∪原始訓(xùn)練集;
//對(duì)每一訓(xùn)練樣本,將本層兩個(gè)學(xué)習(xí)器輸出與原始訓(xùn)
//練集按列合并組成新的訓(xùn)練樣本
Dx_test←hi1(Dx_test)∪hi2(Dx_test)∪原始測(cè)試集;
//對(duì)每一訓(xùn)練樣本,將本層兩個(gè)學(xué)習(xí)器輸出與原始訓(xùn)
//練集按列合并組成新的訓(xùn)練樣本
計(jì)算當(dāng)前層預(yù)測(cè)結(jié)果與上一層預(yù)測(cè)結(jié)果變化率c;
i=i+1;
end do
隱層中每一層的輸出都是對(duì)之前層數(shù)(含輸入層)特征的一個(gè)高層特征概括,有利于取得良好的預(yù)測(cè)結(jié)果。使用原有數(shù)據(jù)與每一層隱層學(xué)習(xí)器的輸出進(jìn)行合并可以在進(jìn)行高維特征提取時(shí)保持原有數(shù)據(jù)集信息,防止因數(shù)據(jù)信息丟失而導(dǎo)致預(yù)測(cè)結(jié)果不準(zhǔn)確。隱層的層數(shù)確定體現(xiàn)了學(xué)習(xí)結(jié)果的變化情況,防止因過多的隱層導(dǎo)致模型過擬合或過少的隱層導(dǎo)致模型欠擬合。ε體現(xiàn)了對(duì)于當(dāng)前隱層和上一級(jí)隱層差異值的容忍程度,決定了隱層層數(shù)的確定規(guī)則。當(dāng)上一級(jí)隱層與當(dāng)前隱層的差值小于ε時(shí),說明后續(xù)的訓(xùn)練即使繼續(xù)增加隱層數(shù)預(yù)測(cè)結(jié)果的變化仍不太明顯,即達(dá)到收斂。因此差值小于ε時(shí)就可停止訓(xùn)練,確定當(dāng)前隱層為隱層中的最后一層隱層。
當(dāng)隱層數(shù)目確定,即隱層高維特征抽象和提取過程結(jié)束,將進(jìn)行最后的預(yù)測(cè)。根據(jù)學(xué)習(xí)法的結(jié)合策略,同樣地,將隱層的輸出結(jié)果和原始的特征集合按列進(jìn)行合并作為輸出層學(xué)習(xí)器的輸入,輸出的是對(duì)于原始數(shù)據(jù)集的預(yù)測(cè)結(jié)果。具體算法如下:
算法4學(xué)習(xí)法結(jié)合策略預(yù)測(cè)算法
輸入:隱層輸出的新的訓(xùn)練樣本Dx_train,訓(xùn)練標(biāo)簽Dy_train,測(cè)試樣本Dx_test,輸出層學(xué)習(xí)器R,原始訓(xùn)練集,原始測(cè)試集。
輸出:預(yù)測(cè)結(jié)果r。
h←R(Dx_train∪原始訓(xùn)練集,Dy_train);
//用隱層輸出的新的訓(xùn)練樣本與原始訓(xùn)練集按列合并訓(xùn)
//練得到輸出層學(xué)習(xí)器h
r←h(Dx_test∪原始測(cè)試集);
//用h預(yù)測(cè)原始測(cè)試集
輸出層使用個(gè)體學(xué)習(xí)器進(jìn)行最后的預(yù)測(cè)結(jié)果輸出,體現(xiàn)了學(xué)習(xí)法的結(jié)合策略,有利于擴(kuò)大假設(shè)空間、降低了陷入局部極值的風(fēng)險(xiǎn)、提高了泛化性能。將之前隱層的輸出同時(shí)堆疊原始的特征信息、繼續(xù)保留原始數(shù)據(jù)信息和高層信息作為最后輸出層學(xué)習(xí)器的輸入有利于求解出偏差值更低的預(yù)測(cè)結(jié)果。
深度梯度提升模型較傳統(tǒng)Stacking集成策略更為復(fù)雜,是在梯度提升模型上的再次集成。每一層結(jié)構(gòu)在抽象高維特征的基礎(chǔ)上融合原始數(shù)據(jù)特征,并采用不同的學(xué)習(xí)器以提高模型的泛化能力。自適應(yīng)結(jié)構(gòu)可根據(jù)數(shù)據(jù)預(yù)測(cè)結(jié)果自行確定層數(shù),降低了欠擬合或過擬合的風(fēng)險(xiǎn)。輸入層、隱層學(xué)習(xí)可并行化學(xué)習(xí),即同一層中的每個(gè)節(jié)點(diǎn)同時(shí)進(jìn)行訓(xùn)練,提高了模型的運(yùn)行效率。相比深度神經(jīng)網(wǎng)絡(luò),深度梯度提升樹模型的超參數(shù)少,訓(xùn)練調(diào)參簡(jiǎn)單。相比傳統(tǒng)的集成學(xué)習(xí)方法,本文所提出的方法可獲得更高的預(yù)測(cè)精度。
設(shè)計(jì)四個(gè)實(shí)驗(yàn)驗(yàn)證模型優(yōu)越性、有效性和參數(shù)敏感性。實(shí)驗(yàn)一采用6個(gè)UCI數(shù)據(jù)集,將本文提出的深度梯度提升模型與回歸樹模型、Xgboost集成模型、Stacking結(jié)合策略集成模型在不同數(shù)據(jù)集上進(jìn)行性能對(duì)比分析,以驗(yàn)證所提出模型的優(yōu)越性。實(shí)驗(yàn)二通過在每個(gè)數(shù)據(jù)集上不同輸入層節(jié)點(diǎn)選擇策略的預(yù)測(cè)評(píng)價(jià)指標(biāo)值,分析輸入層節(jié)點(diǎn)數(shù)對(duì)預(yù)測(cè)性能的影響。實(shí)驗(yàn)三通過不同隱層數(shù)下各數(shù)據(jù)集的預(yù)測(cè)評(píng)價(jià)指標(biāo)值,分析隱層層數(shù)對(duì)預(yù)測(cè)性能的影響,并驗(yàn)證采用適當(dāng)?shù)娜萑潭圈胖悼勺赃m應(yīng)得到最優(yōu)隱層數(shù)目。實(shí)驗(yàn)四分別以串行和線程并行方式對(duì)輸入層進(jìn)行構(gòu)建,對(duì)比不同構(gòu)建方式下的運(yùn)行時(shí)間,驗(yàn)證模型并行化實(shí)現(xiàn)的有效性。
對(duì)比實(shí)驗(yàn)中回歸樹采用經(jīng)典決策樹回歸算法;梯度集成學(xué)習(xí)模型采用Xgboost算法;Stacking結(jié)合策略集成學(xué)習(xí)模型中,首先由多個(gè)Xgboost分別進(jìn)行學(xué)習(xí),之后由Xgboost或GBRT對(duì)多個(gè)Xgboost的學(xué)習(xí)結(jié)果進(jìn)行Stacking集成。深度梯度提升模型輸入層L1采用多個(gè)Xgboost,隱層L2,L3,…,Ln-1分別采用1個(gè)Xgboost和1個(gè)GBRT,輸出層Ln采用Xgboost。
實(shí)驗(yàn)所用計(jì)算機(jī)配置為Intel Core i7 7700HQ(2.80 GHz),16 GB內(nèi)存,所運(yùn)行的軟件環(huán)境為安裝在Windows 10上的Python 3.7.1。
實(shí)驗(yàn)中使用10折交叉驗(yàn)證的方法對(duì)原始樣本進(jìn)行隨機(jī)劃分生成訓(xùn)練集、訓(xùn)練標(biāo)簽和測(cè)試集、測(cè)試標(biāo)簽,其中訓(xùn)練集占樣本的70%,測(cè)試集占30%。
回歸評(píng)價(jià)指標(biāo)包括:平均絕對(duì)誤差(MAE)、均方誤差(MSE)、均方根誤差(RMSE)、平均絕對(duì)百分誤差(MAPE)、希爾不等系數(shù)(TIC)和R2系數(shù)(擬合優(yōu)度)等。擬合優(yōu)度R2是回歸平方和在總平方和中所占比率,即回歸方程所能解釋的因變量變異性的百分比,便于對(duì)不同回歸模型的擬合程度進(jìn)行比較,其值越接近1表明模型對(duì)觀測(cè)值的預(yù)測(cè)性能越好。實(shí)驗(yàn)中選取R2系數(shù)作為預(yù)測(cè)模型評(píng)價(jià)指標(biāo),其計(jì)算公式如下:
(8)
3.5.1算法預(yù)測(cè)性能比較
實(shí)驗(yàn)一將本文提出的模型與傳統(tǒng)預(yù)測(cè)模型進(jìn)行對(duì)比,三種對(duì)比模型為:決策樹回歸模型、Xgboost集成學(xué)習(xí)模型和Stacking結(jié)合策略集成學(xué)習(xí)模型和深度梯度提升樹預(yù)測(cè)模型。
使用的6個(gè)UCI數(shù)據(jù)集包括:Air Quality、Bike Sharing、Boston 、Diabetes、PRSA和Wine。其中,Wine數(shù)據(jù)集中將兩個(gè)數(shù)據(jù)集文件合并為一個(gè)文件,并新加一列類型屬性,對(duì)其加以區(qū)分。數(shù)據(jù)集統(tǒng)計(jì)信息如表1所示。
表1 數(shù)據(jù)集統(tǒng)計(jì)信息
表2 各算法預(yù)測(cè)性能比較 %
可以看出,相比XGBoost、Stacking集成模型和深度梯度提升模型,經(jīng)典的決策樹回歸模型在上述6個(gè)UCI數(shù)據(jù)集中的R2系數(shù)相對(duì)較低;Stacking集成模型的R2系數(shù)在多數(shù)情況下高于XGBoost模型,即Stacking集成模型在準(zhǔn)確度性能方面較原始XGBoost模型有所提升;深度梯度提升樹模型在每個(gè)UCI數(shù)據(jù)集上的R2系數(shù)均高于前三種算法,相比Stacking集成模型,在R2系數(shù)上平均提高了約5.94 %。結(jié)果表明,在上述6個(gè)實(shí)驗(yàn)數(shù)據(jù)集中,本文模型的預(yù)測(cè)性能優(yōu)于決策樹回歸算法、XGBoost和Stacking集成學(xué)習(xí)算法。
3.5.2輸入層節(jié)點(diǎn)數(shù)對(duì)預(yù)測(cè)性能的影響
表3 輸入層節(jié)點(diǎn)數(shù)對(duì)R2系數(shù)影響 %
3.5.3隱層層數(shù)對(duì)預(yù)測(cè)性能的影響
實(shí)驗(yàn)三分析深度梯度提升模型的隱層層數(shù)對(duì)預(yù)測(cè)精度的影響。在其他參數(shù)不變的情況下,分析隱層數(shù)取值變化時(shí),對(duì)不同數(shù)據(jù)集上的R2系數(shù)的影響(容忍度值取ε=0.015),運(yùn)行結(jié)果如表4所示。
表4 不同隱層數(shù)對(duì)R2系數(shù)影響 %
可以看出,隨著隱層數(shù)變化,R2系數(shù)值也呈現(xiàn)明顯變化。對(duì)于Airquality數(shù)據(jù)集,隱層數(shù)從1增加到7時(shí)R2系數(shù)逐漸提高,在第7層時(shí)R2系數(shù)達(dá)到最高值:91.10%,從第8層開始R2系數(shù)開始降低,說明當(dāng)達(dá)到第7層時(shí),依據(jù)ε取值自動(dòng)終止構(gòu)建隱層。 若繼續(xù)構(gòu)建隱層,則因過擬合而導(dǎo)致預(yù)測(cè)精度降低;對(duì)BikeSharing數(shù)據(jù)集,當(dāng)隱層數(shù)為4時(shí)R2系數(shù)達(dá)到最高值71.52%;對(duì)Boston數(shù)據(jù)集,當(dāng)隱層數(shù)為2時(shí)R2系數(shù)達(dá)到最高值:82.04%;對(duì)Diabetes數(shù)據(jù)集,當(dāng)隱層數(shù)為3時(shí)R2系數(shù)達(dá)到最高值:50.80 %;對(duì)PRSA數(shù)據(jù)集,當(dāng)隱層數(shù)為8時(shí)R2系數(shù)達(dá)到最高值:57.96%;對(duì)Wine數(shù)據(jù)集,當(dāng)隱層數(shù)為3時(shí)R2系數(shù)達(dá)到最高值:17.44%。綜上所述,隱層的數(shù)量對(duì)于預(yù)測(cè)精度(R2系數(shù))存在影響,隱層的數(shù)量需要限制在一定范圍內(nèi),過少或者過多的隱層數(shù)都會(huì)降低預(yù)測(cè)精度。
3.5.4并行化運(yùn)行效率比較
表5 算法并行化運(yùn)行時(shí)間對(duì)比 s
可以看出,對(duì)各數(shù)據(jù)集輸入層串行構(gòu)建執(zhí)行時(shí),運(yùn)行效率較低,并行化方式構(gòu)建可縮短運(yùn)行時(shí)間,提高運(yùn)行效率。在Boston和Diabetes樣本量較少的數(shù)據(jù)集中,使用2線程并行運(yùn)行時(shí)間效率較優(yōu),分別為0.281 1 s、0.184 8 s,其加速比為1.42和1.44;在PRSA和AirQuality數(shù)據(jù)集中,使用4線程并行運(yùn)行時(shí)間效率較優(yōu),分別為0.648 2 s、0.199 6 s,其加速比為2.87、3.08;在BikeSharing和Wine數(shù)據(jù)集中,使用8線程并行化的運(yùn)行時(shí)間效率較,分別為0.437 4 s、0.333 7 s,其加速為4.16和2.91。實(shí)驗(yàn)結(jié)果表明,本文模型的輸入層適用于并行化運(yùn)行,可顯著提升模型運(yùn)行效率,其并行度受限于與數(shù)據(jù)特征數(shù)相關(guān)的輸入層節(jié)點(diǎn)數(shù)目。
本文融合深度學(xué)習(xí)和集成學(xué)習(xí)思想,提出了一種深度梯度提升樹回歸預(yù)測(cè)模型,以梯度提升回歸樹集成算法作為基礎(chǔ)學(xué)習(xí)器,以深度學(xué)習(xí)的逐層表征學(xué)習(xí)策略將基礎(chǔ)學(xué)習(xí)器組成多層級(jí)聯(lián)結(jié)構(gòu),進(jìn)行多層深度學(xué)習(xí)。輸入層進(jìn)行隨機(jī)子空間特征學(xué)習(xí),以應(yīng)對(duì)復(fù)雜學(xué)習(xí)任務(wù)。多隱層結(jié)構(gòu)逐層融合前一層特征學(xué)習(xí)結(jié)果并與原始特征進(jìn)行逐層表征學(xué)習(xí),依據(jù)學(xué)習(xí)變化率自適應(yīng)確定隱層數(shù)。為保留學(xué)習(xí)器的多樣性,隱層采用了GBRT和XGBoost兩種不同的梯度提升算法。輸出層中使用學(xué)習(xí)法結(jié)合策略對(duì)樣本進(jìn)行最終預(yù)測(cè)。模型采用了并行化方式訓(xùn)練各學(xué)習(xí)器以提高模型運(yùn)行效率。實(shí)驗(yàn)結(jié)果表明,提出的預(yù)測(cè)模型其預(yù)測(cè)能力優(yōu)于現(xiàn)有的集成學(xué)方法。
深度學(xué)習(xí)在處理復(fù)雜學(xué)習(xí)任務(wù)上具有顯著優(yōu)勢(shì),但深度神經(jīng)網(wǎng)絡(luò)計(jì)算成本高、超參數(shù)多。本文將傳統(tǒng)機(jī)器學(xué)習(xí)方法與深度學(xué)習(xí)思想相結(jié)合,提供了一種可拓展的研究方向。