1. 程式人生 > >機器學習演算法總結--提升方法

機器學習演算法總結--提升方法

參考自:

簡介

提升方法(boosting)是一種常用的統計學習方法,在分類問題中,它通過改變訓練樣本的權重,學習多個分類器,並將這些分類器進行線性組合,提供分類的效能。

boosting和bagging

boosting和bagging都是整合學習(ensemble learning)領域的基本演算法,boosting和bagging使用的多個分類器的型別是一致的。

Bagging

bagging也叫自助匯聚法(bootstrap aggregating),比如原資料集中有N個樣本,我們每次從原資料集中有放回的抽取,抽取N次,就得到了一個新的有N個樣本的資料集,然後我們抽取S個N次,就得到了S個有N個樣本的新資料集,然後拿這S個數據集去訓練S個分類器,之後應用這S個分類器進行分類,選擇分類器投票最多的類別作為最後的分類結果。一般來說自助樣本的包含有63%的原始訓練資料,因為:

假設共抽取N個樣本,則N次都沒有抽到的概率是p=(11N)N

則一個樣本被抽到的概率有p=1(11N)N

所以,當N很大時有:p=11e=0.632

這樣,在一次bootstrap的過程中,會有36%的樣本沒有被取樣到,它們被稱為out-off-bag(oob),這是自助取樣帶給bagging的裡一個優點,因為我們可以用oob進行“包外估計”out-of-bag estimate

bagging通過降低基分類器的方差改善了泛化誤差,bagging的效能依賴於基分類器的穩定性。如果基分類器是不穩定的,bagging**有助於減少訓練資料的隨機波動導致的誤差,如果基分類器是穩定的,即對訓練資料集中的微小變化是魯棒的,則組合分類器的誤差主要由

基分類器偏移所引起的,這種情況下,**bagging可能不會對基分類器有明顯的改進效果,甚至可能降低分類器的效能。

boosting與bagging的區別

  • bagging通過有放回的抽取得到了S個數據集,而boosting用的始終是原資料集,但是樣本的權重會發生改變。
  • boosting對分類器的訓練是序列的,每個新分類器的訓練都會受到上一個分類器分類結果的影響。
  • bagging裡面各個分類器的權重是相等的,但是boosting不是,每個分類器的權重代表的是其對應分類器在上一輪分類中的成功度。

AdaBoost是boosting方法中最流行的版本

AdaBoosts演算法

AdaBoost(adaptive boosting)是元演算法,通過組合多個弱分類器來構建一個強分類器。我們為訓練資料中的每一個樣本都賦予其一個權重,這些權重構成了向量D

,一開始,這些權重都初始化成相等值,然後每次新增一個弱分類器對樣本進行分類,從第二次分類開始,將上一次分錯的樣本的權重提高,分對的樣本權重降低,持續迭代。此外,對於每個弱分類器而言,每個分類器也有自己的權重,取決於它分類的加權錯誤率,加權錯誤率越低,則這個分類器的權重值α越高,最後綜合多個弱分類器的分類結果和其對應的權重α得到預測結果,AdaBoost是最好的監督學習分類方法之一。

其演算法過程如下所示:

這裡寫圖片描述

其中,注意:

這裡寫圖片描述

訓練誤差分析

AdaBoost演算法的最基本性質是在學習過程中不斷減小訓練誤差,對訓練誤差的上界有如下定理:

定理1:AdaBoost最終分類器的訓練誤差界為:

>1Ni=1NI(G(xi)yi)1Niexp(yif(xi))=mZm>
定理2:二類分類問題
>m=1MZm=m=1M[2em(1em)]=m=1M[14γ2mexp(2m=1Mγ2m)>

演算法解釋

AdaBoost演算法還可以解釋為模型是加法模型,損失函式是指數函式,學習演算法是前向分步演算法的二類分類學習方法。

加法模型是形如f(x)=Mi=1βmb(x;γm)的函式形式,其中b(x;γm)是基函式,而βm是基函式的係數,γm是基函式的引數。對於AdaBoost演算法,其基本分類器的線性組合為f(x)=Mm=1αmGm(x)正是一個加法模型。

AdaBoost演算法的損失函式是指數函式,公式為E=Ni=1exp(yiGm(xi))

此外,經過m輪迭代可以得到fm(x)=fm1(x)+αmGm(x)。而前向分步演算法的過程如下所示:

這裡寫圖片描述

通過上述步驟,前向分步演算法將同時求解從m=1M所有引數βm,γm的優化問題簡化為逐步求解各個βm,γm的優化問題。

優缺點

優點

  1. 泛化誤差低
  2. 容易實現,分類準確率較高,沒有太多引數可以調

缺點

對異常值比較敏感