1. 程式人生 > >[機器學習]整合學習--bagging、boosting、stacking

[機器學習]整合學習--bagging、boosting、stacking

整合學習簡介

整合學習(ensemble learning)通過構建並結合多個學習器來完成學習任務。

如何產生“好而不同”的個體學習器,是整合學習研究的核心。

整合學習的思路是通過合併多個模型來提升機器學習效能,這種方法相較於當個單個模型通常能夠獲得更好的預測結果。這也是整合學習在眾多高水平的比賽如奈飛比賽,KDD和Kaggle,被首先推薦使用的原因。

一般來說整合學習可以分為三大類:

  • 用於減少方差的bagging
  • 用於減少偏差的boosting
  • 用於提升預測結果的stacking

整合學習方法也可以歸為如下兩大類:

  • 序列整合方法,這種方法序列地生成基礎模型(如AdaBoost)。序列整合的基本動機是利用基礎模型之間的依賴。通過給錯分樣本一個較大的權重來提升效能。
  • 並行整合方法,這種方法並行地生成基礎模型(如Random Forest)。並行整合的基本動機是利用基礎模型的獨立性,因為通過平均能夠較大地降低誤差。

大部分整合模型都通過一個基礎學習演算法來生成一個同質的基礎學習器,即同類型的學習器,也叫同質整合。

有同質整合就有異質整合,為了整合後的結果表現最好,異質基礎學習器需要儘可能準確並且差異性夠大。

Bagging

Bagging是引導聚合的意思。減少一個估計方差的一種方式就是對多個估計進行平均。例如,我們可以用訓練集的不同子集(隨機選擇並替代訓練集)訓練M個不同的樹然後計算最後的結果:

Bagging使用裝袋取樣來獲取資料子集訓練基礎學習器。通常分類任務使用投票的方式整合,而回歸任務通過平均的方式整合。

1)從原始樣本集中抽取訓練集。每輪從原始樣本集中使用Bootstraping(有放回)的方法抽取n個訓練樣本(在訓練集中,有些樣本可能被多次抽取到,而有些樣本可能一次都沒有被抽中)。共進行k輪抽取,得到k個訓練集。(我們這裡假設k個訓練集之間是相互獨立的,事實上不是完全獨立)

2)每次使用一個訓練集得到一個模型,k個訓練集共得到k個模型。但是是同種模型。(注:,k個訓練集雖然有重合不完全獨立,訓練出來的模型因為是同種模型也是不完全獨立。這裡並沒有具體的分類演算法或迴歸方法,我們可以根據具體問題採用不同的分類或迴歸方法,如決策樹、感知器等)

3)對分類問題:將上步得到的k個模型採用投票的方式得到分類結果;對迴歸問題,計算上述模型的均值作為最後的結果。(所有模型的重要性相同)

對於Bagging需要注意的是,每次訓練集可以取全部的特徵進行訓練,也可以隨機選取部分特徵訓練,例如隨機森林就是每次隨機選取部分特徵

常用的整合演算法模型是隨機森林和隨機樹

在隨機森林中,每個樹模型都是裝袋取樣訓練的。另外,特徵也是隨機選擇的,最後對於訓練好的樹也是隨機選擇的。

這種處理的結果是隨機森林的偏差增加的很少,而由於弱相關樹模型的平均,方差也得以降低,最終得到一個方差小,偏差也小的模型。


在一個極端的隨機樹演算法中,隨機應用的更為徹底:訓練集分割的閾值也是隨機的,即每次劃分得到的訓練集是不一樣的。這樣通常能夠進一步減少方差,但是會帶來偏差的輕微增加。

下面通過應用Iris資料集的分類問題來距離說明bagging。

我們可以使用兩種基礎模型:決策樹和KNN。圖中展示了基礎模型與整合模型學習得到的決策邊界。

Accuracy: 0.63 (+/- 0.02) [Decision Tree]      Accuracy: 0.64 (+/- 0.01) [Bagging Tree]

Accuracy: 0.70 (+/- 0.02) [K-NN]                 Accuracy: 0.59 (+/- 0.07) [Bagging K-NN]


決策樹學到的是軸平行邊界,然而k=1最近鄰對資料擬合的最好。bagging通過訓練10個基礎模型能過隨機選擇80%的資料作為訓練集,同樣隨機選擇80%的特徵進行訓練。

決策樹bagging整合相比K-NN bagging整合獲得了更高的準確率。K-NN對於訓練樣本的擾動並不敏感,這也是為什麼K-NN成為穩定學習器的原因。

整合穩定學習器對於提升泛化效能沒有幫助。

影象結果同樣展示了通過增加整合模型的個數帶來的測試準確率變化。基於交叉驗證的結果,我們可以看到整合基礎模型個數大於10個之後效能就基本不再提升了,只是帶來了計算複雜度的增加。

最後一張圖繪製的是整合學習模型的學習曲線,注意訓練集資料的平均誤差為0.3,在對訓練集做80%取樣的時候訓練集和驗證集誤差最小。

Boosting(提高)

Boosting指的是通過演算法集合將弱學習器轉換為強學習器。boosting的主要原則是訓練一系列的弱學習器,所謂弱學習器是指僅比隨機猜測好一點點的模型,例如較小的決策樹,訓練的方式是利用加權的資料。在訓練的早期對於錯分資料給予較大的權重。

對於訓練好的弱分類器,如果是分類任務按照權重進行投票,而對於迴歸任務進行加權,然後再進行預測。boosting和bagging的區別在於是對加權後的資料利用弱分類器依次進行訓練。

boosting是一族可將弱學習器提升為強學習器的演算法,這族演算法的工作機制類似:

  • 先從初始訓練集訓練出一個基學習器;
  • 再根據基學習器的表現對訓練樣本分佈進行調整,使得先前基學習器做錯的訓練樣本在後續受到更多關注;
  • 基於調整後的樣本分佈來訓練下一個基學習器;
  • 重複進行上述步驟,直至基學習器數目達到事先指定的值T,最終將這T個基學習器進行加權結合。

下面描述的演算法是最常用的一種boosting演算法,叫做AdaBoost,表示自適應boosting。


AdaBoost演算法每一輪都要判斷當前基學習器是否滿足條件,一旦條件不滿足,則當前學習器被拋棄,且學習過程停止。

AdaBoost演算法中的個體學習器存在著強依賴關係,應用的是序列生成的序列化方法。每一個基生成器的目標,都是為了最小化損失函式。所以,可以說AdaBoost演算法注重減小偏差。

由於屬於boosting演算法族,採用的是加性模型,對每個基學習器的輸出結果加權處理,只會得到一個輸出預測結果。所以標準的AdaBoost只適用於二分類任務。

我們可以看到第一個分類器y1(x)是用相等的權重係數進行訓練的。在隨後的boosting中,錯分的資料權重係數將會增加,正確分類的資料權重係數將會減小。

epsilon表示單個分類器的加權錯誤率。alpha是分類器的權重,正確的分類器alpha較大。


AdaBoost演算法的表現如上圖所示。每個基礎模型包含一個深度為1的決策樹,這種決策樹依靠線性劃分進行分類,決策平面跟其中一個軸平行。上圖還展示了整合規模的增加帶來的測試準確率變化以及訓練和測試集的學習曲線。

梯度樹提升(Gradient Tree Boosting)是一個boosting演算法在損失函式上的泛化。能夠用於分類和迴歸問題。Gradient Boosting採用序列方式構建模型。


每新增一個決策樹hm(x)都儘可能的選擇是的當前模型Fm-1(x)損失最小的那個:


注意:分類和迴歸使用的損失函式有所差別。

Stacking(堆疊)

Stacking是通過一個元分類器或者元迴歸器來整合多個分類模型或迴歸模型的整合學習技術。基礎模型利用整個訓練集做訓練,元模型將基礎模型的特徵作為特徵進行訓練。

基礎模型通常包含不同的學習演算法,因此stacking通常是異質整合。演算法虛擬碼如下:


各基礎模型的預測結果如下:

Accuracy: 0.91 (+/- 0.01) [KNN]

Accuracy: 0.91 (+/- 0.06) [Random Forest]

Accuracy: 0.92 (+/- 0.03) [Naive Bayes]

Accuracy: 0.95 (+/- 0.03) [Stacking Classifier]

Stacking整合效果如上圖所示。分別在K-NN,Random Forest,Naive Bayes做訓練和預測,然後將其輸出結果作為特徵,利用邏輯迴歸作為元模型進一步訓練。如圖所示,stacking整合的結果由於每個基礎模型,並且沒有過擬合。

Stacking被Kaggle競賽獲獎者廣泛使用。例如,Otto Group Product分類挑戰賽的第一名通過對30個模型做stacking贏得了冠軍。他將30個模型的輸出作為特徵,繼續在三個模型中訓練,這三個模型XGBoost,Neural Network和Adaboost,最後再加權平均。詳見文章(kaggle.com/c/otto-group)。

結構如下:

結合策略

整合學習的第二類模型,為了提高整合的泛化能力,每個基學習器之間不存在很強的依賴性,所以最終預測結果時,需要一定的策略對T個結果進行結合。下面介紹結合策略。

平均法

對數值型輸出,最常見的結合策略是使用平均法。

  • 簡單平均法
  • 加權平均法
    但是對於規模比較大的整合來說,權重引數比較多,較容易導致過擬合。加權平均法未必一定優於簡單平均法。

一般而言,在個體學習器效能相差較大時,宜使用加權平均法,而在個體學習器效能相近時,宜使用簡單平均法。

這一點在第二個專案中深有體會,該模型有三個損失函式,每個損失函式的效能差別比較大,所以用了加權,在第一個資料集中調好引數以後,在第二個資料集中,效果就不是很好,需要重新進行調參。

投票法

  • 絕對多數投票法
    若某標記得票過半數,則預測為該標記;否則拒絕預測。
  • 相對多數投票法
    預測為得票最多的標記。若同時有多個標記獲得最高票,則從中隨機選取一個。
  • 加權投票法

學習法

當訓練資料很多時,一種更為強大的結合策略是使用“學習法”,即通過另一個學習器來進行結合。


程式碼

總結

除了本文所提到的整合學習研究之外,整合學習還被廣泛應用於利用多種分類器做訓練的深度學習模型中。深度學習模型中的分類器可能在架構、超引數以及訓練技巧上存在差異,都可以進行整合。

整合學習已經被證明在Kaggle資料科學競賽中能夠獲得較好的成績。

推薦閱讀

  • Zhi-Hua Zhou, “Ensemble Methods: Foundations and Algorithms”, CRC Press, 2012
  • L. Kuncheva, “Combining Pattern Classifiers: Methods and Algorithms”, Wiley, 2004

參考:

https://blog.statsbot.co/ensemble-learning-d1dcd548e936

https://www.jianshu.com/p/0a23d578ac81


相關推薦

python機器學習案例系列教程——整合學習BaggingBoosting隨機森林RFAdaBoostGBDTxgboost)

可以通過聚集多個分類器的預測結果提高分類器的分類準確率,這一方法稱為整合(Ensemble)學習或分類器組合(Classifier Combination),該方法由訓練資料構建一組基分類器(Base Classifier),然後通過對每個基分類器的預測進行

[機器學習]整合學習--baggingboostingstacking

整合學習簡介整合學習(ensemble learning)通過構建並結合多個學習器來完成學習任務。如何產生“好而不同”的個體學習器,是整合學習研究的核心。整合學習的思路是通過合併多個模型來提升機器學習效能,這種方法相較於當個單個模型通常能夠獲得更好的預測結果。這也是整合學習在

整合學習(Ensemble Learning),BaggingBoostingStacking

1 整合學習概述 1.1 概述 在一些資料探勘競賽中,後期我們需要對多個模型進行融合以提高效果時,常常會用Bagging,Boosting,Stacking等這幾個框架演算法,他們不是一種演算法,而是一種整合模型的框架。 整合學習在機器學習演算法中具有較高的準去率,不足之處就是模型的

機器學習-->整合學習-->Bagging,Boosting,Stacking

在一些資料探勘競賽中,後期我們需要對多個模型進行融合以提高效果時,常常會用到Bagging,Boosting,Stacking等這幾個框架演算法。下面就來分別詳細講述這三個框架演算法。這裡我們只做原理上的講解,不做數學上推導。 整合學習在機器學習演算法中具有較

機器學習---整合學習

整合學習(Ensemble Learning) https://blog.csdn.net/qq_32690999/article/details/78759463 (該文章的內容有: 個體與整合 Boosting Bagging與隨機森林:Bagging、隨機森林 結合策略:平均法、投票法

機器學習 —— 整合學習

整合學習是什麼?   目前,有三種常見的整合學習框架:bagging,boosting和stacking。國內,南京大學的周志華教授對整合學習有很深入的研究,其在09年發表的一篇概述性論文《Ensemble Learning》對這三種整合學習框架有了明確的定義

機器學習-整合學習(AdaBoosting演算法)

一,介紹 AdaBoosting演算法是Boosting演算法中最常用的一種,其思想是:先從初始訓練集訓練一個基學習器,在根據基學習器的表現對訓練樣本進行調整,使得錯誤的訓練樣本在後續受到更多關注,然後調整樣本分佈訓練下一個基學習器;如此重複直到學習器數目達到指定值T,最終

決策樹Bagging隨機森林BoostingAdaBoostGBDTXGBoost

1、決策樹  一、決策樹的優點和缺點     優點: 決策樹演算法中學習簡單的決策規則建立決策樹模型的過程非常容易理解, 決策樹模型可以視覺化,非常直觀 應用範圍廣,可用於分類和迴歸,而且非常容易做多類別的分類 能夠處理數值型和連續的樣本特徵     缺點:

機器學習-->整合學習-->GBDT,RandomForest

本篇博文總仔細總結GBDT,RandomForest原理。 Boosting(提升) 提升是一個機器學習技術,可以用於迴歸和分類問 題,它每一步產生一個弱預測模型(如決策樹),並加權累加到總模型中;如果每一步的弱預測模型生 成都是依據損失函式的梯度方向,

機器學習 整合學習的結合策略之stacking學習

模型融合的結合策略: 基本學習器學習完後,需要將各個模型進行融合,常見的策略有: 1,平均法: 平均法有一般的評價和加權平均,這個好理解。對於平均法來說一般用於迴歸預測模型中,在Boosting系列融合模型中,一般採用的是加權平均融合。 2,投票法:有絕對多數投票

機器學習 - 整合方法(Bagging VS. Boosting 以及隨機森林AdaBoost)

機器學習 - 整合方法(Bagging VS. Boosting 以及隨機森林) 整合方法 Bagging Bagging 分類: Bagging 的預測: Boosting

機器學習 —— 決策樹及其整合演算法(Bagging隨機森林Boosting)

決策樹 --------------------------------------------------------------------- 1.描述: 以樹為基礎的方法可以用於迴歸和分類。 樹的節點將要預測的空間劃分為一系列簡單域 劃分預測空間的規則可以被建模為

機器學習sklearn19.0——整合學習——boosting與梯度提升演算法(GBDT)Adaboost演算法

一、boosting演算法原理 二、梯度提升演算法 關於提升梯度演算法的詳細介紹,參照部落格:http://www.cnblogs.com/pinard/p/6140514.html 對該演算法的sklearn的類庫介紹和調參,參照網址:http://

整合學習boostingbagging隨機森林演算法的介紹

整合學習的概念 定義:整合學習通過構建並結合多個學習器來完成學習任務。 分類:只包含同種型別的個體學習器,這樣的整合是“同質”的,例如都是神經網路或者決策樹;包含不同型別的個體學習器,這樣的整合是“異質”的,例如同時包括神經網路和決策樹。 作用:整合學習通過將多個學習器

用R建立整合學習模型(boostingbaggingstacking

整合學習能夠提升準確率,而本文將會介紹如何用R建立三種高效的整合學習模型。 本次案例研究將手把手地教你實現bagging、boosting、stacking,以及展示如何繼續提高模型的準確率。 讓我們開始吧! 提高模型的準確率 給特定的資料集找到

整合學習boostingbagging

Jackknife,Bootstraping, bagging, boosting, AdaBoosting, Rand forest 和 gradient boosting Bootstraping: 名字來自成語“pull up by your own bootstra

機器學習》筆記--4 整合學習boosting and bagging

Boosting 特點:個體學習器之間存在強依賴關係、必須序列生成的方法。關注偏差的降低。 方法: 先從初始訓練集選練出一個弱學習器,再根據弱學習器的表現進行樣本分佈的調整,提高那些被錯誤學習的樣本的權值,降低那些被正確學習的樣本的權值,然後繼續訓練下一個弱學習器。最後將一

整合學習boosting,AdaboostGBDT 和 xgboost(二)

AdaBoost 演算法的訓練誤差分析 AdaBoost最基本的性質是它能在學習過程中不斷減少訓練誤差,即在訓練資料集上的分類誤差率。 定理:AdaBoost的訓練誤差界: 1

整合學習boosting,AdaboostGBDT 和 xgboost(一)

在前面的部落格(https://blog.csdn.net/qq_16608563/article/details/82878127) 介紹了整合學習的bagging方法及其代表性的隨機森林。此次接著介紹整合學習的另一個方法boosting以及boosting系列的一些演算法,具體包括 Ad

整合學習boosting,AdaboostGBDT 和 xgboost(三)

AdaBoost演算法的解釋——前向分步法與提升樹(GBDT) 可以認為AdaBoost演算法是模型為加法模型,損失函式為指數函式、學習演算法為前向分步演算法時的二類分類學習方法。 前向分步演算法: 考慮加法模型