from sklearn import ensemble
集成分類器(ensemble):
1.bagging(ensemble.bagging.BaggingClassifier)
其原理是從現有數據中有放回抽取若干個樣本構建分類器,重復若干次建立若干個分類器進行投票,通過投票決定最終的分類結構
2.RandomForest(ensemble.RandomForestClassifier)
對隨機選取的子樣本集分別建立m個CART(Classifier and Regression Tree),然后投票決定最終的分類結果
Random在此處的意義:
1)Bootstrap 中的隨機選擇子樣本集
2)Random subspace 的算法從屬性中隨機選擇k個屬性,每個樹節點分裂時從這隨機的k個屬性中,選擇最優的
3.Boosting(ensemble.weight_boosting)
在選擇分類超平面時給樣本加了一個權值,使得loss function盡量考慮那些分錯類的樣本。(i.e.分錯類的樣本weight 大)
-boosting 重采樣的不是樣本,而是樣本的分布。
最后的分類結果是幾個弱分類器的線性加權和。注意這幾個弱分類器都是一種base classifier類別。
-與bagging的區別:1)bagging 的訓練集是隨機的,各訓練集是獨立的;而boosting訓練集的選擇不是獨立的,每次選擇的訓練集都依賴於上一次學習的結果;
2) bagging的每個預測函數(即弱假設)沒有權重,而Boosting根據每一次訓練的訓練誤差得到該次預測函數的權重;
3)bagging的每個分類器的訓練樣本是隨機抽樣構建,而Boosting會對上一次分類輸出的結果進行采樣,錯誤的樣本會有更高的權重;
4)bagging的各個預測函數可以並行生成,而boosting的只能順序生成。對於神經網絡這樣極為耗時的學習方法,Bagging可通過並行訓練節省大量的時間開銷。
2)、3)的權重機制,體現了boosting“提升”的特性。
-與bagging的共同點:都可以通過使用for循環給estimator賦不同的分類器類型,以實現集成多種分類器,而不是單一的某一種(比如決策樹)。
代表算法 Adaboost 和 Realboost。總的來說,Adaboost 簡單好用,Realboost 准確
4、GBDT
使用決策樹作為基本分類器;梯度提升優化算法;
重復選擇一個表現一般的模型並且每次基於先前模型的表現進行調整;
不同的是,AdaBoost是通過提升錯分數據點的權重來定位模型的不足,而GradientBoosting是通過計算梯度(gradient)來定位模型的不足。因此相比AdaBoost,GradientBoosting可以使用更多種類的目標函數。
5.Stacking
在stacking(堆疊)方法中,每個單獨分類器的輸出會作為更高層分類器的輸入,更高層分類器可以判斷如何更好地合並這些來自低層的輸出。
參考文章:http://blog.csdn.net/abcjennifer/article/details/8164315