1. 程式人生 > >整合方法,或者叫做組合方法(Ensemble methods)介紹(一)

整合方法,或者叫做組合方法(Ensemble methods)介紹(一)

整合方法的思想就是將若干個分類器組合起來(或者把一種演算法的不同引數組合到一起),以改進各單個分類器的效果。整合方法大致分兩類:

1. Averaging methods(平均方法):

就是利用訓練資料的全集或者一部分資料訓練出幾個演算法或者一個演算法的幾個引數,最終的演算法是所有這些演算法的算術平均。比如Bagging Methods(裝袋演算法),Forest of Randomized Trees(隨機森林)等。實際上這個比較簡單,主要的工作在於訓練資料的選擇,比如是不是隨機抽樣,是不是有放回,選取多少的資料集,選取多少數訓練資料。後續的訓練就是對各個演算法的分別訓練,然後進行綜合平均。這種方法的基礎演算法一般會選擇很強很複雜的演算法

,然後對其進行平均,因為單一的強演算法很容易就導致過擬合(overfit現象),而經過aggregate之後就消除了這種問題。

2. boosting methods(提升演算法):

就是利用一個基礎演算法進行預測,然後在後續的其他演算法中利用前面演算法的結果,重點處理錯誤資料,從而不斷的減少錯誤率。其動機是使用幾種簡單的弱演算法來達到很強大的組合演算法。所謂提升就是把“弱學習演算法”提升(boost)為“強學習演算法,是一個逐步提升逐步學習的過程;某種程度上說,和neural network有些相似性。經典演算法 比如AdaBoost(Adaptive Boost,自適應提升),Gradient Tree Boosting(GBDT)

。這種方法一般會選擇非常簡單的弱演算法作為基礎演算法,因為會逐步的提升,所以最終的幾個會非常強。

scikit-learn提供了Ensemble methods的介紹和Python使用,見:

http://scikit-learn.org/stable/modules/ensemble.html