(1)函數(shù)模型:Boosting的函數(shù)模型是疊加型的,即 F(x)=∑i=1kfi(x;θi)
(2)目標函數(shù):選定某種損失函數(shù)作為優(yōu)化目標E{F(x)}=E{∑i=1kfi(x;θi)}
(3)優(yōu)化算法:貪婪地逐步優(yōu)化,即θ?m=argminθmE{∑i=1m?1fi(x;θ?i)+fm(x;θm)}
需要解決的問題
對于Boosting算法,需要解決兩個問題:
- 如何調(diào)整訓練集,使得在訓練集上訓練的弱分類器得以進行;
- 如何將訓練得到的各個弱分類器聯(lián)合起來形成強分類器。
特點:
- Boosting是一種框架算法,擁有系列算法,如AdaBoost,GradientBoosting,LogitBoost等算法。
- Boosting系列算法的主要區(qū)別在于其三要素選取的函數(shù)不同
- 可以提高任意給定學習算法準確度
- 訓練過程為階梯狀,弱分類器按次序一一進行訓練(實現(xiàn)上可以做到并行),弱分類器的訓練集按照某種策略每次都進行一定的轉(zhuǎn)化。最后以一定的方式將弱分類器組合成一個強分類器。
- Boosting中所有的弱分類器可以是不同類的分類器
圖示:

AdaBoost算法
算法的實現(xiàn):
1、若為Adaboost分類,函數(shù)模型使用CART分類樹;若為Adaboost回歸,函數(shù)模型使用CART回歸樹。
2、損失函數(shù)為“指數(shù)損失函數(shù)”
3、針對Boosting需要解決的兩個問題,AdaBoost算法采用了以下策略:
- 使用加權后選取的訓練數(shù)據(jù)代替隨機選取的訓練樣本,這樣將訓練的焦點集中在比較難分的訓練數(shù)據(jù)樣本上;
- 將弱分類器聯(lián)合起來,使用加權的投票機制代替平均投票機制。讓分類效果好的弱分類器具有較大的權重,而分類效果差的分類器具有較小的權重。
特點
- 核心思想:針對同一個訓練集訓練不同的弱分類器,然后把這些弱分類器根據(jù)權值集合起來,構(gòu)造一個更強的最終分類器。
- Adaboost算法是Boosting系列算法之一,強分類器輸出結(jié)果的是弱分類器輸出結(jié)果的加權平均。
- Adaboost算法有兩個權值,分別為樣本權值和弱分類器權值,其主要特征就是在于樣本權值的更新和弱分類器權值的更新。
- Adaboost中所有的弱分類器必須是同一種分類器,不能在同一個Adaboost算法的迭代步驟中使用不同的弱分類器。
- 弱分類器可并行實現(xiàn)。
算法的優(yōu)缺點
Adaboost的主要優(yōu)點有:
- Adaboost作為分類器時,分類精度很高
- 在Adaboost的框架下,可以使用各種回歸分類模型來構(gòu)建弱學習器,非常靈活。
- 作為簡單的二元分類器時,構(gòu)造簡單,結(jié)果可理解。
- 不容易發(fā)生過擬合
Adaboost的主要缺點有:
- 對異常樣本敏感,異常樣本在迭代中可能會獲得較高的權重,影響最終的強學習器的預測準確性。
權值更新規(guī)則
樣本權值更新:
對于分類錯誤的樣本,加大其對應的權重;而對于分類正確的樣本,降低其權重,這樣分錯的樣本就被突顯出來,從而得到一個新的樣本分布。
弱分類器權值更新:
對于準確率較高的弱分類器,加大其權重;對于準確率較低的弱分類器,減小其權重。
適用范圍
- 用于二分類或多分類的應用場景
- 用于做分類任務的baseline
算法過程
將樣本權值被更新過的新數(shù)據(jù)集送給下層弱分類器進行訓練,最后將每次訓練得到的弱分類器根據(jù)弱分類器權重融合起來,從而得到強分類器。
- 給定訓練樣本集S,其中X和Y分別對應于正例樣本和負例樣本; T為訓練的最大循環(huán)次數(shù);
- 初始化樣本權重為1/n ,即為訓練樣本的初始概率分布;
- 第一次迭代:
(1) 訓練樣本的概率分布相當下,訓練弱分類器;
(2) 計算弱分類器的錯誤率;
(3) 選取合適閾值,使得誤差最小;
(4) 更新樣本權重;
經(jīng)T次循環(huán)后,得到T個弱分類器,按更新的弱分類器權重疊加,最終得到的強分類器。
Gradient Boosting算法
算法的實現(xiàn):
1、函數(shù)模型為CART回歸樹模型
2、損失函數(shù)一般為“對數(shù)損失函數(shù)”或“指數(shù)損失函數(shù)”
Gradient Boosting算法即梯度提升算法,
3、優(yōu)化算法采用梯度下降
4、針對Boosting需要解決的兩個問題,Gradient Boosting算法采用了以下策略:
- 將殘差作為下一個弱分類器的訓練數(shù)據(jù),每個新的弱分類器的建立都是為了使得之前弱分類器的殘差往梯度方向減少。
- 將弱分類器聯(lián)合起來,使用累加機制代替平均投票機制。
特點
- 核心思想:每個新的弱分類器的建立是為了使得之前弱分類器的殘差往梯度方向減少,然后把弱分類器進行累加得到強分類器。
- GBDT算法是Boosting系列算法之一,強分類器的輸出結(jié)果是弱分類器輸出結(jié)果的累加。
- GBDT中所有的弱分類器只能是CART回歸樹
- 弱分類器無法并行實現(xiàn)
算法的優(yōu)缺點
GBDT主要的優(yōu)點有:
- 可以靈活處理各種類型的數(shù)據(jù),包括連續(xù)值和離散值。
- 在相對少的調(diào)參時間情況下,預測的準備率也可以比較高。這個是相對SVM來說的。
- 使用一些健壯的損失函數(shù),對異常值的魯棒性非常強。比如 Huber損失函數(shù)和Quantile損失函數(shù)。
GBDT的主要缺點有:
- 由于弱學習器之間存在依賴關系,難以并行訓練數(shù)據(jù)。不過可以通過自采樣的SGBT來達到部分并行。
適用范圍
- GBDT幾乎可用于所有的回歸問題(線性/非線性)
- 亦可用于二分類問題(設定閾值,大于閾值為正例,小于閾值為反例)
- 不太適用于多分類問題
算法過程
- 對數(shù)據(jù)擬合一個簡單的線性回歸或決策樹
- 計算誤差殘差。實際目標值減去預測目標值
- 將誤差殘差的新模型作為具有相同輸入變量的目標變量
- 將預測的殘差添加到先前的預測中[y_predicted2 = y_predicted1 + e1_predicted]
- 在剩余的殘差上擬合另一個模型。即[e2 = y-y_predicted2]并重復步驟2到5,直到它開始過擬合或殘差總和變成恒定。
工作過程實例
以年齡預測為例,A,B,C,D四個人,他們的年齡分別是14,16,24,26。其中A、B分別是高一和高三學生;C,D分別是應屆畢業(yè)生和工作兩年的員工。如果是用一棵傳統(tǒng)的回歸決策樹來訓練,會得到如下圖1所示結(jié)果:

現(xiàn)在我們使用GBDT來做這件事,由于數(shù)據(jù)太少,我們限定葉子節(jié)點做多有兩個,即每棵樹都只有一個分枝,并且限定只學兩棵樹。我們會得到如下圖2所示結(jié)果:

在第一棵樹分枝和圖1一樣,由于A,B年齡較為相近,C,D年齡較為相近,他們被分為兩撥,每撥用平均年齡作為預測值。此時計算殘差(殘差的意思就是: A的預測值 + A的殘差 = A的實際值),所以A的殘差就是16-15=1(注意,A的預測值是指前面所有樹累加的和,這里前面只有一棵樹所以直接是15,如果還有樹則需要都累加起來作為A的預測值)。進而得到A,B,C,D的殘差分別為-1,1,-1,1。然后我們拿殘差替代A,B,C,D的原值,到第二棵樹去學習,如果我們的預測值和它們的殘差相等,則只需把第二棵樹的結(jié)論累加到第一棵樹上就能得到真實年齡了。這里的數(shù)據(jù)顯然是我可以做的,第二棵樹只有兩個值1和-1,直接分成兩個節(jié)點。此時所有人的殘差都是0,即每個人都得到了真實的預測值。
換句話說,現(xiàn)在A,B,C,D的預測值都和真實年齡一致了。Perfect!:
A: 14歲高一學生,購物較少,經(jīng)常問學長問題;預測年齡A = 15 – 1 = 14
B: 16歲高三學生;購物較少,經(jīng)常被學弟問問題;預測年齡B = 15 + 1 = 16
C: 24歲應屆畢業(yè)生;購物較多,經(jīng)常問師兄問題;預測年齡C = 25 – 1 = 24
D: 26歲工作兩年員工;購物較多,經(jīng)常被師弟問問題;預測年齡D = 25 + 1 = 26
|