Boost和bagging算法

無意間開啓了xgboost,爲了弄清楚它的原理,只能往下挖,隨着xgboost->gbdt->boost來到基本的boost算法,同時也遇見了Boost的夥伴Bagging。接下來,稍微看看他們吧。

學習Bagging和Boost首先需要了解兩個名詞“弱分類器”和“強分類器”。

“弱分類器”的分類能力不強,但它又比隨機選的效果稍微好點,類似於“臭皮匠”。

“強分類器”具有很強的分類能力,也就是把特徵扔給它,他能分的比較準確,算是“諸葛亮”一類的。

如果直接可以建立一個強分類器,那弱分類器實際上就是多餘的,但是,這世上“絕頂聰明的諸葛亮”少之又少,反而,在某方面有才華的人很多。於是,Boost和Bagging都選擇了用三個臭皮匠去頂諸葛亮。

實際上,在深度學習大行其道的今天,分類器的分類能力基本都比較好,但通常也會“強強聯手”組成一個更強的決策系統。


Boost和Bagging都是構建多個弱學習算法,形成多個弱分類器,得到多種比較粗糙的分類規則,然後將這些弱分類規則組織成強分類規則。

1. 提升算法Boost

boost通常採用改變訓練數據的概率分佈,針對不同的訓練數據分佈調用弱學習算法學習一組弱分類器。在多次迭代的過程中,當前次迭代所用的訓練數據的概率分佈會依據上一次迭代的結果而調整。也就是說訓練數據的各樣本是有權重的,這個權重本身也會隨着迭代而調整。如下圖,Dm爲訓練數據集的概率分佈,第一次迭代,基本分類器C1的分類誤差用於調整D2,第二次迭代,基本分類器C2用於迭代D3, ...。


不同分佈的訓練數據進入不同學習法則後,得到的各基本分類器通常經過線性組合,形成強分類器。例如,像Adaboost和xgboost,最後的強分類器都是弱分類器的加性組合。


從上面的結構圖可以看出,很明確的可優化點有兩點:訓練數據集的分佈、各基本分類器在線性組合中的權重w_m。對於訓練數據集的分佈,通常,被上一次分類錯誤的樣本的權重會被調大,被正確分類的會被調小。基本分類器的誤差越大,其權重越小,反之越大。


2. Bagging算法

Bagging直譯爲“增強聚合”。它的方式是訓練幾個分類器,然後讓這幾個分類器的輸出當做分類投票,選擇票數最多的那個輸出作爲最後的輸出。感覺起來,這就是大家常用的投票方式。Dropout也算是一種Bagging學習。

Bagging的特點:

  A. 對每個分類器,輸入數據都是從原始訓練數據中可重複的採樣, 每個分類器的輸入服從相同的分佈,且各輸入之間相互獨立。而Boost中,各訓練數據的分佈不獨立,每個分類器的輸入樣本之間也不獨立。

B. 各分類器可以採用相同算法,不同的超參數;也可採用不同算法; Boost基本採用相同的算法。

C. 每個分類器的輸出沒有權重之分,都是平等的。


Boost和Bagging都稱爲集成方法。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章