AdaBoost算法算法
基本思想是,對於一個複雜的問題,單獨用一個分類算法判斷比較困難,那麼咱們就用一組分類器來進行綜合判斷,獲得結果,「三個臭皮匠頂一個諸葛亮」函數
專業的說法,學習
強可學習(strongly learnable),存在一個多項式算法能夠學習,而且準確率很高
弱可學習(weakly learnable),存在一個多項式算法能夠學習,但準確率略高於隨機猜想blog
而且能夠證實強可學習和弱可學習是等價的get
那麼發現一個弱可學習算法是很容易的,若是將弱可學習算法boosting到強可學習算法?it
AdaBoost就是這樣的算法,經過反覆學習,獲得一組弱分類器,經過組合這些弱分類器獲得強分類器方法
問題就是若是獲得一組弱分類器?im
固然你能夠用不一樣的分類算法來訓練
也能夠用不一樣的訓練集,好比bagging,對訓練集進行m次隨機抽樣,獲得m個新的訓練集d3
AdaBoost採用的方法是,用相同的算法和訓練集,但改變每一個訓練樣本的weight,由於在求解分類器時的目標函數是,加權偏差最小,因此不一樣的權值會獲得不一樣的分類器參數
具體的規則,是每輪分類後, 增大分錯的樣本的權值,減少分對樣本的權值,全部樣本權值和爲1
這樣下一輪分類器求解,就會更關注上一輪分錯的這樣樣本點,達到分而治之的目的規範化
須要注意,能夠想到,這個算法對離羣值比較敏感,容易overfitting
而且每一個弱分類器也有個weight,表明該分類器的偏差率,最終用加權多數表決的方式來獲得最終結果
具體算法,
1. 初始化訓練樣本的權值,平均分佈,每一個樣本的機率相同
2. 反覆迭代學習獲得m個弱分類器,對於第m個弱分類器,
2.1 對於訓練集,以加權偏差最小爲目標,求出分類器,Gm
2.2 算出,該弱分類器的加權偏差
2.3 算出該弱分類器的權值,log函數,可見偏差越小,權值越高,即在最終強分類器中的做用越大
2.4 關鍵的一步,更新訓練樣本的權值
其中,第一個式子實際上是,
指數分佈,小於0,取值在(0,1),大於0,取值大於1
因此意思就是,當Gm(x)=y的時候,即判斷正確的樣本,減少權值
判斷錯誤的樣本,增長權值
之因此要除以Zm,是由於全部權值的和要爲1,用Zm來進行規範化
3. 上面咱們就獲得m個弱分類器,如何組合出強分類器,
很簡單的,加權多數表決 其中sign函數,取值-1(x<0),0,1(x>0)