Boosting算法之Adaboost和GBDT


  Boosting是串行式集成學習方法的代表,它使用加法模型和前向分步算法,將弱學習器提升為強學習器。Boosting系列算法里最著名的算法主要有AdaBoost和梯度提升系列算法(Gradient Boost,GB),梯度提升系列算法里面應用最廣泛的是梯度提升樹(Gradient Boosting Decision Tree,GBDT)。

一、Adaboost

1、Adaboost介紹

  Adaboost算法通過在訓練集上不斷調整樣本權重分布,基於不同的樣本權重分布,重復訓練多個弱分類器,最后通過結合策略將所有的弱分類器組合起來,構成強分類器。Adaboost算法在訓練過程中,注重減少每個弱學習器的誤差,在訓練下一個弱學習器時,根據上一次的訓練結果,調整樣本的權重分布,更加關注那些被分錯的樣本,使它們在下一次訓練中得到更多的關注,有更大的可能被分類正確。

 

 

Adaboost算法框架圖

2、Adaboost算法過程

1)初始化樣本權重,一共有n個樣本,則每個樣本的權重為1/n

2)在樣本分布Dt上,訓練弱分類器,for t=1,2,……T:

a、訓練分類器ht

b、計算當前弱分類器的分類誤差率

c、判斷誤差率是否小於0.5,是則繼續,否則退出循環

d、計算當前弱分類器的權重系數alpha值

 

e、根據alpha值調整樣本分布Dt+1

如果樣本被正確分類,則該樣本的權重更改為:

 

如果樣本被錯誤分類,則該樣本的權重更改為:

 

3)組合弱分類器得到強分類器

 

3、算法偽代碼:

 

  AdaBoost算法每一輪都要判斷當前基學習器是否滿足條件,一旦條件不滿足,則當前學習器被拋棄,且學習過程停止。Adaboost算法使用指數損失函數,通過最小化指數損失函數,得到在每次迭代中更新的權重參數計算公式。AdaBoost算法使用串行生成的序列化方法,多個基學習器之間存在強依賴關系。Adaboost的每一個弱分類器的目標,都是為了最小化損失函數,下一個弱分類器是在上一個分類器的基礎上對錯分樣本進行修正,所以, AdaBoost算法是注重減小偏差的算法。

  Adaboost提供的是一種框架,可使用任何分類器作為基學習器,適用很多分類場景,通常可以獲得不錯的分類效果,例如,基於Adaboost的人臉檢測算法。

二、GBDT

1、GBDT介紹

  GBDT在競賽和工業中都經常使用,能有效的應用於分類,回歸,排序問題,通常能有不錯的效果,是一種應用非常廣泛的算法。GBDT是梯度提升算法,也是采用加法模型。GBDT以CART回歸樹作為基學習器,通過迭代,每次通過擬合負梯度來構建新的CART回歸樹,通過構建多顆CART樹來降低模型的偏差,實現更好的分類性能。GBDT的核心思想是在每次創建新的CART回歸樹時,通過擬合當前模型損失函數的負梯度,來最小化損失函數。GBDT用於分類和回歸時都使用CART回歸樹,分類時使用指數損失或對數損失,回歸時使用平方誤差損失函數,絕對值損失函數,Huber損失函數等。當GBDT使用平方誤差作為損失函數時,負梯度正好是殘差。

  GBDT用CART回歸樹為基分類器,在每次構建新樹時,將樣本在當前模型的殘差作為樣本標簽來訓練下一顆樹,經過多次迭代提升模型的分類性能。決策樹和GBDT雖然結果相同,但是決策樹容易過擬合,泛化能力差,可能在當前訓練集上表現較好,在其他數據集上效果較差,而GBDT是結合了多顆樹模型,具有較好的泛化能力。

2、GBDT回歸算法

  GBDT算法過程就是創建多顆CART回歸樹的過程,只是在創建下一顆樹的時候擬合當前模型的負梯度,就是將樣本在當前模型的負梯度作為標簽,去構建下一顆樹。GBDT用於分類時也使用CART回歸樹,輸出類別值,不能直接擬合負梯度,這里只介紹GBDT回歸算法。

輸入:訓練集D={(x1,y1),(x2,y2),……,(xm,ym)},最大迭代次數T,損失函數L

輸出:強學習器f(X)

1)      初始化弱學習器

 

2)      對迭代次數t=1,2,……,T有:

a.對樣本i=1,2,……,m,計算負梯度

 

b.利用(xi,rti),擬合一顆CART回歸樹,得到第t可回歸樹,其對應的葉子節點區域為Rtj,J=1,2,……,J。其中J表示回歸樹t的葉子節點的個數。

c.對葉子區域j=1,2,……,J,計算最佳擬合值

d.更新強學習器

 

3)      得到強學習器表達式

3、GBDT算法負梯度擬合

GBDT是加法模型,當前模型可表示為

 

其中,是第m顆樹。

當前損失函數為

 

泰勒一階展開公式為:

對當前損失函數泰勒一階展開

梯度下降公式

 

其中,表示損失函數,是關於參數的式子

在梯度方向損失函數減少最快,最小化損失函數,用梯度下降法求解參數

同理,最小化損失函數,用梯度下降法求解,則

 

 

  所以GBDT算法每次迭代創建新的CART樹ht(x),實質上是在擬合損失函數的負梯度,利用梯度下降算法在函數空間求解。當GBDT使用均方誤差作為損失函數時,此時的負梯度正好是殘差。

GBDT的優點:

(1)可用於所有回歸問題(包括線性和非線性問題)

(2)可構造組合特征,通常用GBDT構造的組合特征加上原來的特征一起輸入LR模型做分類

(3)可得到特征的重要權重值

GBDT的正則化有三種方式:

(1)子采樣

(2)步長

(3)CART樹剪枝

4、CART回歸樹

  CART假設決策樹是二叉樹,遞歸地二分每個特征,將輸入空間划分為有限個單元,並在這些單元上確定預測的概率分別,也就是在輸入給定的條件下輸出的條件概率分布。

CART算法由兩步組成:

(1)決策樹生成

(2)決策樹剪枝

CART回歸樹的建樹過程和其他決策樹一樣,同樣是尋找最優划分特征和最優切分點。

CART回歸樹用平方誤差最小化划分節點

                                                                

  當輸入空間的划分確定時,用平方誤差來表示回歸樹對於訓練數據的預測誤差,用平方誤差最小的准則求解每個單元上的最優輸出值。所以,單元Rm上的cm的最優值是Rm上的所有輸入實例xi對應的輸出yi的均值,在一個划分單元Rm上的樣本的取值相同。

故單元Rm的值cm

 

回歸樹生成過程:

(1)尋找最優切分變量和最優切分點,遍歷所有特征j的所有划分點s,求解

 

c1、c2是左右兩個節點上的實例的y的平均值。

(2)用選定的(j,s)對划分區域並計算相應的輸出值:

 

(3)繼續對兩個子區域調用步驟(1),(2),直至滿足停止條件。

(4)將輸入空間划分為M個區域R1,R2,……,RM,生成決策樹:

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM