提升方法:Adaboost演算法與證明
阿新 • • 發佈:2019-01-13
這基本就是關於《統計學習方法》的筆記,當然自己會記的讓人容易讀懂,為了加深記憶,證明都證了兩遍,便於加深理解還是打算寫在部落格裡好了。接下來會先介紹什麼是提示方法,再介紹Adaboost演算法,接著會給個書上的例子,最後再給出一些推導(由於之前是寫過的但是沒儲存好,所以這次有的部分就貼上了)。
1、提升方法
定義:在分類問題中,該方法會改變訓練樣本的權重,學習到多個弱分類器,最後將這些分類器進行線性組合形成一個強分類器,從而提高分類的能力。
關於弱分類器可以簡單理解為該模型可以分類但是分類能力不強,而強分類器則能很好的進行分類。
如此一來,對於提升方法我們需要考慮兩個問題
- 每次迭代的時候如何改變樣本的權重
- 如何將這些弱分類器組合成一個強分類器。
ps:如何獲得弱分類器(或者說基本分類器)是根據需要的來決定的,與提升方法沒有必然聯絡,比如可以是決策樹模型,然後學習到一個強的決策樹模型。
2、Adaboost
Adaboost就是一個典型的提升方法,那麼它如何解決上面的兩個問題呢?
- 每次迭代過程中,會提高上一輪誤分類樣本點(使用上一輪分類器不能進行正確分類的樣本)的權重,使它在本輪中獲得更多的關注;相反,上一輪正確分類的樣本的權重則會降低;
- 提升方法中已經說了會對弱分類器進行線性組合形成強分類器,Adaboost的做法是採用加權多數表決的方法,具體的,增大分類誤差率低的弱分類器的係數,降低分類誤差率高的弱分類器的係數。
下面關於二分類問題給出該演算法流程(昨天寫了沒儲存好,所以不想寫了就直接貼上了)
Adaboost
輸入:二分類樣本集
,其中
;弱學習演算法(來獲得弱分類器);
輸出:最終強分類器
這裡做一些必要的說明
- 演算法最開始的時候,沒有別的要求的話,設定每個樣本的權重是一樣的即 ;
- 針對每個m我們是從 計算到 ,如果發現此時的最終分類器還是不能進行正確分類,那麼設定 進行下一輪
- 步的分類誤差率 ,其中 是指示函式 ,所以實際上分類誤差率就是被錯誤分類的樣本的權重之和。和一般所認識的分類誤差率 很類似。顯然值越小那麼該分類器 的分類能力更好
- 對於 步的分類器係數 ,當 的時候, 越小(分類器 的分類能力更好)則係數越大,中一點在 中已經提到過。
- 對於 步,該步驟是更新樣本權重的,如何更新?被錯誤分類的樣本會增大權重從而會在下一輪引起重視,被正確分類的則減少權重。如果看的不清楚,因為是二分類問題所以 或者 ,所以下一輪的權重 可以寫成下面的形式(寫在了最後面)。這也是上面1所說的
- 在第 步,則是對弱分了器進行線性組合,比如第一輪得到的是 ,那麼這輪 ,第二輪得到的是 ,那麼這輪會進行疊加,即 。其中 的正負號表示分類結果,比如有樣本 ,將 作為輸出,如果有