1. 程式人生 > >bagging和boosting演算法(整合學習演算法)

bagging和boosting演算法(整合學習演算法)

一、整合學習簡介
  在講boosting和bagging演算法之前,首先需要了解一下整合學習的概念。整合學習是指將若干弱分類器組合之後產生一個強分類器。弱分類器(weak learner)指那些分類準確率只稍好於隨機猜測的分類器(error rate < 50%)。如今整合學習有兩個流派,一種是bagging流派,它的特點是各個弱學習器之間沒有依賴關係,可以並行擬合,隨機森林演算法就屬於bagging派系;另一個是boosting派系,它的特點是各個弱學習器之間有依賴關係,Adaboost演算法就屬於boosting派系。在實現整合學習演算法時,很重要的一個核心就是如何實現資料的多樣性,從而實現弱分類器的多樣性。整合學習的思想如下圖所示:

這裡寫圖片描述

整合學習有如下的特點:
  (1)將多個分類方法聚集在一起,以提高分類的準確率(這些演算法可以是不同的演算法,也可以是相同的演算法。);
  (2)整合學習法由訓練資料構建一組基分類器,然後通過對每個基分類器的預測進行投票來進行分類;
  (3)嚴格來說,整合學習並不算是一種分類器,而是一種分類器結合的方法;
  (4)通常一個整合分類器的分類效能會好於單個分類器;
  (5)如果把單個分類器比作一個決策者的話,整合學習的方法就相當於多個決策者共同進行一項決策。
二、bagging演算法
2.1、bagging演算法思想
  bagging是bootstrap aggregating的縮寫。該演算法的思想是讓學習演算法訓練多輪,每輪的訓練集由從初始的訓練集中隨機取出的n個訓練樣本組成,某個初始訓練樣本在某輪訓練集中可以出現多次或根本不出現(即所謂的有放回抽樣),訓練之後可得到一個預測函式序列h_1,⋯ ⋯h_n ,最終的預測函式H對分類問題採用投票方式,對迴歸問題採用簡單平均方法對新示例進行判別。上面的演算法思想可通過下圖來進行理解:

這裡寫圖片描述

演算法的基本流程為:
  輸入為樣本集D={(x,y1),(x2,y2),…(xm,ym)}D={(x,y1),(x2,y2),…(xm,ym)},弱學習器演算法, 弱分類器迭代次數T。
  輸出為最終的強分類器f(x)f(x)
  (1)對於t=1,2…,T:(a)對訓練集進行第t次隨機取樣,共採集m次,得到包含m個樣本的取樣集Dm;(b)用取樣集DmDm訓練第m個弱學習器Gm(x);
  (2) 如果是分類演算法預測,則T個弱學習器投出最多票數的類別或者類別之一為最終類別。如果是迴歸演算法,T個弱學習器得到的迴歸結果進行算術平均得到的值為最終的模型輸出。
2.2、bagging演算法案例
  為了更好理解bagging的概念,提供下面一個例子。
X 表示一維屬性,Y 表示類標號(1或-1)測試條件:當x<=k時,y=?;當x>k時,y=?;k為最佳分裂點
  下表為屬性x對應的唯一正確的y類別。

這裡寫圖片描述

  現在進行5輪隨機抽樣,結果如下:

這裡寫圖片描述

  每一輪隨機抽樣後,都生成一個分類器。然後再將五輪分類融合。

這裡寫圖片描述

  對比符號和實際類,我們可以發現:在該例子中,Bagging使得準確率可達90%。由此,總結一下bagging方法:
  (1) Bagging通過降低基分類器的方差,改善了泛化誤差;
  (2)其效能依賴於基分類器的穩定性;如果基分類器不穩定,bagging有助於降低訓練資料的隨機波動導致的誤差;如果穩定,則整合分類器的誤差主要由基分類器的偏倚引起;
  (3)由於每個樣本被選中的概率相同,因此bagging並不側重於訓練資料集中的任何特定例項。

三、boosting演算法
3.1、boosting演算法的基本思想
  boosting演算法是Adaptive boosting的縮寫,是一種迭代演算法。每輪迭代中會在訓練集上產生一個新的分類器,然後使用該分類器對所有樣本進行分類,以評估每個樣本的重要性(informative)。
  具體來說,演算法會為每個訓練樣本賦予一個權值。每次用訓練完的新分類器標註各個樣本,若某個樣本點已被分類正確,則將其權值降低,並以該權重進行下一次資料的抽樣(抽中的概率減小);若樣本點未被正確分類,則提高其權值,並以該權重進行下一次資料的抽樣(抽中的概率增大)。權值越高的樣本在下一次訓練中所佔的比重越大,也就是說越難區分的樣本在訓練過程中會變得越來越重要。 整個迭代過程直到錯誤率足夠小或達到一定次數才停止。

這裡寫圖片描述

3.2、boosting演算法的案例
  以下圖為例,來說明boosting演算法的核心思想:

這裡寫圖片描述

  由圖可以發現,boosting演算法在迭代的過程中不斷加強識別錯誤樣本的學習比重,從而實現最終的強化學習。

四、Bagging和Boosting演算法的區別
  (1) bagging的訓練集是隨機的,各訓練集是獨立的;而boosting訓練集的選擇不是獨立的,每一次選擇的訓練集都依賴於上一次學習的結果;
  (2) bagging的每個預測函式都沒有權重;而boosting根據每一次訓練的訓練誤差得到該次預測函式的權重;
  (3) bagging的各個預測函式可以並行生成;而boosting只能順序生成。(對於神經網路這樣極為耗時的學習方法,bagging可通過並行訓練節省大量時間開銷)。