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都稱為集成方法。
總結
以上是生活随笔為你收集整理的Boost和bagging算法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php上传图片代码编辑,simditor
- 下一篇: 自然语言处理(NLP):竞赛平台【国际、