?

一種深度梯度提升回歸預測模型

2020-09-09 03:14曲文龍陳笑屹李一漪汪慎文
計算機應用與軟件 2020年9期
關鍵詞:隱層梯度深度

曲文龍 陳笑屹 李一漪 汪慎文,2

1(河北地質大學信息工程學院 河北 石家莊 050031)2(中國科學院自動化研究所 北京 100190)

0 引 言

回歸模型是通過對統計關系的定量描述,以實測和統計為依據,確定各相關變量間的擬合關系的一種數學模型[1]?;貧w問題是機器學習主要應用方向之一,Friedman[2]指出回歸問題實際上是函數空間的優化問題,目的是求出因變量關于自變量的函數,使損失函數的期望最小?;貧w預測廣泛應用于國民經濟與社會生產等領域。

統計學習理論是一種研究小樣本機器學習規律的理論,它從實際出發,提取數據特征,構建概率統計模型進行數據的分析與預測[3]。在統計學習的建模過程中,建立輸入變量與輸出變量之間的函數關系,最常見的統計學習模型基于線性回歸模型,這類方法原理簡單,便于操作,但是十分依賴于以往經驗,針對復雜問題容易發生精度偏差[4]。機器學習是人工智能的重要組成部分,傳統機器學習回歸方法有支持向量機回歸[6-7]、神經網絡回歸[8-9]和貝葉斯回歸[10]等,目前已應用于疾病預測、環境監測和股票預測[11]等各個領域。然而這些單一方法存在局限性且穩定性較差、精度不高,無法應對大數據量的精準分析等。集成學習通過整合多個學習器來完成學習任務,以降低泛化誤差。其優勢在于將多個個體學習器合并,得到更加合理的邊界,以降低整體的錯誤率、提高模型性能[12]。集成學習的方法分為Bagging[13]、Boosting[14]和Stacking[15]三類,其代表算法有隨機森林[16]、GBDT[17]和XGBoost[18]等。

傳統的淺層學習模型對特征的依賴性強,表達能力有限。深度學習算法對于復雜問題具有更強的處理能力,它的成功主要依賴于深度結構,通過多層級聯結構將原始特征組合抽象出高級特征[19-20]。深度學習通過構建具有多個隱藏層的網絡模型,使用海量數據進行訓練,實現自動提取更復雜、更有用的特征,從而具有遠超淺層網絡的表達能力[21-22]。但深度神經網絡的超參數多,參數調節較為困難;需要一定數量的訓練樣本,少量的訓練樣本會導致欠擬合的情況;為了保證運行速度,復雜的神經網絡結構需要有昂貴的硬件支持。將集成學習方法與深度學習思想相結合,提供了一個有前途的研究途徑。Qi等[23]提出的深度支持向量機(DeepSVM)模型是一種新的深度結構,利用Ex-Adaboost學習策略來選擇錯誤率較低、多樣性較高的SVM學習器,之后經過每一層生成新的訓練數據,完成最終的分類或回歸任務。Zhou等[24]提出了深度森林模型gcForest(多粒度級聯森林,Multi-Grained Cascade Forest)。它是生成一個深度樹集成方法,使用級聯結構讓gcForest做表征學習,當輸入為高維時,通過多粒度掃描,其表征學習能力還能得到進一步的提升,其優勢是可以處理小數據量,且超參數少、魯棒性高。

本文提出一種深度梯度提升模型,使用梯度提升回歸樹作為個體學習器,采用多層級聯結構進行逐層表征學習。以并行化的方法訓練個體學習器,進一步提升學習效率。模型可根據數據自動適應學習層數,擬合風險小,超參數少,運行速度快。

1 集成學習算法

1.1 集成學習元算法

集成學習建立一組學習器,基于某種規則將各個學習器的結果整合,從而獲得比單個學習器更好的學習效果,提高預測精度并降低過擬合風險。1990年Schapire[25]證明了在概率近似正確(Probably Approximately Correct,PAC)學習框架下,一個概念是強可學習的充分必要條件是這個概念是弱可學習的,從而為集成學習奠定了理論基礎。集成學習元算法可分為Bagging、Boosting和Stacking三類。Bagging方法通過對訓練樣本、特征屬性集隨機采樣,學習多個獨立模型,對學習結果做平均或投票做出最終的預測,可減小模型方差[13]。Boosting是一個逐步加強的迭代方法,每次學習基于前面模型的訓練誤差,強調偏差大(錯誤)的樣本,對樣本的分布進行調整,最后對多個弱學習器預測值加權組合,可減小模型偏差[14]。Stacking的基本思想是訓練一個基本分類器池,然后使用另一個分類器來組合它們的預測,以降低泛化誤差[15]。

1.2 梯度提升回歸樹

梯度提升回歸樹(Gradient Boosting Regression Tree, GBRT)是FrideMan在2000年提出的一種Boosting方法[26],基學習器為CART回歸樹。每次迭代中,利用當前模型中損失函數的負梯度值作為提升樹算法中的殘差的近似值,進而擬合一棵回歸樹,并疊加得到新模型。對于平方損失函數負梯度就是殘差,對于一般損失函數,負梯度可視為殘差的近似值。

算法1梯度提升回歸樹(GBRT)算法

輸出:強學習器y=FM(x)。

初始化模型為常數:

(1)

form=1 toM:

計算偽梯度:

(2)

計算回歸樹hM(x)重系數γm:

(3)

更新模型:

Fm(x)=Fm-1(x)+vγhm(x)

(4)

//v∈(0,1)為收斂參數

end for

輸出FM(x)

GBRT組合多個弱學習器可以防止過擬合,具有非線性變換處理能力,不需做特征變換,其缺點是基學習器通過迭代順序生成,難以實現并行化。

1.3 極限梯度提升樹

極限梯度提升樹(eXtreme Gradient Boosting,Xgboost)是由Chen等[18]提出的一種正則化的和可伸縮的梯度提升算法。傳統的梯度提升算法優化時只用到損失函數一階導數信息,Xgboost對損失函數進行了二階泰勒展開,同時利用了一階和二階導數,并且可自定義損失函數。Xgboost在損失函數里加入了正則項,用于控制模型的復雜度,綜合權衡模型的偏差和方差,簡化模型并且防止過擬合。算法具有良好的預測性能,可處理空缺和稀疏數據、支持特征粒度的多核和分布式多處理器并行計算。

2 深度梯度提升模型

2.1 模型結構

深度梯度提升模型使用級聯結構的深度集成方法對特征向量進行逐層表征學習,分為輸入層、隱層和輸出層。

輸入層(L1)包括若干學習器(R11,R12,…,R1m)進行初級特征學習,每個學習器使用隨機子空間方法隨機選擇相同大小的不同特征組合的子空間作為輸入。隱層中含有隱層學習器進行高層特征抽象。為保持數據集原始特征信息,第一層隱層(L2)的輸入為原始特征和輸入層若干學習器的輸出。從第二層隱層開始(L3),每一層的輸入包含原始數據集中的所有特征和所有隱層學習器的輸出作為下一層隱層學習器的輸入。根據學習結果,隱層層數自適應確定,當上一層的預測結果矩陣與當前層預測結果矩陣的差值絕對值矩陣中每一項值的平均值小于容忍度ε時停止增加層數。輸出層(Ln)采用學習器,對最后隱層輸出和原始輸入特征進行融合預測,得到最終預測輸出。其級聯結構如圖1所示。

圖1 深度梯度提升模型級聯結構

假設有100維輸入特征,輸入層結構將在原始的訓練集中使用隨機特征子空間的方法訓練m個學習器并對所給定樣本進行預測,形成m維的數據集合,與原始100維輸入特征按列進行合并,形成100+m維的數據集合作為首層隱層(L2)中所有學習器(R21,R22)的輸入。

從隱層的第二層(L3)開始,隱層中的輸入為上一隱層中2個學習器的輸出的預測結果和原始100維輸入特征按列進行合并的數據集合,共102維,作為下一隱層學習器的輸入。以此類推,直到當前隱層與上一隱層的預測結果的每一項差值的絕對值的平均數小于容忍度ε時,則停止增加隱層。

輸出層的輸入為最后一層隱層中2個學習器的輸出預測結果向量(2維)與原始的100維輸入特征按列進行合并的數據集合,共102維,輸出的最終預測結果為1維向量。

2.2 隨機子空間學習

輸入層節點以隨機子空間方式進行特征提取,可能存在部分節點因差異性和互補性較低,進而導致輸入層性能下降的問題。本模型以平均相似度作為衡量標準,去除輸入層中較為相似的節點,使得保留下的節點盡可能具有較高的差異性和互補性,以此提高輸入層的性能和運行效率[27]。設輸入層節點數為k,則輸入層第i個節點與輸入層其他節點的平均相似度(Average Similarity,AS)的計算公式為:

(5)

式中:θi為第i個節點的輸出預測結果,ρ(θi,θj)為第i個節點的預測結果與第j個節點的預測結果的相關系數。

輸入層節點的總體平均相似度(Overall Average Similarity,OAS)計算公式為:

(6)

將大于總體平均相似度的節點的輸出數據與原始的輸入訓練集按列進行堆疊,作為隱層第一層(L2)的輸入。輸入層的隨機子空間學習算法如下:

算法2隨機子空間學習算法

輸入:訓練樣本Dx_train,訓練標簽Dy_train,測試樣本Dx_test,特征數d,輸入層學習器R1={R11,R12,…,R1n},節點數n。

輸出:隱層x_train’,隱層訓練標簽y_train’, 隱層測試樣本x_test’。

rtrain={?}

//訓練樣本的預測結果集合(按列合并)

rtest={?}

//測試樣本的預測結果集合(按列合并)

fori= 1 tondo

D’x_train=selectRows(Dx_train,F)

D’x_test=selectRows(Dx_test,F)

D’y_train=Dy_train

//保持訓練標簽不變

hi←R1i(D’x_train,D’y_train)

//訓練生成第i個梯度提升樹hi

ifASi≤OASdo

//按式(5)和式(6)計算第i個梯度提升樹hi的平均相似

//度ASi是否小于或等于總體的平均相似度OAS

rtrain=rtrain∪hi(D’x_train)

//將hi對D’x_train的預測結果按列合并到rtrain

rtest←rtest∪hi(D’x_test)

//將hi對D’x_test的預測結果按列合并到rtest

end if

end for

毛澤東說過,在處理復雜問題時,我們不僅要學會抓主要矛盾,而且要學會抓住矛盾的主要方面。編織打造限制領導干部權力之制度籠子毫無疑問是一項復雜而浩大的系統工程,因此我們必須把官員系列中最主要的官員——“第一把手”的權力作為重點關注和考慮的對象。理由就在于在我國“第一把手”的權力是一種具有“至高無上性”(可凌駕于法律之上)、壟斷性和集中性等鮮明特點的“絕對性權力”,而“絕對的權力意味著絕對的腐敗”。從近年來媒體所披露的諸多腐敗案件事實來看,地方或部門“第一把手”的權力過分集中和無所約束的確是一個被忽視的大問題。

x_train’ ←rtrain∪Dx_train//原始d維特征與m維預測結果

//按列合并,形成d+m維訓練數據樣本

y_train’ ←Dy_train

//保持訓練標簽不變

x_test’ ←rtest∪Dx_test//原始d維特征與m維預測結果按

//列合并,形成d+m維測試數據樣本

輸入層中每一學習器的輸入是對原始數據隨機抽取的特征子集,各節點采用了隨機子空間的方法進行抽取,有利于選擇更適當的預測特征組合。輸入層的輸出結果的每一維度是基于不同特征組合所得出的預測結果,其保持了個體學習器的差異性,作為隱層的輸入有利于提高模型的泛化能力,將其與原始特征組合后作為隱層輸入,在對原始信息進行高維抽象的基礎上,保留了原始樣本的信息,避免了隱層決策信息丟失。

2.3 多層表征學習

隱層是由若干個學習器節點組成的級聯網狀結構,用于對輸入層輸出的預測值和原始特征組合進行高層特征學習。隱層的第一層根據輸入層的輸出和原始特征集按列進行合并作為輸入;第二層根據上一隱層的輸出和原始的特征集按列進行合并作為輸入。為降低過擬合風險,隱層層數依據當前隱層預測結果與上一層預測結果變化率均值c和容忍值ε自動調整,容忍值ε為學習結果變化顯著性參數,取值為可容忍預測誤差下限。當c大于容忍值ε時繼續學習,當c<ε時停止訓練。

設隱層節點數為k,樣本數為n,aij表示當前隱層中第i個樣本在第j個學習器的預測值,bij表示上一隱層中第i個樣本在第j個學習器的預測值,c值計算公式如下:

(7)

隱層表征學習算法如下:

算法3多層表征學習算法

輸入:隱層訓練樣本Dx_train,訓練標簽Dy_train,測試樣本Dx_test,第i隱層學習器{Ri1,Ri2}容忍度ε,原始訓練集,原始測試集。

輸出:輸出層訓練集Dx_train、訓練標簽Dy_train、輸出層測試集Dx_test、隱層層數i。

i← 1

//隱層層數計數變量

c←∞

//相鄰層預測累計絕對差值

do while(c>ε)

//累計絕對差值≤ε時算法終止

hi1←Ri1(Dx_train,Dy_train);

//訓練生成第i隱層的第一個梯度提升樹hi1

hi2←Ri2(Dx_train,Dy_train);

//訓練生成第i隱層的第二個梯度提升樹hi1

Dx_train=hi1(Dx_train)∪hi2(Dx_train)∪原始訓練集;

//對每一訓練樣本,將本層兩個學習器輸出與原始訓

//練集按列合并組成新的訓練樣本

Dx_test←hi1(Dx_test)∪hi2(Dx_test)∪原始測試集;

//對每一訓練樣本,將本層兩個學習器輸出與原始訓

//練集按列合并組成新的訓練樣本

計算當前層預測結果與上一層預測結果變化率c;

i=i+1;

end do

隱層中每一層的輸出都是對之前層數(含輸入層)特征的一個高層特征概括,有利于取得良好的預測結果。使用原有數據與每一層隱層學習器的輸出進行合并可以在進行高維特征提取時保持原有數據集信息,防止因數據信息丟失而導致預測結果不準確。隱層的層數確定體現了學習結果的變化情況,防止因過多的隱層導致模型過擬合或過少的隱層導致模型欠擬合。ε體現了對于當前隱層和上一級隱層差異值的容忍程度,決定了隱層層數的確定規則。當上一級隱層與當前隱層的差值小于ε時,說明后續的訓練即使繼續增加隱層數預測結果的變化仍不太明顯,即達到收斂。因此差值小于ε時就可停止訓練,確定當前隱層為隱層中的最后一層隱層。

2.4 學習法結合策略

當隱層數目確定,即隱層高維特征抽象和提取過程結束,將進行最后的預測。根據學習法的結合策略,同樣地,將隱層的輸出結果和原始的特征集合按列進行合并作為輸出層學習器的輸入,輸出的是對于原始數據集的預測結果。具體算法如下:

算法4學習法結合策略預測算法

輸入:隱層輸出的新的訓練樣本Dx_train,訓練標簽Dy_train,測試樣本Dx_test,輸出層學習器R,原始訓練集,原始測試集。

輸出:預測結果r。

h←R(Dx_train∪原始訓練集,Dy_train);

//用隱層輸出的新的訓練樣本與原始訓練集按列合并訓

//練得到輸出層學習器h

r←h(Dx_test∪原始測試集);

//用h預測原始測試集

輸出層使用個體學習器進行最后的預測結果輸出,體現了學習法的結合策略,有利于擴大假設空間、降低了陷入局部極值的風險、提高了泛化性能。將之前隱層的輸出同時堆疊原始的特征信息、繼續保留原始數據信息和高層信息作為最后輸出層學習器的輸入有利于求解出偏差值更低的預測結果。

2.5 模型分析

深度梯度提升模型較傳統Stacking集成策略更為復雜,是在梯度提升模型上的再次集成。每一層結構在抽象高維特征的基礎上融合原始數據特征,并采用不同的學習器以提高模型的泛化能力。自適應結構可根據數據預測結果自行確定層數,降低了欠擬合或過擬合的風險。輸入層、隱層學習可并行化學習,即同一層中的每個節點同時進行訓練,提高了模型的運行效率。相比深度神經網絡,深度梯度提升樹模型的超參數少,訓練調參簡單。相比傳統的集成學習方法,本文所提出的方法可獲得更高的預測精度。

3 實 驗

3.1 實驗設計

設計四個實驗驗證模型優越性、有效性和參數敏感性。實驗一采用6個UCI數據集,將本文提出的深度梯度提升模型與回歸樹模型、Xgboost集成模型、Stacking結合策略集成模型在不同數據集上進行性能對比分析,以驗證所提出模型的優越性。實驗二通過在每個數據集上不同輸入層節點選擇策略的預測評價指標值,分析輸入層節點數對預測性能的影響。實驗三通過不同隱層數下各數據集的預測評價指標值,分析隱層層數對預測性能的影響,并驗證采用適當的容忍度ε值可自適應得到最優隱層數目。實驗四分別以串行和線程并行方式對輸入層進行構建,對比不同構建方式下的運行時間,驗證模型并行化實現的有效性。

對比實驗中回歸樹采用經典決策樹回歸算法;梯度集成學習模型采用Xgboost算法;Stacking結合策略集成學習模型中,首先由多個Xgboost分別進行學習,之后由Xgboost或GBRT對多個Xgboost的學習結果進行Stacking集成。深度梯度提升模型輸入層L1采用多個Xgboost,隱層L2,L3,…,Ln-1分別采用1個Xgboost和1個GBRT,輸出層Ln采用Xgboost。

3.2 實驗環境

實驗所用計算機配置為Intel Core i7 7700HQ(2.80 GHz),16 GB內存,所運行的軟件環境為安裝在Windows 10上的Python 3.7.1。

3.3 實驗方法

實驗中使用10折交叉驗證的方法對原始樣本進行隨機劃分生成訓練集、訓練標簽和測試集、測試標簽,其中訓練集占樣本的70%,測試集占30%。

3.4 評價指標

回歸評價指標包括:平均絕對誤差(MAE)、均方誤差(MSE)、均方根誤差(RMSE)、平均絕對百分誤差(MAPE)、希爾不等系數(TIC)和R2系數(擬合優度)等。擬合優度R2是回歸平方和在總平方和中所占比率,即回歸方程所能解釋的因變量變異性的百分比,便于對不同回歸模型的擬合程度進行比較,其值越接近1表明模型對觀測值的預測性能越好。實驗中選取R2系數作為預測模型評價指標,其計算公式如下:

(8)

3.5 實驗結果分析

3.5.1算法預測性能比較

實驗一將本文提出的模型與傳統預測模型進行對比,三種對比模型為:決策樹回歸模型、Xgboost集成學習模型和Stacking結合策略集成學習模型和深度梯度提升樹預測模型。

使用的6個UCI數據集包括:Air Quality、Bike Sharing、Boston 、Diabetes、PRSA和Wine。其中,Wine數據集中將兩個數據集文件合并為一個文件,并新加一列類型屬性,對其加以區分。數據集統計信息如表1所示。

表1 數據集統計信息

表2 各算法預測性能比較 %

可以看出,相比XGBoost、Stacking集成模型和深度梯度提升模型,經典的決策樹回歸模型在上述6個UCI數據集中的R2系數相對較低;Stacking集成模型的R2系數在多數情況下高于XGBoost模型,即Stacking集成模型在準確度性能方面較原始XGBoost模型有所提升;深度梯度提升樹模型在每個UCI數據集上的R2系數均高于前三種算法,相比Stacking集成模型,在R2系數上平均提高了約5.94 %。結果表明,在上述6個實驗數據集中,本文模型的預測性能優于決策樹回歸算法、XGBoost和Stacking集成學習算法。

3.5.2輸入層節點數對預測性能的影響

表3 輸入層節點數對R2系數影響 %

3.5.3隱層層數對預測性能的影響

實驗三分析深度梯度提升模型的隱層層數對預測精度的影響。在其他參數不變的情況下,分析隱層數取值變化時,對不同數據集上的R2系數的影響(容忍度值取ε=0.015),運行結果如表4所示。

表4 不同隱層數對R2系數影響 %

可以看出,隨著隱層數變化,R2系數值也呈現明顯變化。對于Airquality數據集,隱層數從1增加到7時R2系數逐漸提高,在第7層時R2系數達到最高值:91.10%,從第8層開始R2系數開始降低,說明當達到第7層時,依據ε取值自動終止構建隱層。 若繼續構建隱層,則因過擬合而導致預測精度降低;對BikeSharing數據集,當隱層數為4時R2系數達到最高值71.52%;對Boston數據集,當隱層數為2時R2系數達到最高值:82.04%;對Diabetes數據集,當隱層數為3時R2系數達到最高值:50.80 %;對PRSA數據集,當隱層數為8時R2系數達到最高值:57.96%;對Wine數據集,當隱層數為3時R2系數達到最高值:17.44%。綜上所述,隱層的數量對于預測精度(R2系數)存在影響,隱層的數量需要限制在一定范圍內,過少或者過多的隱層數都會降低預測精度。

3.5.4并行化運行效率比較

表5 算法并行化運行時間對比 s

可以看出,對各數據集輸入層串行構建執行時,運行效率較低,并行化方式構建可縮短運行時間,提高運行效率。在Boston和Diabetes樣本量較少的數據集中,使用2線程并行運行時間效率較優,分別為0.281 1 s、0.184 8 s,其加速比為1.42和1.44;在PRSA和AirQuality數據集中,使用4線程并行運行時間效率較優,分別為0.648 2 s、0.199 6 s,其加速比為2.87、3.08;在BikeSharing和Wine數據集中,使用8線程并行化的運行時間效率較,分別為0.437 4 s、0.333 7 s,其加速為4.16和2.91。實驗結果表明,本文模型的輸入層適用于并行化運行,可顯著提升模型運行效率,其并行度受限于與數據特征數相關的輸入層節點數目。

4 結 語

本文融合深度學習和集成學習思想,提出了一種深度梯度提升樹回歸預測模型,以梯度提升回歸樹集成算法作為基礎學習器,以深度學習的逐層表征學習策略將基礎學習器組成多層級聯結構,進行多層深度學習。輸入層進行隨機子空間特征學習,以應對復雜學習任務。多隱層結構逐層融合前一層特征學習結果并與原始特征進行逐層表征學習,依據學習變化率自適應確定隱層數。為保留學習器的多樣性,隱層采用了GBRT和XGBoost兩種不同的梯度提升算法。輸出層中使用學習法結合策略對樣本進行最終預測。模型采用了并行化方式訓練各學習器以提高模型運行效率。實驗結果表明,提出的預測模型其預測能力優于現有的集成學方法。

深度學習在處理復雜學習任務上具有顯著優勢,但深度神經網絡計算成本高、超參數多。本文將傳統機器學習方法與深度學習思想相結合,提供了一種可拓展的研究方向。

猜你喜歡
隱層梯度深度
磁共振梯度偽影及常見故障排除探討
基于RTD可編程邏輯門的n變量函數實現算法
基于應變梯度的微尺度金屬塑性行為研究
一種自適應確定隱層節點數的增量半監督超限學習機算法
四增四減 深度推進
深度思考之不等式
基于改進煙花算法的ELM 分類模型*
一個具梯度項的p-Laplace 方程弱解的存在性
簡約教學 深度學習
基于RDPSO結構優化的三隱層BP神經網絡水質預測模型及應用
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合