AdaBoost 是一種更高級的「森林」類型的決策樹察蹲,和隨機森林比起來,它有以下三個特點
- AdaBoost 的每棵樹都只有一個根節(jié)點和兩個葉子節(jié)點绒净,實際上叫樹樁(stump)可能會更合適
- AdaBoost 的每個樹樁的權(quán)重是不同的见咒,而隨機森林中的每棵樹的權(quán)重是相同的
- 前一個樹樁的錯誤數(shù)據(jù)會影響后一個樹樁的生成,意味著后面的樹樁是前面樹樁的補足挂疆。這種思想也被稱為 Boost改览,除 AdaBoost 外,GBDT 和 XGBoost 也是這樣的思想(很明顯它們中都有 Boost)缤言。
AdaBoost 的生成步驟
假設(shè)我們有以下訓(xùn)練數(shù)據(jù)宝当,我們想通過「胸口疼痛」、「血管堵塞」和「體重」這三個特征來訓(xùn)練一個心臟病預(yù)測模型:
胸口疼痛 | 血管堵塞 | 體重 | 患心臟病 |
---|---|---|---|
Yes | Yes | 205 | Yes |
No | Yes | 180 | Yes |
Yes | No | 210 | Yes |
Yes | Yes | 167 | Yes |
No | Yes | 156 | No |
No | Yes | 125 | No |
Yes | No | 168 | No |
Yes | Yes | 172 | No |
首先胆萧,我們需要為每個樣本附上一個相同的權(quán)重庆揩,因為只有 8 條數(shù)據(jù),所以每個樣本的權(quán)重均為 1/8跌穗,如下
胸口疼痛 | 血管堵塞 | 體重 | 患心臟病 | 樣本權(quán)重 |
---|---|---|---|---|
Yes | Yes | 205 | Yes | 1/8 |
No | Yes | 180 | Yes | 1/8 |
Yes | No | 210 | Yes | 1/8 |
Yes | Yes | 167 | Yes | 1/8 |
No | Yes | 156 | No | 1/8 |
No | Yes | 125 | No | 1/8 |
Yes | No | 168 | No | 1/8 |
Yes | Yes | 172 | No | 1/8 |
接下來订晌,我們利用基尼不純度在這 3 個特征中找一個最合適的作為樹根,經(jīng)過計算蚌吸,當(dāng)「體重 >176」 時锈拨,基尼不純度最小,則第一個樹樁的節(jié)點為「體重 >176」羹唠,如下圖所示:
產(chǎn)生出一個樹樁后奕枢,我們把該樹樁判斷錯誤的樣本拿出來娄昆,將它們的權(quán)重相加,便得出該樹樁的總誤差缝彬,上述樹樁只有一個錯誤樣本:
胸口疼痛 | 血管堵塞 | 體重 | 患心臟病 | 樣本權(quán)重 |
---|---|---|---|---|
Yes | Yes | 167 | Yes | 1/8 |
則該樹樁的總誤差(Total Error)即這條錯誤樣本的權(quán)重——0.125萌焰。通過總誤差,我們便可以計算出該樹樁的 Weight:
該公式的曲線如下圖所示谷浅,可以看到扒俯,誤差的取值范圍在 0 到 1 之間,隨著誤差越大壳贪,樹樁的 Weight 越小陵珍,上例中,我們的誤差為 0.125违施,所對應(yīng)的 Weight 為 0.973互纯,也就是圖中藍色點所處的位置:
一棵樹樁產(chǎn)生出來后,接著就要產(chǎn)生第二棵磕蒲,前面說了留潦,后一棵樹的生成依賴于前一棵樹的誤差,具體的辣往,我們會根據(jù)這個誤差來調(diào)整每個樣本的權(quán)重兔院,這樣,后面的樹就可以根據(jù)樣本的新權(quán)重來訓(xùn)練了站削,更進一步坊萝,前一棵樹中錯誤的樣本,我們希望在下一棵樹的訓(xùn)練中许起,提高這些樣本的權(quán)重十偶,同時降低正確樣本的權(quán)重,這樣下一棵樹便會更傾向于把這類樣本處理好园细,起到了對前面樹的補足作用惦积。
整體誤差和樹的 Weight 成負相關(guān)關(guān)系,Weight 越高代表置信度越高猛频,這時錯誤的樣本相對于 Weight 低的樹來說狮崩,樣本權(quán)重要調(diào)的更高,而正確的樣本的權(quán)重要調(diào)的更低鹿寻,錯誤樣本權(quán)重和正確樣本權(quán)重的調(diào)整分別如下面左圖和右圖所示:
對于本例來說睦柴,第一個樹樁的 Weight 為 0.973,則錯誤樣本的權(quán)重根據(jù)左圖公式毡熏,將調(diào)整為 爱只,同理,正確樣本的權(quán)重根據(jù)右圖公式招刹,將調(diào)整為 恬试,歸一化后,最終所有樣本的權(quán)重調(diào)整如下:
序號 | 舊樣本權(quán)重 | 新樣本權(quán)重 | 歸一化后 |
---|---|---|---|
1 | 1/8 | 0.05 | 0.07 |
2 | 1/8 | 0.05 | 0.07 |
3 | 1/8 | 0.05 | 0.07 |
4 | 1/8 | 0.33 | 0.49 |
5 | 1/8 | 0.05 | 0.07 |
6 | 1/8 | 0.05 | 0.07 |
7 | 1/8 | 0.05 | 0.07 |
8 | 1/8 | 0.05 | 0.07 |
接下來疯暑,我們需要根據(jù)新的特征權(quán)重來訓(xùn)練樹樁训柴,其中的一種辦法是根據(jù)權(quán)重來抽樣,即在每抽一條數(shù)據(jù)之前妇拯,產(chǎn)生一個 0-1 的隨機數(shù)甸私,根據(jù)隨機數(shù)來決定抽哪條數(shù)據(jù)曼追。以上面的數(shù)據(jù)舉例,當(dāng)隨機數(shù)落在 [0, 0.07) 范圍內(nèi)時,則抽出第 1 條樣本雪标,落在 [0.07, 0.14) 范圍內(nèi)時,則抽出第 2 條樣本柬批,以此類推握截。
抽樣完成后,我們重新對這些樣本賦予等值的權(quán)重丹弱,如下:
胸口疼痛 | 血管堵塞 | 體重 | 患心臟病 | 樣本權(quán)重 |
---|---|---|---|---|
No | Yes | 156 | No | 1/8 |
Yes | Yes | 167 | Yes | 1/8 |
No | Yes | 125 | No | 1/8 |
Yes | Yes | 167 | Yes | 1/8 |
Yes | Yes | 167 | Yes | 1/8 |
Yes | Yes | 172 | No | 1/8 |
Yes | Yes | 205 | Yes | 1/8 |
Yes | Yes | 167 | Yes | 1/8 |
可見第 4 條樣本被重復(fù)抽出來了多次(它的樣本權(quán)重最高)德撬,使用這批數(shù)據(jù)訓(xùn)練后,新的樹樁會更傾向于把這條樣本分類正確躲胳,因為在訓(xùn)練時蜓洪,重復(fù)的樣本會受到更大的懲罰。
接下來的步驟和最開始的一樣坯苹,重復(fù)上面的過程就可以了隆檀。
AdaBoost 的預(yù)測
在構(gòu)建完 AdaBoost 后,我們該如何做預(yù)測呢粹湃?預(yù)測過程和隨機森林類似恐仑,都是用每棵樹的結(jié)果來投票,差別在于這里采用的是加權(quán)投票再芋。例如我們有條數(shù)據(jù)菊霜,每棵樹對該數(shù)據(jù)的預(yù)測結(jié)果如下:
樹序號 | 樹 Weight | 預(yù)測結(jié)果 |
---|---|---|
1 | 0.97 | 1 |
2 | 0.34 | 0 |
... | ... | ... |
100 | 0.46 | 1 |
聚合后,把相同預(yù)測結(jié)果的 Weight 相加济赎,如下
預(yù)測結(jié)果 | 樹 Weight 之和 |
---|---|
1 | 43.7 |
0 | 20.1 |
取 Weight 較大者鉴逞,所以該條數(shù)據(jù)的預(yù)測結(jié)果為 1.
總結(jié)
本文我們一起學(xué)習(xí)了 AdaBoost 的構(gòu)建過程,AdaBoost 和隨機森林比起來司训,有 3 個特點:
- 每棵樹只有一個根節(jié)點和兩個葉子節(jié)點
- 后一棵樹由前一棵樹的誤差決定
- 每棵樹都有不同的權(quán)重构捡,預(yù)測時會根據(jù)權(quán)重來聚合預(yù)測結(jié)果
參考:AdaBoost, Clearly Explained
相關(guān)文章: