常用决策树集成模型Random Forest、Adaboost、GBDT详解
常用的集成學習策略
在之前的文章我有介紹過常用的基本決策樹模型ID3、C4.5、CART算法,其中提到了一個關于基本決策樹模型的缺點,那就是決策樹模型學習一棵最優的決策樹被認為是NP-Complete問題。實際中的決策樹是基于啟發式的貪心算法建立的,這種算法不能保證建立全局最優的決策樹,Random Forest 引入隨機能緩解這個問題。
那么什么是Random Forest呢?其實這正是今天首先要介紹的集成學習框架的一種,常見的集成學習框架有三種:Bagging,Boosting 和 Stacking。三種集成學習框架在基學習器的產生和綜合結果的方式上會有些區別,其中Stacking用的不是特別多,僅做簡單了解即可。
下面我會詳細介紹Bagging和Boosting的集成思想和對應的集成框架,但是不包括它們的推導,至于它們的公式推導我會在會另外用一篇博文進行詳細介紹。
1.Bagging
Boosting是一簇可將基學習器提升為強學習器的算法。每個基學習器都會對訓練集進行有放回抽樣得到子訓練集,比較著名的采樣法為 0.632 自助法。每個基學習器基于不同子訓練集進行訓練,并綜合所有基學習器的預測值得到最終的預測結果。Bagging 常用的綜合方法是投票法,票數最多的類別為預測類別。
2.Boosting
Boosting 訓練過程為階梯狀,基模型的訓練是有順序的,每個基模型都會在前一個基模型學習的基礎上進行學習,最終綜合所有基模型的預測值產生最終的預測結果,用的比較多的綜合方式為加權法。
3.Stacking
Stacking 是先用全部數據訓練好基模型,然后每個基模型都對每個訓練樣本進行的預測,其預測值將作為訓練樣本的特征值,最終會得到新的訓練樣本,然后基于新的訓練樣本進行訓練得到模型,然后得到最終預測結果。
總結:
上面介紹的三種集成學習思想,都可以改善基本決策樹模型的貪心算法得到的不是最優解的問題。并且我們可能常聽到這樣一種說法:
- bagging是減少方差(variance)
- boosting是減少偏差(bias)
**偏差:**可以簡單的理解為“ 準度 ”,與目標值得距離越遠偏差越大。減小偏差需要增加模型得參數,但又易過擬合。
**方差:**可以簡單得理解為“ 穩度 ”,分散程度越高方差越大(葉子節點多)。減小方差需要加少模型參數,但又易欠擬合。
需要注意得是,我們常說的集成學習的基模型與弱模型本不是一回事。集成學習的基模型可能是“弱模型”也可能是“強模型”。
- 通常來說弱模型是偏差高(在訓練集上準確度低)方差小(防止過擬合能力強)的模型。
- 強模型是指偏差低,方差高的模型,也就是準確度高,但是可能過擬合的模型
綜上所述:
對于 Bagging 來說,整體模型的偏差與基模型近似,而隨著模型的增加可以降低整體模型的方差,故其基模型需要為強模型;(偏差低,方差高)準確率高,但是可能有一點過擬合。
對于 Boosting 來說,整體模型的方差近似等于基模型的方差,而整體模型的偏差由基模型累加而成,故基模型需要為弱模型。(偏差高,方差低)準確率低,但是并沒有過擬合。
常用的集成框架
1.Random Forest
Random Forest(隨機森林)是 Bagging 陣容的一員,很多人一聽到隨機森林就把重點放在“森林”兩個字上面了,簡單地認為隨機森林就是很多棵決策樹組合投票,卻忽略了森林前面的重要修飾“隨機”。
集成思想:
隨機森林是 Bagging 的擴展變體,它在以決策樹為基學習器構建 Bagging 集成的基礎上,進一步在決策樹的訓練過程中引入了隨機特征選擇,因此可以概括 RF 包括四個部分:
優點:
2.Adaboost
AdaBoost(Adaptive Boosting,自適應增強)是Boosting陣容的一員,其自適應在于:前一個基本分類器分錯的樣本會得到加強,加權后的全體樣本再次被用來訓練下一個基本分類器。同時,在每一輪中加入一個新的弱分類器,直到達到某個預定的足夠小的錯誤率或達到預先指定的最大迭代次數。
集成思想:
Adaboost 模型是加法模型,學習算法為前向分步學習算法,損失函數為指數函數的分類問題,為了防止 Adaboost 過擬合,我們通常也會加入正則化項,這個正則化項我們通常稱為步長(learning rate)。對于前面的弱學習器的迭代。
加法模型:最終的強分類器是由若干個弱分類器加權平均得到的。
前向分布學習算法:算法是通過一輪輪的弱學習器學習,利用前一個弱學習器的結果來更新后一個弱學習器的訓練集權重。
優點
缺點
- 對異常點敏感,異常點會獲得較高權重。
3.GBDT
GBDT(Gradient Boosting Decision Tree,梯度提升決策樹)是Boosting陣容的一員,它是一種迭代的決策樹算法,該算法由多棵決策樹組成。GBDT 是被公認的泛化能力較強的算法。
集成思想:
GBDT通過多輪迭代,每輪迭代產生一個弱分類器,每個分類器在上一輪分類器的梯度(如果損失函數最小均方損失函數(MSE),則負梯度就是殘差值)基礎上進行訓練。對弱分類器的要求一般是足夠簡單,并且是低方差和高偏差的。因為訓練的過程是通過降低偏差來不斷提高最終分類器的精度。
GBDT主要由三部分組成:1.Gradient Boosting(GB)也就是梯度提升、2.Decision Tree(DT,這里用的是回歸樹)、3.Shrinkage(一個重要思想)
回歸樹 Regression Decision Tree
GBDT中的弱分類器選擇的是CART回歸樹,而并不是分類樹(雖然調整后也可以分類)。對于分類樹而言,其值加減無意義(如性別),而對于回歸樹而言,其值加減才是有意義的(如說年齡)22歲=16歲+4歲+2歲。GBDT 的核心在于累加所有樹的結果作為最終結果,所以 GBDT 中的樹都是回歸樹,不是分類樹,這一點相當重要。
回歸樹在分枝時會窮舉每一個特征的每個閾值以找到最好的分割點,衡量標準是最小化均方誤差。
注意:GBDT用于分類問題仍然使用CART回歸樹,使用softmax進行概率映射,然后對概率的殘差進行擬合
梯度迭代 Gradient Boosting
讓損失函數沿著梯度方向的下降。這個就是GBDT中GB的核心。GBDT 每輪迭代的時候,都去擬合損失函數在當前模型下的負梯度。(如果損失函數使用的是平方誤差損失函數,則這個損失函數的負梯度就可以用殘差來代替,以下所說的殘差擬合,便是使用了最小均方損失函數**(MSE)**)
Boosting思想:
GBDT 的 Boosting 不同于 Adaboost 的 Boosting,GBDT 的每一步殘差計算其實變相地增大了被分錯樣本的權重,而對與分對樣本的權重趨于 0,這樣后面的樹就能專注于那些被分錯的樣本。
縮減 Shrinkage
Shrinkage 的思想認為,每走一小步逐漸逼近結果的效果要比每次邁一大步很快逼近結果的方式更容易避免過擬合。即它并不是完全信任每一棵殘差樹。
加上Shrinkage之前:
加上Shrinkage之后:
Shrinkage 不直接用殘差修復誤差,而是只修復一點點,把大步切成小步。本質上 Shrinkage 為每棵樹設置了一個 weight,累加時要乘以這個 weight,當 weight 降低時,基模型數會配合增大。
優點:
缺點:
- 對異常點敏感。
參考文獻
https://zhuanlan.zhihu.com/p/86263786
總結
以上是生活随笔為你收集整理的常用决策树集成模型Random Forest、Adaboost、GBDT详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 炒薏仁的功效与作用、禁忌和食用方法
- 下一篇: 炒黄柏的功效与作用、禁忌和食用方法