算法大賽神器:集成學習方法關鍵點介紹

2020-12-27 deephub

本文的目的是介紹集成學習方法的各種概念。將解釋一些必要的關鍵點,以便讀者能夠很好地理解相關方法的使用,並能夠在需要時設計適合的解決方案。

我們知道,各種學習模型誤差表現在以下幾個方面:數據噪聲、偏差(偏差過大的模型往往不具備較好的性能,通常不能反映重要的趨勢性特徵)、方差(方差過大的模型往往表現為過擬合,不能夠較好應用於未知數據集,不具備較好的泛化能力)。

因此,首先讓我們簡單地解釋一下集成學習,以了解它如何針對這些類型的誤差:

集成學習是將不同的學習算法組合成一個預測模型的策略。它的核心方法在於「投票」,能夠起到「群眾智慧」或「團結就是力量」的目的。

其主要思想是基於「集合更多的預測方法能夠建立一個更好的模型」。

它可以通過一些簡單的技術來實現,比如最大投票(利用所有預測結果,主要用於分類問題)、平均或加權平均,或者更複雜的計算。

我們既可以通過集合同一類型的學習算法生成同質的集成學習算法,也可以通過不同類型的學習算法生成異質的集成學習算法。

目前集成模型大致可以分為以下四類:裝袋(Bagging)、增壓(Boosting)、堆疊(Stacking)、混合(Blending)。

Bagging

Bagging(Bootstrap AGGregatING) 集成方法,通過抽取訓練數據的部分子樣本形成子樣本數據集並構建基模型,基模型在不同的子樣本數據集上進行訓練。在各個子樣本數據集上單獨建立基模型(base model),它們獨立並行運行。最後的預測將通過綜合所有模型的結果來確定。

通過為基模型提供不同的數據子集,能夠降低這些模型給出相同結果的概率。

bagging的典型例子:隨機森林方法

隨機森林方法遵循 bagging 技術,通過一個小的調整,解除樹的相關性,並產生一個非常強大的模型。

Bagging 方法適用於高方差低偏差模型。如果單個模型得到的性能非常低(高偏差),那麼 bagging 通常也不能很少地降低偏差。

Boosting

其主要思想是利用已有模型的信息對最終模型進行改進。Boosting 的目的是減少偏差,同時保持較小的方差。它通過非常緩慢的增長來追求方差,通過將許多基模型組合成一個「超級模型」來尋求更低的偏差。

Boosting 雖然可以應用於非樹的模型,但最常用於樹方法。

在Boosting中,第一個算法是在整個數據集上訓練的。然後依次建立後續算法,並對前一算法的殘差進行擬合。 每個學習模型從先前的學習模型和每個階段選擇最佳的學習模型和權重。當前一模型預測效果不好時,它賦予其更高的權重。

損失函數和(偽)殘差的計算方法取決於實際的boosting算法和學習參數 λ 的設置。

常見的 Boosting 集成模型有:

AdaBoost(Adaptive Boosting):根據錯誤的預測結果確定權重。Gradient Boosting Machine(GBM):利用梯度下降來更新模型,以降低誤差。Extreme Gradient Boosting Machine(XGBM):基於 Gradient Boosting 進行了一定優化。LightGBM:類似於 XGBM,但適用於大數據集,與 XGBM 的顯著不同在於拆分樹的方式。CatBoost(Category Boosting):使用類別變量和目標之間的統計關係處理類別變量。Boosting不同於Bagging,Bagging適合併行的多個獨立模型,每個樹都將基於不同的數據子集創建。這兩種方法都將不同模型的多個估計組合在一起,從而減小了單個估計的方差,因此得到的結果可能是一個具有更高穩定性的模型。值得注意的是,如果單個模型的問題在於過擬合,那麼 Bagging 是更好的選擇。

Stacking

它是一種元學習方法,在這種方法中,集成模型被用來「提取特徵」,這些特徵將被集成模型的另一層所使用。它也被稱為疊加泛化(Stacked Generalization)。Stacking 結合了多個模型,在完整訓練集的基礎上訓練基礎層的基模型,然後根據基模型的輸出作為特徵對元模型進行訓練。基礎層通常由不同的學習算法組成,因此 Stacking 集成常常是異構的。

首先,將訓練數據集劃分為 K 份(類似於 K折交叉驗證),然後對不同的基模型重複以下步驟:基模型通過 K-1 份數據集進行訓練,預測餘下數據的結果。在不同基模型的預測基礎上,將預測結果作為輸入數據傳遞至第二層的模型,通過第二次的模型預測測試集。

Blending

類似於 Stacking 方法,但僅使用訓練數據集中的指定子集進行預測。與 Stacking 相比,它更簡單,信息洩漏的風險更小。

首先,將訓練數據集劃分為 訓練子集和驗證子集。然後基模型通過訓練子集進行訓練,並且對驗證子集進行預測。預測結果將作為輸入用於第二層模型的預測。

總結

本文主要介紹了集成學習方法,以及主要集成方法: Bagging, Boosting, Stacking, Blending。 主要幾點內容如下:

集成學習使用多個模型(基模型)來解決同一問題,然後將它們結合起來以獲得更好的性能。在 Bagging 中,對訓練數據的不同子樣本進行並行獨立的相同基模型訓練,然後在某種「平均」過程中進行聚合。它適用於高方差低偏差模型。在 Boosting 中,第一個模型是在整個數據集上訓練的。然後依次建立後續模型並擬合前一模型的殘差。通過將許多基模型組合成一個「超級模型」來追求更低偏差。在 Stacking 中,基於完整的訓練集對底層模型進行訓練,然後以底層模型的輸出作為特徵對元模型進行訓練。在 Blending 中,它類似於 Stacking,但僅使用訓練數據集中的指定子集進行訓練和預測。與 Stacking 相比,它更簡單,信息洩漏的風險更小。總之,集成學習方法可以綜合不同的模型,以針對具體問題獲得更好的預測結果。

相關焦點

  • 集成學習算法與Boosting算法原理
    1 集成學習的概念集成學習(ensemble learning)從概念上講,它並不是一個單獨的機器學習算法,而是通過構建並結合多個機器學習器來完成學習任務。也就是我們常說的「博採眾長」。集成學習可以用於分類問題集成,回歸問題集成,特徵選取集成,異常點檢測集成等等,可以說所有的機器學習領域都可以看到集成學習的身影。從下圖,我們可以對集成學習的思想做一個概括。對於訓練集數據,我們通過訓練若干個個體學習器,通過一定的結合策略,就可以最終形成一個強學習器,以達到博採眾長的目的。
  • 集成學習介紹之二——Boosting算法
    我們上一次介紹了集成學習中的Bagging算法以及由它拓展的隨機森林(《取長補短、互通有無——集成學習介紹之Bagging&隨機森林》),今天我們繼續介紹集成學習的另一類——Boosting算法。
  • 集成學習介紹之三——Stacking算法
    ,或點擊文末閱讀原文直接提交報名信息呦~1算法原理Stacking方法是一種分層模型集成框架。以兩層為例,首先將數據集分成訓練集和測試集,利用訓練集訓練得到多個初級學習器,然後用初級學習器對測試集進行預測,並將輸出值作為下一階段訓練的輸入值,最終的標籤作為輸出值,用於訓練次級學習器(通常最後一級使用Logistic回歸)。
  • 通俗講解集成學習算法!
    ,不錯過本文以圖文的形式對模型算法中的集成學習,以及對集中學習在深度學習中的應用進行了詳細解讀。集成學習(ensemble learning)通過構建並結合多個學習器來完成學習任務,有時也被稱為多分類器系統(multi-classifier system)、基於委員會的學習(committee-based learning)。集成學習是這樣一個過程,按照某種算法生成多個模型,如分類器或者稱為專家,再將這些模型按照某種方法組合在一起來解決某個智能計算問題。
  • 集成學習:機器學習兵器譜的「屠龍刀」
    本文作者認為,集成學習是一種立竿見影、從不過時的方法,堪稱機器學習兵器譜上排名第一的「屠龍刀」。作者在文章中介紹了集成學習的概念和發展,它有RF和GBDT兩大殺器,著重講解了嫁接法、集成半監督學習等最新進展,以及集成學習成功的關鍵。機器學習是一個大武林,這裡面江湖人士頗多,「發明」出來的算法兵器也是五花八門,浩瀚如海,足夠你數上三天兩夜了。
  • 常用的模型集成方法介紹:bagging、boosting 、stacking
    這句老話很好地表達了機器學習領域中強大「集成方法」的基本思想。總的來說,許多機器學習競賽(包括 Kaggle)中最優秀的解決方案所採用的集成方法都建立在一個這樣的假設上:將多個模型組合在一起通常可以產生更強大的模型。本文介紹了集成學習的各種概念,並給出了一些必要的關鍵信息,以便讀者能很好地理解和使用相關方法,並且能夠在有需要的時候設計出合適的解決方案。
  • 常用的模型集成方法介紹:bagging、boosting、stacking
    這句老話很好地表達了機器學習領域中強大「集成方法」的基本思想。總的來說,許多機器學習競賽(包括 Kaggle)中最優秀的解決方案所採用的集成方法都建立在一個這樣的假設上:將多個模型組合在一起通常可以產生更強大的模型。本文介紹了集成學習的各種概念,並給出了一些必要的關鍵信息,以便讀者能很好地理解和使用相關方法,並且能夠在有需要的時候設計出合適的解決方案。
  • 從Boosting到Stacking,概覽集成學習的方法與性能
    集成學習(Ensemble learning)通過組合幾種模型來提高機器學習的效果。與單一模型相比,該方法可以提供更好的預測結果。正因為如此,集成方法在許多著名的機器學習比賽(如 Netflix、KDD 2009 和 Kaggle 比賽)中能夠取得很好的名次。
  • 一種面向高維數據的集成聚類算法
    聚類集成已經成為機器學習的研究熱點,它對原始數據集的多個聚類結果進行學習和集成,得到一個能較好地反映數據集內在結構的數據劃分。很多學者的研究證明聚類集成能有效地提高聚類結果的準確性、魯棒性和穩定性。本文提出了一種面向高維數據的聚類集成算法。
  • 一文讀懂集成學習(附學習資源)
    有人把它稱為機器學習中的「屠龍刀」,非常萬能且有效,集成模型是一種能在各種的機器學習任務上提高準確率的強有力技術,集成算法往往是很多數據競賽關鍵的一步,能夠很好地提升算法的性能。哲學思想為「三個臭皮匠賽過諸葛亮」。拿分類問題舉個例,直觀的理解,就是單個分類器的分類是可能出錯,不可靠的,但是如果多個分類器投票,那可靠度就會高很多。
  • 【綜述】介紹這些常用機器學習算法的優缺點
    正則化算法(Regularization Algorithms)集成算法(Ensemble Algorithms)決策樹算法
  • 機器學習(一)集成學習
    關於集成學習的概念  集成學習是機器學習中一個非常重要且熱門的分支,是用多個弱分類器構成一個強分類器,其哲學思想是「三個臭皮匠賽過諸葛亮」。一般的弱分類器可以由決策樹,神經網絡,貝葉斯分類器,K-近鄰等構成。已經有學者理論上證明了集成學習的思想是可以提高分類器的性能的,比如說統計上的原因,計算上的原因以及表示上的原因。
  • 一文看懂集成學習(詳解 bagging、boosting 以及他們的 4 點區別)
    在機器學習中,我們講了很多不同的算法。那些算法都是單打獨鬥的英雄。而集成學習就是將這些英雄組成團隊。
  • 機器學習入門 13-1 什麼是集成學習?
    什麼是集成學習?本章會介紹機器學習領域中非常重要的集成學習方法。在機器學習中,集成學習方法使用多種學習算法來獲得比使用任何單獨的學習算法更好的預測性能。集成學習類似新世紀福音戰士(EVA)中名為 "三賢者" 的超級電腦。
  • 集成學習(Ensemble Learning)
    集成學習就是組合這裡的多個弱監督模型以期得到一個更好更全面的強監督模型,集成學習潛在的思想是即便某一個弱分類器得到了錯誤的預測,其他的弱分類器也可以將錯誤糾正回來。集成學習在各個規模的數據集上都有很好的策略。這篇博客介紹一下集成學習的幾類:Bagging,Boosting以及Stacking。
  • 快速弄懂機器學習裡的集成算法:原理、框架與實戰
    關於集成學習算法的框架體系集成學習算法作為機器學習裡的一個分支,已形成了一套的理論體系,其相關概念也比較多,如個體學習器、結合策略、bagging、AdaBoost算法、XGB、LGBT等等,讓初學者眼花繚亂,每個具體算法的原理不同又會讓大家暈頭轉向。實際上,這些繁多的內容背後,集成學習算法可以分成兩大框架,這也是集成學習著重解決的兩個算法。
  • EmotiW2018國際大賽奪冠 解析思圖場景情感識別算法
    本次大賽,思圖場景在EmotiW2018的視頻情緒分類挑戰賽中獲得第一名,情緒識別分類準確率比2017年冠軍Intel Lab高1.53%。其算法主要涉及到4個模塊,分別是卷積神經網絡(CNN)、長短期記憶網絡(LSTM)、人臉關鍵點幾何特徵和聲音特徵。這四個不同的特徵模塊,保證了算法可以學習到視頻的多方信息。
  • 算法學習筆記
    來源:http://t.cn/8skZJe2學習方法基本數據結構和算法海量數據處理算法設計思想算法問題選編開源項目中的算法推薦閱讀參考連結和學習網站算法虐我千百遍,我待算法如初戀這裡的內容是我學習算法過程的一些記錄
  • 集成算法
    --李白 《將進酒》1、概念通過一定的策略組合多個學習器(稱為基學習器)完成學習任務,相比單個學習器學習效果更好。2、三種集成算法(1)Bagging並行的訓練多個分類器,取平均值(也可以是加權平均,或其它策略)代表算法:隨機森林(2)Boosting依次串行的訓練基學習器,每訓練一個模型,重新調整樣本的權重,使下一個模型更加重視上一次訓練出錯的樣本。
  • 七個關鍵因素:如何選擇出優秀機器學習算法?
    如果理解結果背後的原因是問題的要求,那麼需要相應地選擇合適的算法。數據點的數量和特徵在選擇合適的機器學習算法時,數據點的特徵和數量起著至關重要的作用。根據用例的不同,機器學習模型將與各種不同的數據集一起工作,這些數據集的數據點和特徵也會有所不同。在某些情況下,選擇模型需要理解模型如何處理不同大小的數據集。