机器学习算法总结--提升方法
參考自:
- 《統計學習方法》
- 淺談機器學習基礎(上)
- Ensemble learning:Bagging,Random Forest,Boosting
簡介
提升方法(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=(1?1N)N
則一個樣本被抽到的概率有p=1?(1?1N)N
所以,當N很大時有:p=1?1e=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最終分類器的訓練誤差界為:
>1N∑i=1NI(G(xi)≠yi)≤1N∑iexp(?yif(xi))=∏mZm>
定理2:二類分類問題
算法解釋
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)=fm?1(x)+αmGm(x)。而前向分步算法的過程如下所示:
通過上述步驟,前向分步算法將同時求解從m=1到M所有參數βm,γm的優化問題簡化為逐步求解各個βm,γm的優化問題。
優缺點
優點
缺點
對異常值比較敏感
總結
以上是生活随笔為你收集整理的机器学习算法总结--提升方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 设计模式:里氏替换原则
- 下一篇: python——向Excel读取或写入数