adaboost的前身的boosting演算法。2023年, schapire最先構造出一種多項式級的演算法,對該問題做了肯定的證明,這就是最初的boosting演算法。一年後,freund提出了一種效率更高的boosting演算法。但是,這兩種演算法存在共同的實踐上的缺陷,那就是都要求事先知道弱學習演算法學習正確率的下限。
2023年, freund和schapire改進了boosting演算法,提出了adaboost(adaptive boosting)演算法,該演算法效率和freund於2023年提出的boosting演算法幾乎相同,但不需要任何關於弱學習器的先驗知識,因而更容易應用到實際問題當中。之後,freund和schapire進一步提出了改變boosting投票權重的adaboost.m1, adaboost.m2等演算法,在機器學習領域受到了極大的關注。
adaboost是一種迭代演算法,其核心思想是針對同乙個訓練集訓練不同的分類器(弱分類器),然後把這些弱分類器集合起來,構成乙個更強的最終分類器(強分類器)。
其演算法本身是通過改變資料分布來實現的,它根據每次訓練集之中每個樣本的分類是否正確,以及上次的總體分類的準確率,來確定每個樣本的權值。
將修改過權值的新資料集送給下層分類器進行訓練,最後將每次訓練得到的分類器最後融合起來,作為最後的決策分類器。使用adaboost分類器可以排除一些不必要的訓練資料特徵,並將關鍵放在關鍵的訓練資料上面。
這就是adaboost的結構,最後的分類器ym是由數個弱分類器(weak classifier)組合而成的,相當於最後m個弱分類器來投票決定分類,而且每個弱分類器的「話語權」α不一樣。
這裡闡述下演算法的具體過程:
1.初始化所有訓練樣例的權重為1 / n,其中n是樣例數
2.for m=1,……m:
其中zm:
是規範化因子,使所有w的和為1。
3.得到最後的分類器:
可以看到整個過程和最上面那張圖一樣,前乙個分類器改變權重w,同時影響後面的分類器。如果乙個訓練樣例,在前乙個分類器中被誤分,那麼它的權重會被加重,因此,被正確分類的樣例的權重會降低。這就使得下乙個分類器,會更在意被誤分的樣例,那麼其中那些α和w的更新是怎麼來的呢?下面我們從前項分步算加法模型的角度來看看adaboost:
直接將前項分步加法模型具體到adaboost上:
其中 fm是前m個分類器的結合:
此時我們要最小化e,同時要考慮α和yi,但現在我們假設前m-1個α和y都已經fixed了,那麼:
其中,可以被看做乙個常量,因為它裡面沒有αm和ym.
接下來:
其中tm表示正分類的集合,mm表示誤分類的集合,這一步其實就是把上面那個式子拆開,沒什麼複雜的東西.然後就是找ym了,就是最小化下式的過程,其實就是我們訓練弱分類器.
有了ym,α也就可以找了,然後繼續就可以找到更新w的公式了(注意這裡得到的w公式是沒有加規範化因子z的公式,為了計算方便我們加了個z進去).因為這裡算出來直接就是上面過程裡的公式,就不再贅述了,有興趣可以自己算一算.
[1][2]《統計學習方法》
自適應提公升演算法(AdaBoost)介紹(二)
提公升方法 boosting 介紹 提公升方法基於這樣乙個思想 對於乙個複雜任務來說,將多個專家的判斷進行適當綜合所得出的判斷,要比其中任何乙個專家單獨的判斷要好。實際上,就是 三個臭皮匠頂個諸葛亮 的道理。提公升方法的問題在於,在學習中,如果已經發現了弱學習演算法,能否將它提公升為強學習演算法。因...
提公升boosting之Adaboost演算法原理
adaboost實則是模型為加法模型 損失函式為指數函式 學習演算法為前向分步演算法時的二類學習方法。具體過程如下 1.設訓練資料集t 2.初始化訓練資料的權值分步 3.使用具有權值分步為dm的訓練資料集學習,得到基本分類器 4.計算gm x 在訓練資料集上的誤差率 5.計算gm x 的係數 6.更...
AdaBoost元演算法與提公升樹
1.1 強學習與弱學習 提公升方法的思想是,對於乙個複雜任務,多個專家綜合的判斷所得出的結果要比乙個專家號,即三個臭皮匠賽過諸葛亮的道理。弱學習演算法是指學習的正確率比隨機猜測略好,強學習演算法不僅可以學習,還能得到很高正確率。經學者證明,強可學習和弱可學習是等價的,即同時成立。所以我們的目標是找到...