本文的目的是介紹集成學習方法的各種概念。將解釋一些必要的關鍵點,以便讀者能夠很好地理解相關方法的使用,並能夠在需要時設計適合的解決方案。
我們知道,各種學習模型誤差表現在以下幾個方面:數據噪聲、偏差(偏差過大的模型往往不具備較好的性能,通常不能反映重要的趨勢性特徵)、方差(方差過大的模型往往表現為過擬合,不能夠較好應用於未知數據集,不具備較好的泛化能力)。
因此,首先讓我們簡單地解釋一下集成學習,以了解它如何針對這些類型的誤差:
集成學習是將不同的學習算法組合成一個預測模型的策略。它的核心方法在於「投票」,能夠起到「群眾智慧」或「團結就是力量」的目的。
其主要思想是基於「集合更多的預測方法能夠建立一個更好的模型」。
它可以通過一些簡單的技術來實現,比如最大投票(利用所有預測結果,主要用於分類問題)、平均或加權平均,或者更複雜的計算。
我們既可以通過集合同一類型的學習算法生成同質的集成學習算法,也可以通過不同類型的學習算法生成異質的集成學習算法。
目前集成模型大致可以分為以下四類:裝袋(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 相比,它更簡單,信息洩漏的風險更小。總之,集成學習方法可以綜合不同的模型,以針對具體問題獲得更好的預測結果。