集成學習實踐部分也分成三塊來講解:
sklearn官方文檔:http://scikit-learn.org/stable/modules/ensemble.html#ensemble
1、GBDT
GradientBoostingClassifier:http://scikit-learn.org/stable/modules/generated/sklearn.ensemble.GradientBoostingClassifier.html#sklearn.ensemble.GradientBoostingClassifier
GradientBoostingRegressor:http://scikit-learn.org/stable/modules/generated/sklearn.ensemble.GradientBoostingRegressor.html#sklearn.ensemble.GradientBoostingRegressor
參數說明:
1、loss:損失函數的類型:分類算法中有對數似然損失函數"deviance"和指數損失函數"exponential"兩者輸入選擇,指數有點類似Adaboost
對於回歸模型,有均方差"ls", 絕對損失"lad", Huber損失"huber"和分位數損失“quantile”。
2、learning_rate:學習率,也就是每個基學習器前面的權重
3、n_estimators:基學習器數量
4、subsample:采樣,就是正則化因子里講過,這里是不放回的采樣,取值在0,1之間
若學習期的參數:這里以決策樹為例
5、max_features:划分是選擇的最多特征數
6、等等
2、XGBoost
http://xgboost.apachecn.org/cn/latest/
參數介紹參考:http://blog.csdn.net/wzmsltw/article/details/50994481
3、Adaboost
在sklearn中Adaboost庫分成兩個,分別是分類和回歸AdaBoostClassifier和AdaBoostRegressor
對於集成學習我們參數部分也分成框架跟基學習器的參數兩種
1、框架部分:
AdaBoostClassifier:http://scikit-learn.org/stable/modules/generated/sklearn.ensemble.AdaBoostClassifier.html#sklearn.ensemble.AdaBoostClassifier
AdaBoostRegressor:http://scikit-learn.org/stable/modules/generated/sklearn.ensemble.AdaBoostRegressor.html#sklearn.ensemble.AdaBoostRegressor
參數說明:
base_estimator:弱學習器是什么,default=DecisionTreeClassifier,
algorithm:這個參數只有AdaBoostClassifier有。主要原因是scikit-learn實現了兩種Adaboost分類算法,SAMME和SAMME.R。兩者的主要區別是弱學習器權重的度量,SAMME使用了和我們的原理篇里二元分類Adaboost算法的擴展,即用對樣本集分類效果作為弱學習器權重,而SAMME.R使用了對樣本集分類的預測概率大小來作為弱學習器權重。由於SAMME.R使用了概率度量的連續值,迭代一般比SAMME快,因此AdaBoostClassifier的默認算法algorithm的值也是SAMME.R。我們一般使用默認的SAMME.R就夠了,但是要注意的是使用了SAMME.R, 則弱分類學習器參數base_estimator必須限制使用支持概率預測的分類器。SAMME算法則沒有這個限制。
loss:只有AdaBoostRegressor有,代表使用的損失是那種損失
n_estimators:弱學習器個數
learning_rate:學習率,也就是我們前面理論部分有講到正則化里面的參數
2、基學習器
基學習器可選的有很多種,這里舉例CART樹
與決策樹的參數一樣,可選擇的有很多,更多參考決策樹那篇
3、實戰