機器學習演算法總結--提升方法
參考自:
簡介
提升方法(boosting)是一種常用的統計學習方法,在分類問題中,它通過改變訓練樣本的權重,學習多個分類器,並將這些分類器進行線性組合,提供分類的效能。
boosting和bagging
boosting和bagging都是整合學習(ensemble learning)領域的基本演算法,boosting和bagging使用的多個分類器的型別是一致的。
Bagging
bagging也叫自助匯聚法(bootstrap aggregating),比如原資料集中有N個樣本,我們每次從原資料集中有放回的抽取,抽取N次,就得到了一個新的有N個樣本的資料集,然後我們抽取S個N次,就得到了S個有N個樣本的新資料集,然後拿這S個數據集去訓練S個分類器,之後應用這S個分類器進行分類,選擇分類器投票最多的類別作為最後的分類結果。一般來說自助樣本的包含有63%的原始訓練資料,因為:
假設共抽取
則一個樣本被抽到的概率有
所以,當
這樣,在一次bootstrap的過程中,會有36%的樣本沒有被取樣到,它們被稱為out-off-bag(oob),這是自助取樣帶給bagging
的裡一個優點,因為我們可以用oob
進行“包外估計”out-of-bag estimate。
bagging通過降低基分類器的方差改善了泛化誤差,bagging的效能依賴於基分類器的穩定性。如果基分類器是不穩定的,bagging**有助於減少訓練資料的隨機波動導致的誤差,如果基分類器是穩定的,即對訓練資料集中的微小變化是魯棒的,則組合分類器的誤差主要由
boosting與bagging的區別
- bagging通過有放回的抽取得到了S個數據集,而boosting用的始終是原資料集,但是樣本的權重會發生改變。
- boosting對分類器的訓練是序列的,每個新分類器的訓練都會受到上一個分類器分類結果的影響。
- bagging裡面各個分類器的權重是相等的,但是boosting不是,每個分類器的權重代表的是其對應分類器在上一輪分類中的成功度。
AdaBoost是boosting方法中最流行的版本
AdaBoosts演算法
AdaBoost(adaptive boosting)是元演算法,通過組合多個弱分類器來構建一個強分類器。我們為訓練資料中的每一個樣本都賦予其一個權重,這些權重構成了向量
D ,一開始,這些權重都初始化成相等值,然後每次新增一個弱分類器對樣本進行分類,從第二次分類開始,將上一次分錯的樣本的權重提高,分對的樣本權重降低,持續迭代。此外,對於每個弱分類器而言,每個分類器也有自己的權重,取決於它分類的加權錯誤率,加權錯誤率越低,則這個分類器的權重值α 越高,最後綜合多個弱分類器的分類結果和其對應的權重α 得到預測結果,AdaBoost是最好的監督學習分類方法之一。
其演算法過程如下所示:
其中,注意:
訓練誤差分析
AdaBoost演算法的最基本性質是在學習過程中不斷減小訓練誤差,對訓練誤差的上界有如下定理:
定理1:AdaBoost最終分類器的訓練誤差界為:
>1N∑i=1NI(G(xi)≠yi)≤1N∑iexp(−yif(xi))=∏mZm>
定理2:二類分類問題
>∏m=1MZm=∏m=1M[2em(1−em)−−−−−−−−−√]=∏m=1M[1−4γ2m−−−−−−−√≤exp(−2∑m=1Mγ2m)>
演算法解釋
AdaBoost演算法還可以解釋為模型是加法模型,損失函式是指數函式,學習演算法是前向分步演算法的二類分類學習方法。
加法模型是形如
AdaBoost演算法的損失函式是指數函式,公式為
此外,經過
通過上述步驟,前向分步演算法將同時求解從
優缺點
優點
- 泛化誤差低
- 容易實現,分類準確率較高,沒有太多引數可以調
缺點
對異常值比較敏感