舒仕文
(貴州財經大學 貴州 貴陽 550025)
GBDT(梯度提升決策樹)是可用于回歸預測,也可用于分類(提前規定一個閾值,如果計算出的值大于閾值,則設置為正例;如果計算出的值小于閾值,則設置為負例)的集成監督學習算法。該集成算法有3個優點,分別是提升、梯度和決策樹:提升是把多個弱分類器組合起來;梯度是在提升過程中提高損失函數的靈活性和便利性的算法;決策樹是算法使用CART決策樹為基礎弱分類器[1]。
實現傳統的GBDT需要掃描所有數據實例的每個特征。因此,特征和實例的數量越多,其計算就越復雜。所以在處理大數據時,傳統的GBDT非常耗時。
解決耗時問題的一個方法是減少數據或特征的數量,但不知如何從GBDT中采樣數據。雖然有一些方法可以基于權值對數據進行采樣,以加快數據的訓練過程,但GBDT中沒有樣本權值[2],這些方法不能直接應用于GBDT。因此,針對該問題提出了兩種算法:GOSS算法(梯度單邊采樣)和EFB算法(互斥特征捆綁)。將加入GOSS和EFB兩種算法的GBDT稱為LightGBM。
由于GBDT沒有權值,所以根據抽樣點權重的數據采樣方法不能直接應用于GBDT,但其可以利用每個數據實例的梯度來進行采樣數據。基于此,GOSS算法保留所有梯度較大的數據實例,然后隨機采樣所有梯度較小的數據實例。GOSS算法在梯度較小的數據實例中引入一個固定乘數,用于計算信息增量,目的是減少該方法對數據分布的影響[3]。步驟如下:GOSS首先根據數據實例梯度的絕對值對數據實例進行排序,然后選擇最佳的a×100%的實例,接著從剩下的數據中隨機選擇前面b×100%的實例。最后GOSS通過將采樣數據按較小梯度的數據乘以(1-a)/b來計算信息增益。其中a,b∈(0,1),a表示大梯度數據的采樣率,b表示小梯度數據的采樣率。
高維數據通常非常分散。正是由于這種分散性,才有可能不損失地減少特征空間中的特征數量。在一個特征分散的空間里,許多特征是相互排斥的,所以這些互斥的特征可以捆綁成一個單獨的特征(稱為互斥特征包)。使用特征掃描算法,可以用與單個特征相同的包構造特征的直方圖。這種方法可以將構造直方圖的復雜度從數據實例數量n×特征數量j變為數據實例數量n×特征捆綁數量j′,當捆綁的特征數量遠遠小于原始特征數量時,可以顯著提高GBDT的訓練速度而不影響其準確性。
EFB算法將許多互斥特征捆綁到低維密集特征上,可以有效避免不必要的零特征值計算。事實上,如果將每個非零特征的數據記錄在一個表中,也可以優化基于基本直方圖的算法,從而忽略零特征值。通過掃描該表中的數據,構造直方圖的代價將從原始數據變為非零特征的數。但是這種方法需要額外的內存和計算成本,以便能夠在整個樹的增長過程中維護這些特征表。
在直方圖算法中,連續浮點特征值會被離散為k個整數,同時構造一個直方圖,其寬度為k。當在數據中遍歷時,統計數據會根據離散值作為索引收集在直方圖中。數據經過一次遍歷后,直方圖會收集所需的統計信息,然后根據直方圖的離散值進行遍歷,以找到最佳分割點。XGBoost需要遍歷所有離散值,而LightGBM僅遍歷k個值。
從輸入空間xs到梯度空間g,GBDT通過決策樹學習一個函數。假設有n個實例訓練數據集{x1,x2,…,xn},其中xi是輸入空間xs中維度為s的向量,在模型的每次迭代中,損失函數的負梯度相對于模型的輸出表示為{g1,g2,…,gn}。決策樹模型以最大的信息增益分割每個節點。對于GBDT,信息增益用分裂后的方差來度量[4],定義如下:
在決策樹的固定節點上定義訓練數據集O。該節點在點d處分裂,特征j的方差增益定義為公式(1):
其中no=∑I[xi∈O],njl|o(d)= ∑I[xi∈ O:xij≤d]和nj|lo(d)= ∑I[xi∈ O:xij> d]。
對于特征jj,算法中dj*=argmaxdVj(d),并且計算出Vj(dj*)為點dj*處的最大增益。然后根據dj*點的特征j*將數據劃分為左右兩個子節點,見圖1。
如圖2,XGBoost使用按層生長的增長策略,通過一次遍歷數據,可以同時分離相同的葉子層,從而更容易針對多個線程進行優化,并能很好地控制模型的復雜性,但這種算法很低效。與XGBoost不同,LightGBM使用按葉子生長的策略,即在所有當前葉子中搜索出分裂增益最大的葉子,然后對其進行分裂,一直重復此過程。與按層生長的增長策略方法相比,按葉子生長方法的優勢在于,在相同的分裂次數下,葉子生長方法減少了誤差,提高了精度;但其缺點是它可能會創建出更深層次的樹,容易出現過擬合。所以LightGBM在按葉子生長方法上創建一個最大深度限制,目的是確保模型的高性能和防止過擬合。
在GOSS算法中,首先根據訓練實例的梯度絕對值對訓練實例進行降序排序;其次,梯度較大的前a×100%的實例用子集A表示;然后用Ac表示由(1-a)×100%具有較小梯度的實例組成的集合,進一步用B表示隨機采樣大小為b×|Ac|的集合。最后根據集合A∪B上的估計方差的增益VJ~(d)拆分實例,即公式(2):
其中Al={xi∈A:xij≤d},Ar={xi∈A:xij>d},Bl={xi∈B:xij≤d},Br={xi∈B:xij>d},并且Ac的大小與集合B上的梯度總和乘以(1-a)/b相等。因此,GOSS算法中,在較小的實例子集上不是使用精確值Vj(d)確定分割點,而是使用估計的V~J(d)來確定,這樣可以顯著降低計算成本。
本文中使用的3個二分類數據集皆由UCI數據庫收集,從Kaggle下載。隨機選取3個數據集的75%做訓練集,25%做測試集。其中電信客戶流失數據集屬于類別不平衡數據,本文使用SMOTE采樣方法對其進行上采樣處理。SMOTE是一種具有代表性的過采樣方法算法,即把少量樣本的樣本進行采樣,它是基于隨機過采樣算法的改進。由于隨機過采樣技術是一種簡單地復制樣本以增加多個樣本的策略,因此很容易產生模型過擬合的問題,即能使模型學習獲得的信息過于特殊而不夠泛化。SMOTE算法的基本思想是分析少數樣本,根據少數樣本以KNN技術合成新樣本,并將其添加到數據集中,流程見圖3。
采樣前電信客戶流失數據集的正例和反例的比例約為1∶3,使用SMOTE算法采樣后電信客戶流失數據集的正例和反例的比例為1∶1。處理后的具體數據集的信息見表1。

表1 數據集信息
紅葡萄酒數據集、電信客戶流失數據集的全部特征描述見表2、表3。

表2 紅葡萄酒數據特征描述

表3 電信客戶流失數據特征描述
乳腺癌數據集包含30個特征,前10個特征表示細胞核特征的平均值;第11至第20個特征表示細胞核特征值的標準差,反映不同細胞核在各個特征數值上的波動情況;第21到30個特征為樣本圖像中細胞核特征值的最大值。
在3個數據集實例中,紅葡萄酒數據集和乳腺癌數據集的特征是定量變量,電信用戶流失數據集中有定量變量(如每月費用),也有定性變量(如性別)。
建模過程中的一個重要步驟是建立科學且合理的數據指標,以評估算法模型的預測性能。因此,本文使用Accuracy、Recall、Precision、F1-Score以及AUC值作為模型的評估指標,機器學習中較常用的評估性能的是混淆矩陣,見表4,它能夠把預測分布結果直觀地顯示[5]。各個指標的計算方法如下。

表4 混淆矩陣表
準確率(Accuracy):
Accuracy=(TP+TN)/(TP+FP+TN+FN)
準確率指被模型分類正確數占總樣本實例數量的比例。
召回率(Recall):
Recall=TP/(TP+FN)
召回率描述了實際為正的樣本中被預測為正樣本的比例。
精確率(Precision):
Precision=TP/(TP+FP)
精確率描述了正確預測為正的占全部預測為正的比例。
F1值(F1-Score):
F1=(2TP)/(2TP+FP+TN)
F1分數是調和精確率和召回率的平均數。
為了量化模型分析,引入AUC的概念,即ROC曲線下面積,ROC曲線一般都會在直線y=x的上方,AUC值指從實際值為1的樣本內預測成功的概率大于實際值為0的樣本內預測失敗的概率,AUC值一般介于0.5~1。AUC值越高,模型的預測性能越好。
本文試驗是在Python 3.7.3 [MSC v.1915 64 bit(AMD64)]:: Anaconda,Inc.on win32環境,在Python自帶的scikit-learn接口下進行。
如表5所示,LightGBM模型在對乳腺癌、紅葡萄酒、電信客戶流失3個數據集的分類預測中,準確率、召回率、精確率、F1-score均在0.8以上,且AUC值分別為0.99、0.88、0.92。從以上模型評估指標的結果說明,LightGBM模型的分類預測效果較好。且LightGBM模型相對于AdaBoost、GBDT和XGBoost的運行時長和所占用的內存均有很大的提升,特別是在對電信客戶流失的應用中,更突出LightGBM在數據量大的數據集中的計算優勢,見表6。

表5 LightGBM模型評估指標

表6 各模型運行時長和占用內存
(1)計算速度更快。LightGBM使用直方圖算法將樣本轉換為組間復雜度直方圖,并使用單邊梯度算法在訓練期間過濾掉具有較小梯度的樣本,從而減少計算量;LightGBM采用優化后的特征并行、數據并行方法,甚至當數據量非常大時采用投票并行的策略以加速計算,同時也會優化緩存。
(2)占用內存更小。LightGBM 使用直方圖算法將存儲特征值轉變為存儲箱值,并且采用捆綁相互排斥的特征來減少訓練前的特征數量,從而減少內存使用量。
(3)支持類別特征(即不需要做獨熱編碼)。大多數機器學習方法不能直接支持類別功能。通常情況下,類別的屬性需要轉換為多維的獨熱編碼,但這會降低空間和時間的效率,使用類別在實踐中非常常見。在此基礎上,LightGBM優化了類別的處理,即類別功能可直接輸入,無需額外的獨熱編碼擴展,并將類別特征的決策規則添加到決策樹算法中。
可能會創建比較深的樹從而易發生過擬合;LightGBM是基于偏差的算法,因此,它將對噪聲點更敏感;對最優解的搜尋是基于最優變量的切分,沒有考慮當最優解可能是所有特征的組合時這一事實。
本文提出了LightGBM模型,介紹了GOSS算法、EFB算法和直方圖算法。然后通過實例分析LightGBM在二分類數據中的應用,計算出模型評估指標的值,并歸納出其優點和缺點,以供參考。