集成學習概述

集成學習本身不是一個單獨的機器學習演算法,而是通過構建並結合多個機器學習器來完成學習任務。也就是我們常說的「博採眾長」。集成學習可以用於分類問題集成,回歸問題集成,特徵選取集成,異常點檢測集成等等,可以說所有的機器學習領域都可以看到集成學習的身影。本文就對集成學習方法進行簡單的總結和概述。

集成學習有兩個主要的問題需要解決,第一是如何得到若干個個體學習器,第二是如何選擇一種結合策略,將這些個體學習器集合成一個強學習器。

集成學習之結合策略

個體學習器已知的情況下

首先,我們介紹blending,blending就是將所有已知的個體學習器 g(t) 結合起來,發揮集體的智慧得到 強學習器G 。值得注意的一點是這裡的 g(t) 都是已知的。blending通常有三種形式:

  • uniform:簡單地計算所有 g(t) 的平均值
  • non-uniform:所有 g(t) 的線性組合
  • conditional:所有 g(t) 的非線性組合

其中,uniform採用投票、求平均的形式更注重穩定性,而non-uniform和conditional追求的更複雜準確的模型,但存在過擬合的危險。

個體學習器未知的情況下

剛才講的blending是建立在所有 g(t) 已知的情況。那如果所有個體學習器 g(t) 未知的情況,對應的就是學習法,做法就是一邊學 g(t) ,一邊將它們結合起來。學習法通常也有三種形式(與blending的三種形式一一對應):

  • Bagging:通過bootstrap方法,得到不同 g(t) ,計算所有 g(t) 的平均值
  • AdaBoost:通過bootstrap方法,得到不同 g(t) ,所有 g(t) 的線性組合
  • Decision Tree:通過數據分割的形式得到不同的 g(t) ,所有 g(t) 的非線性組合

然後,後續文章我們將AdaBoost延伸到另一個模型GradientBoost。對於regression問題,GradientBoost通過residual fitting的方式得到最佳的方向函數 g(t) 和步進長度 eta

除了這些基本的集成模型之外,我們還可以把某些模型結合起來得到新的集成模型。

例如:

  • Bagging與Decision Tree結合起來組成了Random Forest。Random Forest中的Decision Tree是比較「茂盛」的樹,即每個樹的 g(t) 都比較強一些。
  • AdaBoost與Decision Tree結合組成了AdaBoost-DTree。AdaBoost-DTree的Decision Tree是比較「矮弱」的樹,即每個樹的gt都比較弱一些,由AdaBoost將所有弱弱的樹結合起來,讓綜合能力更強。
  • GradientBoost與Decision Tree結合就構成了經典的演算法GBDT

集成的核心是將所有的 g(t) 結合起來,融合到一起,即集體智慧的思想。這種做法之所以能得到很好的模型 G ,是因為集成具有兩個方面的優點:cure underfitting和cure overfitting。

第一,集成 models 有助於防止欠擬合(underfitting)。它把所有比較弱的 g(t) 結合起來,利用集體智慧來獲得比較好的模型 G 。集成就相當於是特徵轉換,來獲得複雜的學習模型。

第二,集成 models 有助於防止過擬合(overfitting)。它把所有 g(t) 進行組合,容易得到一個比較中庸的模型,類似於SVM的最大間隔一樣的效果,從而避免一些極端情況包括過擬合的發生。從這個角度來說,集成起到了正則化的效果。

由於集成具有這兩個方面的優點,所以在實際應用中集成 models 都有很好的表現。

集成學習之Bootstrap

自助法(bootstrap)是統計學的一個工具,思想就是從已有數據集 D 中模擬出其他類似的樣本 D_t

bootstrap的做法是,假設有 m 個樣本數據,先從中選出一個樣本,再放回去,再選擇一個樣本,再放回去,共重複 N 次。這樣我們就得到了一個包含 m 個樣本的數據集,顯然,這個新的 D 中有一部分樣本會在D_{t} 中多次出現,而另一部分樣本不出現, D_{t}D 類似但又不完全相同。值得一提的是,抽取-放回的操作不一定非要是 m ,次數可以任意設定。例如原始樣本有10000個,我們可以抽取-放回3000次,得到包含3000個樣本的 D_{t} 也是完全可以的。其中利用bootstrap進行集成的操作就被稱為bagging。

自助法在數據集較小、難以有效劃分訓練/測試集時很有用;此外,自助法能從初始數據集中產生多個不同的訓練集,這對集成學習等方法有很大的好處。然而,自助法產生的數據集改變了初始數據集的分布,這會引入估計偏差。因此,在初始數據量足夠時,留出法和交叉驗證法更常用。

Betten:模型選擇之交叉驗證zhuanlan.zhihu.com圖標
推薦閱讀:

TAG:机器学习 | 数据挖掘 | Kaggle |