1. 程式人生 > >機器學習演算法二:詳解Boosting系列演算法一Adaboost

機器學習演算法二:詳解Boosting系列演算法一Adaboost

本文主要介紹boosting演算法得基本原理,以及的三種典型演算法原理:adaboost,GBM(Gradient bossting machine),XGBoost。

Boosting方法原理

boosting演算法是一類將弱學習器提升為強學習器的整合學習演算法,它通過改變訓練樣本的權值,學習多個分類器,並將這些分類器進行線性組合,提高泛化效能。

先介紹一下“強學習”和“弱學習”的概念:一個分類,如果存在一個多項式演算法能夠學習他,並得到很高的正確率,那麼這個演算法稱為強學習器,反之如果正確率只是稍大於隨機猜測(50%),則稱為弱學習器。在實際情況中,我們往往會發現弱學習器比強學習器更容易獲得,所以就有了能否把弱學習器提升(boosting)為強學習器的疑問。於是提升類方法應運而生,它代表了一類從弱學習器出發,反覆訓練,得到一系列弱學習器,然後組合這些弱學習器,構成一個強學習器的演算法。大多數boost方法會改變資料的概率分佈(改變資料權值)

,具體而言就是提高前一輪訓練中被錯分類的資料的權值,降低正確分類資料的權值,使得被錯誤分類的資料在下輪的訓練中更受關注;然後根據不同分佈呼叫弱學習演算法得到一系列弱學習器實現的,再將這些學習器線性組合,具體組合方法是誤差率小的學習器會被增大權值,誤差率大的學習器會被減小權值,典型代表adaboost演算法。

1.1 Adaboost演算法

Adaboost,全稱adaptive boosting,前面已經大致介紹了它的基本原理,接下來會簡答推導它的演算法過程。

給定一個二分類的訓練資料集:T=(x1,y1),(x2,y2),,(

xN,yN),標記yi[1,1]
(1) 初始化訓練資料的權值分佈

D1=(w11,w1i,w1N)w1i=1/N,i=1,2,N

(2) 指定生成T個學習器,即進行t=1,2,T迭代。
(3) 對於第t次迭代,根據前一次迭代得到的權值分佈Dt訓練資料集,得到弱分類器

Gt(x):X{1,1}
(4) 計算Gt(x)在權值分佈Dt上的分類誤差et=P(Gt(xi)yi)=i=1Nw1iI(Gt(xi)yi)這裡很關鍵,我們可以發現,分類誤差et是當前學習器得到的未正確分類資料項對應的權值之和,說明adaboost演算法的分類誤差是受權值分佈Dt影響的,具體怎麼影響繼續往下看。
(5)計算當前學習器Gt(x)的權值αt=12log1etet這個權值是用在最後線性組合時乘在分類器前的,仔細觀察這個函式式不難發現當et1/2時,αt>0,並且隨著et的減小而增大,也就是說分類誤差越小分類器的權值越大,這裡還可以看出可以看出權值分佈Dt通過影響et來影響了αt,這是Dt的第一個影響。
(6)更新權值分佈