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