Boost和bagging算法
無意間開啟了xgboost,為了弄清楚它的原理,只能往下挖,隨著xgboost->gbdt->boost來到基本的boost算法,同時(shí)也遇見了Boost的伙伴Bagging。接下來,稍微看看他們吧。
學(xué)習(xí)Bagging和Boost首先需要了解兩個(gè)名詞“弱分類器”和“強(qiáng)分類器”。
“弱分類器”的分類能力不強(qiáng),但它又比隨機(jī)選的效果稍微好點(diǎn),類似于“臭皮匠”。
“強(qiáng)分類器”具有很強(qiáng)的分類能力,也就是把特征扔給它,他能分的比較準(zhǔn)確,算是“諸葛亮”一類的。
如果直接可以建立一個(gè)強(qiáng)分類器,那弱分類器實(shí)際上就是多余的,但是,這世上“絕頂聰明的諸葛亮”少之又少,反而,在某方面有才華的人很多。于是,Boost和Bagging都選擇了用三個(gè)臭皮匠去頂諸葛亮。
實(shí)際上,在深度學(xué)習(xí)大行其道的今天,分類器的分類能力基本都比較好,但通常也會(huì)“強(qiáng)強(qiáng)聯(lián)手”組成一個(gè)更強(qiáng)的決策系統(tǒng)。
Boost和Bagging都是構(gòu)建多個(gè)弱學(xué)習(xí)算法,形成多個(gè)弱分類器,得到多種比較粗糙的分類規(guī)則,然后將這些弱分類規(guī)則組織成強(qiáng)分類規(guī)則。
1. 提升算法Boost
boost通常采用改變訓(xùn)練數(shù)據(jù)的概率分布,針對(duì)不同的訓(xùn)練數(shù)據(jù)分布調(diào)用弱學(xué)習(xí)算法學(xué)習(xí)一組弱分類器。在多次迭代的過程中,當(dāng)前次迭代所用的訓(xùn)練數(shù)據(jù)的概率分布會(huì)依據(jù)上一次迭代的結(jié)果而調(diào)整。也就是說訓(xùn)練數(shù)據(jù)的各樣本是有權(quán)重的,這個(gè)權(quán)重本身也會(huì)隨著迭代而調(diào)整。如下圖,Dm為訓(xùn)練數(shù)據(jù)集的概率分布,第一次迭代,基本分類器C1的分類誤差用于調(diào)整D2,第二次迭代,基本分類器C2用于迭代D3, ...。
不同分布的訓(xùn)練數(shù)據(jù)進(jìn)入不同學(xué)習(xí)法則后,得到的各基本分類器通常經(jīng)過線性組合,形成強(qiáng)分類器。例如,像Adaboost和xgboost,最后的強(qiáng)分類器都是弱分類器的加性組合。
從上面的結(jié)構(gòu)圖可以看出,很明確的可優(yōu)化點(diǎn)有兩點(diǎn):訓(xùn)練數(shù)據(jù)集的分布、各基本分類器在線性組合中的權(quán)重w_m。對(duì)于訓(xùn)練數(shù)據(jù)集的分布,通常,被上一次分類錯(cuò)誤的樣本的權(quán)重會(huì)被調(diào)大,被正確分類的會(huì)被調(diào)小。基本分類器的誤差越大,其權(quán)重越小,反之越大。
2. Bagging算法
Bagging直譯為“增強(qiáng)聚合”。它的方式是訓(xùn)練幾個(gè)分類器,然后讓這幾個(gè)分類器的輸出當(dāng)做分類投票,選擇票數(shù)最多的那個(gè)輸出作為最后的輸出。感覺起來,這就是大家常用的投票方式。Dropout也算是一種Bagging學(xué)習(xí)。
Bagging的特點(diǎn):
? A. 對(duì)每個(gè)分類器,輸入數(shù)據(jù)都是從原始訓(xùn)練數(shù)據(jù)中可重復(fù)的采樣, 每個(gè)分類器的輸入服從相同的分布,且各輸入之間相互獨(dú)立。而Boost中,各訓(xùn)練數(shù)據(jù)的分布不獨(dú)立,每個(gè)分類器的輸入樣本之間也不獨(dú)立。
B. 各分類器可以采用相同算法,不同的超參數(shù);也可采用不同算法; Boost基本采用相同的算法。
C. 每個(gè)分類器的輸出沒有權(quán)重之分,都是平等的。
Boost和Bagging都稱為集成方法。
總結(jié)
以上是生活随笔為你收集整理的Boost和bagging算法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php上传图片代码编辑,simditor
- 下一篇: php简易验证码,PHP简易汉字验证码