集成學習方法及思想總結(轉載)

集成學習(Ensemble Learning)有時也被籠統地稱作提升(Boosting)方法,廣泛用於分類和迴歸任務。它最初的思想很簡單:使用一些(不同的)方法改變原始訓練樣本的分佈,從而構建多個不同的分類器,並將這些分類器線性組合得到一個更強大的分類器,來做最後的決策。也就是常說的“三個臭皮匠頂個諸葛亮”的想法。

集成學習的理論基礎來自於Kearns和Valiant提出的基於PAC(probably approximately correct)的可學習性理論 ,PAC 定義了學習算法的強弱:
弱學習算法:識別錯誤率小於1/2(即準確率僅比隨機猜測略高的算法)
強學習算法:識別準確率很高並能在多項式時間內完成的算法
根據這兩個概念,後來產生了一個重要的結論:
強可學習與弱可學習是等價的,即:一個概念是強可學習的充要條件是這個概念是弱可學習的。
據此,爲了得到一個優秀的強學習模型,我們可以將多個簡單的弱學習模型“提升”。
對於集成學習,我們面臨兩個主要問題:
1.如何改變數據的分佈或權重
2.如何將多個弱分類器組合成一個強分類器
針對上述問題,目前主流方法有三種:
1.Boosting方法:包括Adaboosting,提升樹(代表是GBDT), XGBoost等
2.Bagging方法:典型的是隨機森林
3.Stacking算法

首先介紹經典的樣本估計方法:Bootstrapping
Bootstrapping的名字來自成語“pull up by your own bootstraps”,意思是依靠自己的資源,稱做自助法,是一種有放回的抽樣方法。它是非參數統計中一種重要的通過估計統計量方差進而進行區間估計的統計方法,遵從“在不知道數據總體分佈時,對總體分佈的最好的猜測便是由數據提供的分佈”原則。自助法的要點是:
1.假定觀察值就是數據總體
2.由這一假定的總體抽取樣本,即再抽樣

**由原始數據經過再抽樣所獲得的與原始數據集含量相等的樣本稱爲再抽樣樣本或自助樣本。**由原始數據集計算所得的統計量稱爲觀察統計量,由再抽樣樣本計算所得的統計量稱爲自助統計量。自助法的關鍵在於自助統計量與觀察統計量間的關係,等價於觀察統計量與真實值之間的關係,即:自助統計量:觀察統計量 <==> 觀察統計量:真值
具體步驟如下:
1.採用重抽樣方式從原始樣本中抽取一定數量(容量m)的數據,重複抽樣m次,得到一個自助樣本。
2.根據得到的自助樣本計算特定的統計量。
3.重複上述N次,得到N個自助統計量。
4.根據上述N個自助統計量估計出真實值。
  
bootstrap實質上是一種再抽樣過程,相對於其他方法,在小樣本時也具有較好效果。

Boosting

Boosting方法是一種典型的基於bootstrapping思想的應用,其特點是:每一次迭代時訓練集的選擇與前面各輪的學習結果有關,而且每次是通過更新各個樣本權重的方式來改變數據分佈。總結起來如下:

1.分步學習每個弱分類器,最終的強分類器由分步產生的分類器組合而成
2.根據每步學習到的分類器去改變各個樣本的權重(被錯分的樣本權重加大,反之減小)
Adaboosting:
Adaboosting(adaptive boosting)算法由Schapire於1996年提出,是具體實現boosting方法的最典型代表。

算法過程簡述爲:前一個分類器改變權重w後,成爲後一個新的分類器。
如果一個訓練樣本在前一個分類器中被誤分,那麼它的權重會被加大,相反,被正確分類的樣本權重會降低。

即:AdaBoost算法通過給已有模型預測錯誤的樣本更高的權重,使得之前的分類模型出錯的訓練樣本在後續受到更多關注的方式來彌補已有模型的不足。通過每一次迭代改變訓練數據的權值分佈,使得數據在每一個基本分類器的學習中起到不同作用,從而使不同數據發揮各自不同的作用,因此不易發生過擬合。

相關的訓練誤差分析表明,每一次迭代後構建的分類器,其分類誤差率隨着迭代次數增加而穩定下降。
詳細算法流程如下:
在這裏插入圖片描述
AdaBoost算法實際上是一種加法模型,損失函數爲指數函數,學習算法爲前向分步算法。

AdaBoost的主要優點如下:
1.是一種有高精度的分類器
2.可以使用各種方法構建子分類器,adaboost算法提供的是一種框架
3.基本分類器構建簡單,易於理解
4.算法過程簡單,不用做特徵篩選
5.不易發生過擬合

GBDT (Gradient Boosting Decision Tree),即梯度提升決策樹,又叫又叫 MART(Multiple Additive Regression Tree),是常用的以迴歸樹作爲基本分類器、採用梯度提升作爲學習算法、迭代生成決策樹的一種解決迴歸問題的提升模型。

通用的提升樹算法(boosting tree)是以決策樹作爲基本模型,利用前向分步算法迭代生成新的數,最後組合決策,可以用不同的損失函數,迴歸問題常用平方誤差損失函數,分類問題常用指數損失函數。

在這裏插入圖片描述
其中,T表示決策樹

每一次迭代過程中,都是在根據當前模型擬合數據的殘差(residual),即預測值與真實值的差值,作爲新的數據去擬合,來生成新樹。

GBDT則是以損失函數的負梯度值作爲殘差的近似值,來擬合出一個迴歸樹,使每一步的優化變得簡單。(相比通用的平方損失和指數損失函數更易優化),相當於每一次建立的樹模型是在之前所建樹的損失函數的梯度下降方向上,即:每次模型在梯度方向上的減少的部分,可以看作是一個弱的模型。

GBDT在損失函數中引入了樹的複雜度作爲正則項,樹的複雜度定義爲:樹的葉子節點的個數T和葉子節點的權重的平方之和:
在這裏插入圖片描述
此時,損失函數即目標函數爲:
在這裏插入圖片描述
具體算法流程如下:
在這裏插入圖片描述
2(a)表示計算損失函數的負梯度在當前模型的值,將其作爲殘差的估計值
2(b)表示估計迴歸樹葉子節點的區域,以擬合殘差的近似值
2©表示利用線性搜索估計葉子節點區域的值,使得損失函數最小化
2(d)更新迴歸樹
解釋:
1.初始化,估計使損失函數極小化的常數值,它是隻有一個根節點的樹,即ganma是一個常數值。
2.(a)計算損失函數的負梯度在當前模型的值,將它作爲殘差的估計
(b)估計迴歸樹葉節點區域,以擬合殘差的近似值
(c)利用線性搜索估計葉節點區域的值,使損失函數極小化
(d)更新迴歸樹
3.得到輸出的最終模型 f(x)

總結如下:

  1. 算法每次迭代生成一顆新的決策樹
  2. 計算損失函數對每個樣本的一階導和二階導
  3. 通過貪心算法生成新的決策樹,同時計算每個葉子節點的權重w
  4. 把新生成的決策樹f(x)添加到模型中
    GBDT正則化方法:
    1.梯度更新時加入正則化項:即學習率(或叫做步長)([0,1])

2.通過子採樣方法每次選取一部分數據擬合:設定一個子採樣比例,取值爲(0,1]。(這裏的子採樣不同於隨機森林,隨機森林使用的是有放回抽樣,這裏是不放回抽樣)如果取值爲1,則全部樣本都使用,等於沒有使用子採樣。如果取值小於1,則只有一部分樣本會去做GBDT的決策樹擬合。

選擇小於1的比例可以減少方差,即防止過擬合,但是會增加樣本擬合的偏差,因此取值不能太低。推薦在[0.5, 0.8]之間。

使用了無放回子採樣的GBDT有時也稱作隨機梯度提升樹(Stochastic Gradient Boosting Tree, SGBT)。由於使用了子採樣,程序可以通過採樣分發到不同的任務去做boosting的迭代過程,最後形成新樹,從而減少弱學習器難以並行學習的弱點,可以在不同分類器層面實現數據的並行訓練。(由於對全體數據存在一個隨機抽樣過程,因此可以並行構建多個不同的梯度提升樹,但對於每一個提升樹仍然是“串行”生成)

3.剪枝:類似決策樹剪枝,在生成一顆樹後,最小化損失函數(含有誤差項和正則項:樹複雜度)來實現剪枝
GBDT主要的優點有:
1.可靈活處理各種類型的數據,包括連續值和離散值
2.在相對少的調參時間情況下,預測的準準確率較高。(相對於SVM)
3.若使用一些健壯的損失函數,使得算法對異常值的魯棒性非常強。比如 Huber損失函數和Quantile損失函數

GBDT的主要缺點有:
由於弱學習器之間存在依賴關係,難以並行訓練數據。(但可以通過子採樣的SGBT實現部分並行訓練)

目前GBDT的算法比較好的庫是xgboost和scikit-learn。

Bagging

Bagging (bootstrap aggregating) 方法完全基於bootstrapping思想,即把訓練集看做全體數據的子集,訓練集對全體數據中某參數的估計等價於用訓練集子採樣獲得的數據來估計訓練集。其中,每一次迭代前,採用有放回的隨機抽樣來獲取訓練數據。這樣做直接體現了bagging的一大特點:每次迭代不依賴之前建立的模型,即生成的各個弱模型之間沒有關聯,因此就可以徹底實現數據並行訓練。這是bagging方法與上述boosting方法最大的區別。

對於一個樣本,在一次含m個樣本的訓練集的隨機採樣,每次被抽到的概率是1/m。不被抽到的概率爲1−1/m。如果m次採樣都沒有被抽到的概率是(1−1/m)mm。當m→∞時,(1−1/m)mm→1e≃0.368。就是說,在bagging的每輪隨機採樣中,訓練集中大約有36.8%的數據沒有被採樣集抽到。這大約36.8%的沒有被採樣到的數據,我們常常稱之爲袋外數據(Out Of Bag, OOB)。這些數據沒有參與訓練集模型的擬合,因此可作爲驗證集檢驗模型的效果。

和boosting方法一樣,bagging方法常用的基本模型也是決策樹和神經網絡,而且基本模型越簡單,往往最終的集成模型泛化能力越強,越不易發生過擬合。模型組合的方法也很簡單,對於分類任務,一般採用多數投票;對於迴歸任務,則採用算術平均法。

boosting和bagging的區別:
對於Bagging算法,並行訓練多個不同分類器的目的主要是降低方差,採用了相互獨立的基本分類器後,模型之間不存在依賴關係,性能較爲平均,因此對每個基本分類器來說,目標是如何降低偏差,因此通常會採用深度很深而且不剪枝的決策樹。

對於Boosting算法,每一次迭代都是在上一輪的基礎上擬合原數據,可以保證偏差持續降低,因此對於每一個基本分類器來說,目標是如何選擇方差較小的分類器,也就是選擇更簡單的分類器,因而通常選擇深度很淺的決策樹。反之,如果基本模型較複雜,則方差相對較大,這將導致整體模型的方差很大,從而很容易產生過擬合。因此,boosting框架中的基本模型必須爲弱模型。

總結如下:
Boosting利用前一輪迭代的誤差率(或殘差)進行擬合訓練(相當於改變原始樣本的權重),每輪的訓練集分佈依賴之前的訓練結果,因而每輪模型只能順序生成。主要關注降低偏差,因此Boosting能基於泛化性能很弱的分類器構建出很強的集成模型

Bagging採取對原始樣本有放回的均勻抽樣方式獲取每一次的數據來訓練,每輪訓練集相互獨立,因而模型可以並行生成。主要關注降低方差,因此它在不剪枝的決策樹、神經網絡等模型上效果更好

boosting方法的擬合效果(準確度)更高,bagging方法更不易發生過擬合。

隨機森林
隨機森林(Random Forest)算法由上世紀八十年代Breiman等人提出來,基本思想就是構造多棵相互獨立的CART決策樹,形成一個森林,利用這些決策樹共同決策輸出類別。隨機森林算法秉承了bagging方法的思想,以構建單一決策樹爲基礎,同時也是單一決策樹算法的延伸和改進。

在整個隨機森林算法的過程中,有兩個隨機過程:
在這裏插入圖片描述
在這裏插入圖片描述
隨機森林算法具體流程:
1.從原始訓練數據中隨機選取n個數據作爲訓練數據輸入(通常n遠小於全體訓練數據N,這樣就存在一部分“袋外數據”始終不被取到,它們可以直接用於測試誤差(而無需單獨的測試集或驗證集)。
2.選取了要輸入的訓練數據後,開始構建決策樹,具體方法是每一個結點從全體特徵集M中選取m個特徵進行構建(通常m遠小於M)。
3.在構造每棵決策樹時,選取基尼指數最小的特徵來分裂節點構建決策樹。決策樹的其他結點都採取相同的分裂規則進行構建,直到該節點的所有訓練樣例都屬於同一類或者達到樹的最大深度。(該步驟與構建單一決策樹相同)
4.重複第2步和第3步多次,每一次輸入數據對應一顆決策樹,這樣就得到了一個隨機森林,用於對預測數據進行決策。
5.對待預測數據進行預測時,多棵決策樹同時進行決策,採用多數投票的方式產生最終決策結果。

隨機森林算法的注意點:
1.在構建決策樹的過程中不需要剪枝
2.整個森林中樹的數量和每棵樹的特徵需要人爲設定
3.構建決策樹的時候分裂節點的選擇依據最小基尼係數
4.在訓練時,對於預選變量個數和隨機森林中樹的個數這兩個參數的調優很重要。

隨機森林的優點:
1.兩個隨機性的引入,使得隨機森林抗噪聲能力強,方差小泛化能力強,不易陷入過擬合(因此不需要剪枝)
2.易於高度並行訓練,且訓練速度快,適合處理大數據
3.由於可以隨機選擇決策樹節點劃分的特徵,因此能夠處理高維度(特徵多)的數據,事先不用做特徵選擇;而且連續和離散數據均可,且無需歸一化數據。
4.創建隨機森林時,是對參數的無偏估計
5.訓練後,可以給出各個特徵對於輸出結果的重要性排序,並且能夠檢測到特徵間的相互影響
6.相對於boosting系列算法,實現簡單
7.對部分特徵缺失不敏感
8.由於隨機森林對誤差率是無偏估計,因此在算法中不需要再進行交叉驗證或者設置單獨的測試集來獲取測試集上誤差的無偏估計

隨機森林的缺點:
對於取值劃分比較多的特徵,容易對隨機森林的決策產生較大影響,從而影響擬合效果。

Stacking

stacking是一種組合多個模型的方法,它主要注重分類器的組合,相對於bagging和boosting使用較少,具體過程如下:

1.劃分訓練數據集爲兩個不相交的集合。
2.在第一個集合上訓練多個學習器。
3.在第二個集合上測試這幾個學習器
4.將第三步得到的預測結果作爲輸入,將正確的映射作爲輸出,訓練一個更高層的分類器

由此可見,對於模型組合方式,不同於前面兩個方法採用多數投票或算術平均的線性組合策略,stacking採用的是基本模型非線性組合的方式。

最後總結一點:bagging和stacking中的基本模型須爲強模型(低偏差高方差),boosting中的基本模型爲弱模型(低方差高偏差)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章