集成學習概述
集成學習本身不是一個單獨的機器學習演算法,而是通過構建並結合多個機器學習器來完成學習任務。也就是我們常說的「博採眾長」。集成學習可以用於分類問題集成,回歸問題集成,特徵選取集成,異常點檢測集成等等,可以說所有的機器學習領域都可以看到集成學習的身影。本文就對集成學習方法進行簡單的總結和概述。
集成學習有兩個主要的問題需要解決,第一是如何得到若干個個體學習器,第二是如何選擇一種結合策略,將這些個體學習器集合成一個強學習器。
集成學習之結合策略
個體學習器已知的情況下
首先,我們介紹blending,blending就是將所有已知的個體學習器 結合起來,發揮集體的智慧得到 強學習器 。值得注意的一點是這裡的 都是已知的。blending通常有三種形式:
- uniform:簡單地計算所有 的平均值
- non-uniform:所有 的線性組合
- conditional:所有 的非線性組合
其中,uniform採用投票、求平均的形式更注重穩定性,而non-uniform和conditional追求的更複雜準確的模型,但存在過擬合的危險。
個體學習器未知的情況下
剛才講的blending是建立在所有 已知的情況。那如果所有個體學習器 未知的情況,對應的就是學習法,做法就是一邊學 ,一邊將它們結合起來。學習法通常也有三種形式(與blending的三種形式一一對應):
- Bagging:通過bootstrap方法,得到不同 ,計算所有 的平均值
- AdaBoost:通過bootstrap方法,得到不同 ,所有 的線性組合
- Decision Tree:通過數據分割的形式得到不同的 ,所有 的非線性組合
然後,後續文章我們將AdaBoost延伸到另一個模型GradientBoost。對於regression問題,GradientBoost通過residual fitting的方式得到最佳的方向函數 和步進長度 。
除了這些基本的集成模型之外,我們還可以把某些模型結合起來得到新的集成模型。
例如:
- Bagging與Decision Tree結合起來組成了Random Forest。Random Forest中的Decision Tree是比較「茂盛」的樹,即每個樹的 都比較強一些。
- AdaBoost與Decision Tree結合組成了AdaBoost-DTree。AdaBoost-DTree的Decision Tree是比較「矮弱」的樹,即每個樹的gt都比較弱一些,由AdaBoost將所有弱弱的樹結合起來,讓綜合能力更強。
- GradientBoost與Decision Tree結合就構成了經典的演算法GBDT。
集成的核心是將所有的 結合起來,融合到一起,即集體智慧的思想。這種做法之所以能得到很好的模型 ,是因為集成具有兩個方面的優點:cure underfitting和cure overfitting。
第一,集成 models 有助於防止欠擬合(underfitting)。它把所有比較弱的 結合起來,利用集體智慧來獲得比較好的模型 。集成就相當於是特徵轉換,來獲得複雜的學習模型。
第二,集成 models 有助於防止過擬合(overfitting)。它把所有 進行組合,容易得到一個比較中庸的模型,類似於SVM的最大間隔一樣的效果,從而避免一些極端情況包括過擬合的發生。從這個角度來說,集成起到了正則化的效果。
由於集成具有這兩個方面的優點,所以在實際應用中集成 models 都有很好的表現。
集成學習之Bootstrap
自助法(bootstrap)是統計學的一個工具,思想就是從已有數據集 中模擬出其他類似的樣本 。
bootstrap的做法是,假設有 個樣本數據,先從中選出一個樣本,再放回去,再選擇一個樣本,再放回去,共重複 次。這樣我們就得到了一個包含 個樣本的數據集,顯然,這個新的 中有一部分樣本會在 中多次出現,而另一部分樣本不出現, 與 類似但又不完全相同。值得一提的是,抽取-放回的操作不一定非要是 ,次數可以任意設定。例如原始樣本有10000個,我們可以抽取-放回3000次,得到包含3000個樣本的 也是完全可以的。其中利用bootstrap進行集成的操作就被稱為bagging。
自助法在數據集較小、難以有效劃分訓練/測試集時很有用;此外,自助法能從初始數據集中產生多個不同的訓練集,這對集成學習等方法有很大的好處。然而,自助法產生的數據集改變了初始數據集的分布,這會引入估計偏差。因此,在初始數據量足夠時,留出法和交叉驗證法更常用。
Betten:模型選擇之交叉驗證推薦閱讀: