統計學習方法(五)AdaBoost

一.提升方法boosting

        如果我有寫過集成方法的話[沒有的話看這篇集成學習理論],集成方法的一大類就是boosting,其基本思想就是不斷地在迭代過程中訓練BaseModel,並增加誤分樣本的權重,直到達到停止條件後,組合BaseModel。從集成學習的理論我們知道boosting在組合過程中會增大模型的variance,所以BaseModel必須是低bias但低variance的弱模型,這樣纔不至於最終導致過擬合。


二.AdaBoost算法

        上述的框架有兩個基本問題,1)如何改變誤分類樣本的權重;2)如何組合BaseModel得到最終的分類器。AdaBoost回答了這個問題,所以AdaBoost是屬於boosting的,但是AdaBoost沒有指定BaseModel,所以其本質仍然是一個框架。

        AdaBoost的工作流程如下:

1)初始化權值相同(都爲1/N)的樣本權值分佈D1;

2)對m∈[1,M]:

      a)使用權值分佈Dm的訓練集訓練得到基本分類器;

      b)更新權值分佈,計算該基本分類器的加權權值(計算公式我不列出來了,可以去書中找~重點在於思想啊思想!)

3)組合(加權相加)得到最終的分類器。


三.AdaBoost原理解釋

        只想說每次看到給了一堆計算公式就會很想知道其內部的原因啊,我爲什麼要這麼更新權重啊對吧,所以往下看!~

        AdaBoost本質可以理解成模型爲加法模型,損失函數爲指數函數(策略爲檢驗風險極小化),學習算法爲前向分步算法的二類學習分類方法

        加法模型,指數函數什麼的都好理解,但是問題來了,什麼是前向分步算法呢?因爲我們要優化的目標是加法模型,可以通過從前向後,每一步值優化一個基函數及其係數,來降低優化複雜度。其實有發現嗎,前向分步算法本質是一個貪心算法吶~

       通過這種方式,就可以得到第二部分的AdaBoost過程中具體的公式和求解方法啦~

       延伸:

       這時候我們就想啊,boosting一般都是加法模型加上前向分步算法,那麼可以改變的就是損失函數了,所以其實根據損失函數的不同,會有不同名字/效果的算法,如下圖:



四.AdaBoost的誤差分析

        AdaBoost最基本的性質是它能在學習過程中不斷減少訓練誤差。直觀來看,每次提高誤分類樣本的權值,當然會減少訓練誤差啦(注意是訓練誤差),這也對應了上述提到的AdaBoost屬於boosting方法,而boosting方法是會提高model的variance的,就是容易過擬合,這也很直觀。

        關於AdaBoost的訓練誤差界是以指數速率下降的,這也是有理論證明的。


【注:本文不寫公式,爲了更注重其理論思想(因爲懶...),具體公式請參見<<統計學習方法>>】


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章