04.06 一文搞懂AdaBoost集成算法

一、Boosting算法

Boosting集成分類器包含多個非常簡單的成員分類器,這些成員分類器的性能僅好於隨機猜想,常被稱為弱學習機。典型的弱學習機的例子就是單層決策樹。Boosting算法主要針對難以區分的樣本,弱學習機通過在分類錯誤的樣本上進行學習來提高繼承分類器的分類性能。Boosting與Bagging不同,在Boosting的初始化階段採用的是無返回抽樣從訓練樣本中隨機抽取一個子集,而Bagging採用的是有放回的抽取。Boosting的過程由四個步驟組成:

1、從訓練集D中以無放回抽樣方式隨機抽取一個訓練子集d1,用於弱學習機C1的訓練。

2、從訓練集D中以無放回抽樣方式隨機抽取一個訓練子集d2,並將C1中誤誤分類樣本的50%加入到訓練集中,訓練得到弱學習機C2。

3、從訓練集D中抽取C1和C2分類結果不一致的訓練樣本生成訓練樣本集d3,用d3來訓練第三個弱學習機C3。

4、通過多數投票來組合弱學習機C1、C2和C3。

Boosting與Bagging模型相比,Boosting可以同時降低偏差也方差,Bagging只能降低模型的方差。在實際應用中,Boosting算法也還是存在明顯的高方差問題,也就是過擬合。

二、AdaBoost算法

AdaBoost算法與Boosting算法不同,它是使用整個訓練集來訓練弱學習機,其中訓練樣本在每次迭代的過程中都會重新被賦予一個權重,在上一個弱學習機錯誤的基礎上進行學習來構建一個更加強大的分類器。下面通過一個圖來了解AdaBoost算法的工作過程

一文搞懂AdaBoost集成算法

訓練樣本由兩個不同的種類(藍球和紅球)所組成。在第一幅圖中所有的樣本都被賦予了相同的權重,通過訓練集的訓練,我們可以獲取到一個單層的決策樹(代表圖中的虛線),它通過最小化代價函數(樣本不純度)來劃分兩類不同的樣本,其中有兩個籃球和一個紅球被錯誤的劃分。在第二次訓練的過程中,兩被錯誤劃分個籃球和一個被錯誤劃分的紅色被賦予更大的權重(球變得更大),同時還可以降低正確劃分樣本的權重,在本次訓練的過程中更加專注於權重大的樣本,也就是劃分錯誤的樣本。通過重複這個過程,最後直至樣本劃分正確。然後,得到一個弱學習機的組合,通過多數投票的方式來決定最後的預測結果。

AdaBoost算法的步驟如下:

1、以相同的初始值來初始化樣本的權重ω,並且樣本權重之和為1。

一文搞懂AdaBoost集成算法

2、在m輪boosting操作中,對第j輪做如下操作

3、訓練一個加權的弱學習機:C(j)=train(X,y,ω)

4、預測樣本類標pred_y=predict(C(j),X)

5、計算權重錯誤率ε=ω*(pred_y==y)

6、計算相關係數

一文搞懂AdaBoost集成算法

7、更新權重

一文搞懂AdaBoost集成算法

8、歸一化權重,並保證權重之和為1

一文搞懂AdaBoost集成算法

9、完成最終預測

一文搞懂AdaBoost集成算法

可能看完上面AdaBoost的步驟之後還不是很明白,下面通過一個實例來說明一下

三、AdaBoost算法實例講解

一文搞懂AdaBoost集成算法

上表表示的是10個一維樣本的數據。第一列表示樣本的編號,第二列表示樣本特徵的值,第三列表示樣本所對應的實際類標,第四列表示的是樣本的權重值,第五列表示的是預測的樣本,第六列表示預測的類標是否準確,第七列表示的是樣本權重更新後的值。根據上面AdaBoost的步驟,詳細介紹權重的更新過程

從第5步開始:

5、計算權重的錯誤率,預測類標與實際類標相等用0表示,否則用1表示,所以預測錯誤的樣本有三個

一文搞懂AdaBoost集成算法

6、計算相關係數

一文搞懂AdaBoost集成算法

7、更新權重

一文搞懂AdaBoost集成算法

8、權重歸一化

一文搞懂AdaBoost集成算法

通過一輪權重的更新可以發現,之前預測正確的權重由0.1變成了0.072,預測錯誤的權重由0.1變成了0.167。所以說,在權重更新的過程中,會增大預測錯誤樣本的權重,同時也會減少預測正確樣本的權重。

四、使用sklearn來應用AdaBoost算法

1、決策樹在訓練集和測試集上的準確率

一文搞懂AdaBoost集成算法

2、AdaBoost在訓練集和測試集上的準確率

一文搞懂AdaBoost集成算法

結論:通過單層決策樹和AdaBoost在訓練集和測試集上表現可以發現,AdaBoost可以準確預測所有的訓練集樣本,與單層的決策樹相比,AdaBoost在測試集上的準確率要稍微高點。但是,AdaBoost也存在明顯的過擬合。所以說,AdaBoost在降低模型的偏差同時,也會提升模型的方差。

五、繪製決策邊界

一文搞懂AdaBoost集成算法

一文搞懂AdaBoost集成算法

總結:通過決策區域可以發現,AdaBoost的決策區域要比單層的決策樹複雜的多。集成分類器與單獨分類器相比,集成學習提高了計算複雜度,計算複雜度的提高會帶來計算成本的增加。所以在實際中,我們需要仔細權衡模型的性能和計算成本。


分享到:


相關文章: