蔡 明,孫 杰,李培德,鮑 清
(1 湖北省氣象信息與技術(shù)保障中心,武漢 430074;2 暴雨監(jiān)測(cè)預(yù)警湖北重點(diǎn)實(shí)驗(yàn)室,武漢 430074)
目前,對(duì)于中等數(shù)據(jù)集來(lái)說(shuō),與人工神經(jīng)網(wǎng)絡(luò)(Artificial Neural Network,ANN)相比,boosting 方法則有著較為明顯優(yōu)勢(shì)。相對(duì)來(lái)說(shuō),boosting 的訓(xùn)練時(shí)間會(huì)更短,參數(shù)調(diào)整時(shí)也不會(huì)耗費(fèi)太多時(shí)間。
Boosting 是一種集成學(xué)習(xí)策略,致力于從各種弱分類器中生成準(zhǔn)確的分類器。通過(guò)劃分訓(xùn)練數(shù)據(jù),并使用每個(gè)部分來(lái)訓(xùn)練不同的模型或用一個(gè)具有不同設(shè)置的模型來(lái)實(shí)現(xiàn),最后再用多數(shù)票將結(jié)果組合在一起。AdaBoost 是Freund 等人提出的第一個(gè)用于二元分類的有效boosting 方法。當(dāng)AdaBoost 進(jìn)行第一次迭代時(shí),所有記錄的權(quán)重相同,但在下一次迭代中,卻會(huì)為錯(cuò)誤分類的記錄賦予更高的權(quán)重,模型迭代將繼續(xù)、直到構(gòu)造出有效的分類器。AdaBoost 發(fā)布后不久,就有研究發(fā)現(xiàn),即使迭代次數(shù)增加,模型誤差也不會(huì)變大。因此,AdaBoost模型十分適用于解決過(guò)擬合問(wèn)題。近些年來(lái),學(xué)者們基于梯度提升決策樹(Gradient Boosting Decision Tree,GBDT)提出了3 種基于決策樹的有效梯度方法,分別是:XGBoost、CatBoost 和LightGBM。這些方法均已成功應(yīng)用于工業(yè)界、學(xué)術(shù)界和競(jìng)爭(zhēng)性機(jī)器學(xué)習(xí)的研究中。
梯度提升樹是一種利用加法模型與前向分歩算法實(shí)現(xiàn)學(xué)習(xí)的優(yōu)化過(guò)程。當(dāng)損失函數(shù)為平方誤差損失函數(shù)和指數(shù)損失函數(shù)時(shí),每一步的優(yōu)化較為簡(jiǎn)單。但對(duì)一般損失函數(shù)而言,往往每一步優(yōu)化并不容易。針對(duì)這一問(wèn)題,F(xiàn)reidman 提出了梯度提升(Gradient Boosting)算法。Gradient Boosting 是Boosting 中的一類算法,設(shè)計(jì)思想?yún)⒖甲蕴荻认陆捣?,基本原理是根?jù)當(dāng)前模型損失函數(shù)的負(fù)梯度信息,來(lái)訓(xùn)練新加入的弱分類器,并將訓(xùn)練好的弱分類器以累加的形式結(jié)合到現(xiàn)有模型中。采用決策樹作為弱分類器的Gradient Boosting 算法被稱為GBDT,有時(shí)也稱為MART(Multiple Additive Regression Tree)。
梯度提升方法以分段方式構(gòu)造解,并通過(guò)優(yōu)化損失函數(shù)來(lái)解決過(guò)擬合問(wèn)題。例如:假設(shè)有一個(gè)定制的基學(xué)習(xí)器(,)(如決策樹)和一個(gè)損失函數(shù)(,())。若直接估計(jì)參數(shù)會(huì)十分困難,因此在每次迭代時(shí)使用迭代模型。每次迭代模型都將被更新、并重選一個(gè)新的基學(xué)習(xí)器(,θ),其中增量可表示為:
這樣就可以將難解的優(yōu)化問(wèn)題轉(zhuǎn)化為常用的最小二乘優(yōu)化問(wèn)題,即:
這里,對(duì)梯度提升算法的實(shí)現(xiàn)步驟可做闡釋表述如下。
令為常數(shù);
對(duì)于1 到有:
1:利用式(1)計(jì)算g();
2:訓(xùn)練函數(shù)(,θ) ;
3:利用式(2)尋找最優(yōu)ρ;
結(jié)束。
該算法從一片葉子開始,接著將針對(duì)每個(gè)節(jié)點(diǎn)和每個(gè)樣本優(yōu)化學(xué)習(xí)速率。
XGBoost(eXtreme Gradient Boosting)是一種高度可擴(kuò)展、靈活且通用的梯度提升工具,其設(shè)計(jì)目的在于正確使用資源,并克服以往梯度提升算法的局限性。XGBoost 和其它梯度提升算法的主要區(qū)別是,XGBoost 使用了一種新的正則化技術(shù),控制過(guò)擬合現(xiàn)象的產(chǎn)生。因此,在模型調(diào)整期間,XGBoost會(huì)更快、更健壯。正則化技術(shù)是通過(guò)在損失函數(shù)中添加一個(gè)新項(xiàng)來(lái)實(shí)現(xiàn)的,此處的數(shù)學(xué)公式可寫為:
XGBoost 使用了新的增益函數(shù),相應(yīng)的函數(shù)形式具體如下:
文中,對(duì)XGBoost 基本核心算法流程擬做闡釋如下。
(1)不斷地添加樹,并不斷地進(jìn)行特征分裂來(lái)生長(zhǎng)一棵樹。每次添加一個(gè)樹,其實(shí)是學(xué)習(xí)一個(gè)新函數(shù)(),去擬合上次預(yù)測(cè)的殘差。
(2)當(dāng)訓(xùn)練完成得到棵樹,需要預(yù)測(cè)一個(gè)樣本的分?jǐn)?shù),即根據(jù)這個(gè)樣本特征,在每棵樹中會(huì)求得對(duì)應(yīng)的一個(gè)葉子節(jié)點(diǎn),每個(gè)葉子節(jié)點(diǎn)就對(duì)應(yīng)一個(gè)分?jǐn)?shù)。
(3)基于此,只需將每棵樹對(duì)應(yīng)的分?jǐn)?shù)加起來(lái),就得到了該樣本的預(yù)測(cè)值。
為了提高GBDT 算法效率、避免XGBoost 的缺陷、并且能夠在不損害準(zhǔn)確率的條件下加快GBDT模型的訓(xùn)練速度,微軟研究團(tuán)隊(duì)于2017 年4 月開發(fā)了LightGBM。LightGBM 在傳統(tǒng)GBDT 算法上進(jìn)行了如下優(yōu)化:
(1)基于Histogram 的決策樹算法。一個(gè)葉子的直方圖可以由其父親節(jié)點(diǎn)直方圖與其兄弟直方圖做差得到,在速度上可以提升一倍。
(2)單邊梯度采樣(Gradient-based One-Side Sampling,GOSS)。使用GOSS 可以減少大量只具有小梯度的數(shù)據(jù)實(shí)例,使其在計(jì)算信息增益時(shí)只利用余下的具有高梯度的數(shù)據(jù)即可。相比XGBoost 而言,既遍歷所有特征值,也節(jié)省了不少時(shí)間和空間上的開銷。GOSS 算法從減少樣本的角度出發(fā),排除大部分小梯度的樣本,僅用剩下的樣本計(jì)算信息增益,這樣做的好處是在減少數(shù)據(jù)量和保證精度上取得平衡。
(3)互斥特征捆綁(Exclusive Feature Bundling EFB)。使用EFB 可以將許多互斥的特征綁定為一個(gè)特征,這樣達(dá)到了降維的目的。
(4)帶深度限制的Leaf-wise 葉子生長(zhǎng)策略。大多數(shù)GBDT 工具使用低效的按層生長(zhǎng)(levelwise)的決策樹生長(zhǎng)策略,且由于不加區(qū)分地對(duì)待同一層的葉子,帶來(lái)了很多額外開銷。實(shí)際上很多葉子的分裂增益較低,沒(méi)必要進(jìn)行搜索和分裂。LightGBM 使用了帶有深度限制的按葉子生長(zhǎng)(leaf-wise)算法,在分裂次數(shù)相同的情況下,Leaf-wise可以降低誤差,得到更好的精度。并且,還能做到:
①直接支持類別特征(Categorical Feature);
②支持高效并行;
③Cache 命中率優(yōu)化。
上述優(yōu)化使得LightGBM 具有更好的準(zhǔn)確性、更快的訓(xùn)練速度、以及大規(guī)模處理數(shù)據(jù)能力,同時(shí)還能支持GPU 學(xué)習(xí)的優(yōu)點(diǎn)。按層生長(zhǎng)與按葉子生長(zhǎng)的設(shè)計(jì)示意如圖1 所示。
圖1 按層生長(zhǎng)與按葉子生長(zhǎng)示意圖Fig.1 Schematic diagram of level-wise growth and leaf-wise growth
CatBoost 是Yandex 在2017 年提出的開源的機(jī)器學(xué)習(xí)庫(kù),同前面介紹的XGBoost 和LightGBM類似,依然是在GBDT 算法框架下的一種改進(jìn)算法,是一種基于對(duì)稱決策樹(oblivious trees)算法的GBDT 框架,不僅參數(shù)少、準(zhǔn)確性高,還能支持類別型變量,高效合理地處理類別型特征(Categorical features)也是其主要亮點(diǎn)及優(yōu)勢(shì)。由其名稱就可以看出,CatBoost 是由categorical 和boost 組成,并改善了梯度偏差(Gradient bias)及預(yù)測(cè)偏移(Predictionshift)問(wèn)題,提高了算法準(zhǔn)確性和泛化能力。
CatBoost 可以利用各種統(tǒng)計(jì)上的分類特征和數(shù)值特征的組合,將分類值編碼成數(shù)字,并通過(guò)在當(dāng)前樹的新拆分處,使用貪婪方法解決特征組合的指數(shù)增長(zhǎng)問(wèn)題。同均值編碼類似,重點(diǎn)是通過(guò)以下步驟防止過(guò)擬合:
(1)將記錄隨機(jī)劃分為子集。
(2)將標(biāo)簽轉(zhuǎn)換為整數(shù)的同時(shí),將分類特征轉(zhuǎn)化為數(shù)字特征,研究求得的數(shù)學(xué)公式為:
其中,是給定分類特征在目標(biāo)中的個(gè)數(shù);是之前對(duì)象的個(gè)數(shù);由初始參數(shù)指定。
與XGBoost、LightGBM 相比,CatBoost 的創(chuàng)新點(diǎn)體現(xiàn)在如下方面:
(1)嵌入了將類別型特征自動(dòng)處理為數(shù)值型特征的創(chuàng)新算法。先對(duì)categorical features 做一些統(tǒng)計(jì),計(jì)算某個(gè)類別特征(category)出現(xiàn)的頻率,此后加上超參數(shù),生成新的數(shù)值型特征(numerical features)。
(2)Catboost 使用了組合類別特征,可以用到特征之間的聯(lián)系,極大地豐富了特征維度。
(3)采用排序提升的方法對(duì)抗訓(xùn)練集中的噪聲點(diǎn),這就避免了梯度估計(jì)的偏差,進(jìn)而解決預(yù)測(cè)偏移的問(wèn)題。
(4)采用完全對(duì)稱樹作為基模型。
選擇Kaggle 比賽中的NYC Taxi fares 數(shù)據(jù)集作為3 種模型對(duì)比實(shí)驗(yàn)的數(shù)據(jù)集,以此來(lái)對(duì)比3 種算法的性能。數(shù)據(jù)集共有1 108 477條數(shù)據(jù),數(shù)據(jù)集的前5 行數(shù)據(jù)樣本見表1。特征變量數(shù)目為8,目標(biāo)特征為fare_amount。
表1 初始數(shù)據(jù)集快照Tab.1 Snapshot of initial dataset
在對(duì)特征變量進(jìn)行處理時(shí),將拆分生成新特征變量年、月、星期、年積日、時(shí);通過(guò)、、、和NYC 內(nèi)機(jī)場(chǎng)經(jīng)緯度坐標(biāo),計(jì)算乘車距離Distance 和到各個(gè)機(jī)場(chǎng)的距離作為新的特征變量。同時(shí)對(duì)數(shù)據(jù)集進(jìn)行處理,去除≥5 或記錄為空的數(shù)據(jù)。
最終,將經(jīng)過(guò)預(yù)處理和特征工程加工的數(shù)據(jù)集按照7 ∶3 的比例劃分為訓(xùn)練集和測(cè)試集。
為了從性能表現(xiàn)、效率等方面對(duì)比最具代表性的3 種基于GBDT 的研發(fā)算法在回歸應(yīng)用中的情況,文中將按照以下步驟進(jìn)行實(shí)驗(yàn):
(1)使用相同的初始參數(shù)訓(xùn)練 XGBoost、CatBoost、LightGBM 算法的基準(zhǔn)模型。
(2)使用超參數(shù)自動(dòng)搜索模塊GridSearch CV訓(xùn)練XGBoost、CatBoost 和LightGBM 算法的調(diào)整模型。
(3)從訓(xùn)練和預(yù)測(cè)時(shí)間、預(yù)測(cè)得分兩方面比較算法性能的表現(xiàn)情況。
為了研究不同數(shù)據(jù)樣本量對(duì)模型性能的影響,分別按照全部、1/2、1/5 和1/10 的比例,從樣本數(shù)據(jù)集中隨機(jī)抽取樣本形成新的樣本集。對(duì)新的樣本集,按照7 ∶3 的比例劃分訓(xùn)練集和測(cè)試集,從模型預(yù)測(cè)精度和訓(xùn)練、預(yù)測(cè)用時(shí)等方面,對(duì)比3 種算法的回歸預(yù)測(cè)性能。
本文使用均方根誤差對(duì)模型的預(yù)測(cè)精度進(jìn)行評(píng)價(jià)。均方根誤差的數(shù)學(xué)定義的公式表述可寫為:
3 種模型回歸預(yù)測(cè)的見表2。表2 中,XGBoost、LightGBM、CatBoost 代表建立的基準(zhǔn)模型,XGBoost_CV、LightGBM_CV、CatBoost_CV 代表在基準(zhǔn)模型基礎(chǔ)上,經(jīng)過(guò)網(wǎng)格搜索和交叉驗(yàn)證后的優(yōu)化模型。觀察表2 可以看出,3 種算法經(jīng)過(guò)參數(shù)調(diào)優(yōu)后的,相比各自基準(zhǔn)模型的都有所降低,說(shuō)明參數(shù)優(yōu)化提高了模型的預(yù)測(cè)精度。隨著樣本規(guī)模的降低,3 種算法的皆有不同程度的增長(zhǎng),說(shuō)明樣本規(guī)模的減小,降低了模型的預(yù)測(cè)精度。但是,CatBoost 算法在樣本規(guī)模由總樣本數(shù)目的1/5 降至1/10 時(shí),模型預(yù)測(cè)結(jié)果的并沒(méi)有出現(xiàn)增長(zhǎng)。說(shuō)明樣本規(guī)模降低至總樣本數(shù)目的1/5后,CatBoost 對(duì)樣本規(guī)模的降低已不再敏感,樣本規(guī)模與模型預(yù)測(cè)精度的具體聯(lián)系有待進(jìn)一步研究。
表2 模型預(yù)測(cè)精度RMSETab.2 Prediction accuracy of the models RMSE
由此可見,LightGBM 在基準(zhǔn)模型和優(yōu)化模型上都比其它2 種算法的要小,說(shuō)明LightGBM 算法在實(shí)驗(yàn)數(shù)據(jù)集上的預(yù)測(cè)效果優(yōu)于其它2 種算法。
通過(guò)記錄3 種模型訓(xùn)練和預(yù)測(cè)用時(shí),進(jìn)行3 種模型的運(yùn)行用時(shí)對(duì)比,對(duì)比結(jié)果見表3。從表3 中也可以看出,對(duì)于同一模型,使用網(wǎng)格搜索交叉檢驗(yàn)?zāi)P偷倪\(yùn)行用時(shí)遠(yuǎn)高于其基準(zhǔn)模型,這是由于網(wǎng)格搜索和交叉檢驗(yàn)操作用時(shí)較多。同時(shí),從表3 中也可以看出,樣本規(guī)模和模型運(yùn)行時(shí)間成正比,模型樣本規(guī)模越大,訓(xùn)練和預(yù)測(cè)用時(shí)越多。不同模型間進(jìn)行對(duì)比時(shí),LightGBM 無(wú)論是基準(zhǔn)模型、還是經(jīng)過(guò)網(wǎng)格搜索交叉檢驗(yàn)后的優(yōu)化模型,在運(yùn)行用時(shí)上都是最少,CatBoost 模型的運(yùn)行時(shí)間次之,XGBoost 模型運(yùn)行耗時(shí)最多,這與前文論述中對(duì)3 種模型的特性介紹相符。
表3 模型運(yùn)行時(shí)間Tab.3 Running time of the models s
通過(guò)比較3 種模型的feature_importances_屬性,研究這些屬性中哪些對(duì)模型的預(yù)測(cè)影響最大,對(duì)比結(jié)果如圖2~圖4 所示。由圖2~圖4 分析可知,雖然3 種模型中的各個(gè)變量重要性排序不盡相同,但訂單距離、機(jī)場(chǎng)訂單距離_、訂單年份和乘客下車時(shí)的經(jīng)度_的變量重要性均排名前4,說(shuō)明無(wú)論是采用哪種模型,這4 個(gè)變量均是決定模型預(yù)測(cè)效果的關(guān)鍵變量。4 個(gè)變量中,訂單距離、機(jī)場(chǎng)訂單距離_和訂單年份均是通過(guò)特征工程從原始數(shù)據(jù)集中生成的變量,這也說(shuō)明對(duì)原始數(shù)據(jù)集進(jìn)行特征工程加工是提升模型訓(xùn)練效果的一種有效手段。
圖2 使用XGBoost 模型的特征重要性排序圖Fig.2 Ranking diagram of feature importance using XGBoost model
圖3 使用LightGBM 模型的特征重要性排序圖Fig.3 Ranking diagram of feature importance using LightGBM model
圖4 使用CatBoost 模型的特征重要性排序圖Fig.4 Ranking diagram of feature importance using CatBoost model
本文比較了3 種最先進(jìn)的梯度增強(qiáng)方法(XGBoost、LightGBM 和CatBoost)的回歸預(yù)測(cè)精度和運(yùn)行時(shí)間。LightGBM 在實(shí)驗(yàn)數(shù)據(jù)集上的表現(xiàn)較其他梯度增強(qiáng)方法要快得多,而且在同樣經(jīng)過(guò)超參數(shù)優(yōu)化后,可以取得更好的回歸預(yù)測(cè)結(jié)果;可以通過(guò)對(duì)原始數(shù)據(jù)集進(jìn)行新特征生成和最佳特征選擇等特征工程操作,提升模型預(yù)測(cè)性能。綜合前文論述可知,由于LightGBM 模型在預(yù)測(cè)精度和運(yùn)行速度上的優(yōu)勢(shì),可以作為回歸應(yīng)用的首選模型。