1. 程式人生 > >提升(Boosting)方法簡介

提升(Boosting)方法簡介

提升(boosting)方是一種常用的機器學習方法,應用十分廣泛。提升方法的基本思想是:對於一個複雜的學習任務,我們首先構造多個簡單的學習模型,然後再把這些簡單模型組合成一個高效的學習模型。實際上,就是“三個臭皮匠頂個諸葛亮”的道理。

1. 基本概念

1.1 “強可學習”和“弱可學習”

       “強可學習”是指:在概率近似正確(probably approximately correct, PCA)學習的框架中,一個概念(一個類),如果存在一個多項式的學習演算法能夠學習它,並且正確率很高。而如果在PAC學習框架中,如果存在一個多項式的學習演算法能夠學習這個概念,但是學習的正確率僅比隨機猜想略好,那麼稱之為“弱可學習”。

    事實證明,在PCA學習的框架下,一個概念是強可學習的充分必要條件是該概念是弱可學習的。因此,我們對於一個複雜的學習問題,可以先構造簡單的“弱學習演算法”,然後再想辦法把“弱學習演算法”提升為“強學習演算法”。

1.2 提升演算法的兩個關鍵問題

       以分類問題為例,給定一個訓練集,發現較為粗糙的分類規則(弱分類器)比發現精確的分類規則(強分類器)要容易很多。提升方法就是從弱學習方法出發,反覆學習可以得到一系列的弱分類器,然後把這些弱分類器組合起來,構成一個強分類器。因此,提升方法需要解決兩個關鍵問題是:如何學習一系列的弱分類器和如何把這些弱分類器組合成一個強分類器。

       對於問題一,大多數提升方法都是通過改變訓練資料的概率分佈(訓練資料的權值分佈),對於不同的訓練資料分佈執行弱學習演算法來學習一系列的弱分類器。

對於問題二,不同的提升方法採取不同的方式,如平均法、投票法、學習法等。其中AdaBoost採取加權多數表決的方法,即加大分類誤差率小的弱分類器的權值,使其在表決中起較大的作用。


2. 經典Boosting方法

       Boosting系列演算法最經典的包括AdaBoost演算法和GBDT演算法。

2.1  AdaBoost演算法

2.2  GBDT演算法