1. 程式人生 > >整合學習介紹2—Boosting演算法介紹

整合學習介紹2—Boosting演算法介紹

一、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演算法的工作過程

https://img-blog.csdn.net/20180405123651709

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

AdaBoost演算法的步驟如下:

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

https://img-blog.csdn.net/20180405225819847?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NpbmF0XzI5OTU3NDU1/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70

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

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

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

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

6、計算相關係數

https://img-blog.csdn.net/20180405230805213?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NpbmF0XzI5OTU3NDU1/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70

7、更新權重

https://img-blog.csdn.net/20180405231332258?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NpbmF0XzI5OTU3NDU1/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70

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

https://img-blog.csdn.net/20180405231542556?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NpbmF0XzI5OTU3NDU1/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70

9、完成最終預測

https://img-blog.csdn.net/2018040523192481?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NpbmF0XzI5OTU3NDU1/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70

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

三、AdaBoost演算法例項講解

https://img-blog.csdn.net/20180405234515183?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NpbmF0XzI5OTU3NDU1/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70

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

從第5步開始:

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

https://img-blog.csdn.net/20180406000833603?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NpbmF0XzI5OTU3NDU1/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70

6、計算相關係數

https://img-blog.csdn.net/2018040600111049?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NpbmF0XzI5OTU3NDU1/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70

7、更新權重

https://img-blog.csdn.net/201804060026495?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NpbmF0XzI5OTU3NDU1/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70

8、權重歸一化

https://img-blog.csdn.net/20180406003235652?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NpbmF0XzI5OTU3NDU1/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70

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