集成学习是一种机器学习技术,它结合多个学习算法产生一个更强的集成模型。主要的集成学习方法有:
- 投票法:每一个基学习者对样本进行分类,算法选择分类结果的多数投票。如Bagging。
- 堆叠法:将多个基学习者的输出进行组合作为最终输出。如Stacking。
- 提取法:各个学习者预测样本的概率或得分,算法结合所有学习者的预测结果产生最终输出。如Boosting。
- 混合法:结合上述多种集成方法,如Bagging+Boosting。
常见的集成学习算法有:
- 随机森林:结合决策树的Bagging集成方法。
- AdaBoost:一种提升树集成方法,反复训练基分类器并调整不同样本的权重。
- 梯度提升树:一种提升树集成方法,用梯度提升的方式不断提升树的性能。
- XGBoost:一种高效的提升树算法,并行化提升和树剪枝。
- LightGBM:一种高效的提升树算法,利用直方图加速训练。
代码示例:
随机森林:
python
from sklearn.ensemble import RandomForestClassifier
clf = RandomForestClassifier(n_estimators=100, max_depth=3)
clf.fit(x_train, y_train)
y_pred = clf.predict(x_test)
AdaBoost:
python
from sklearn.ensemble import AdaBoostClassifier
clf = AdaBoostClassifier(n_estimators=100, random_state=0)
clf.fit(x_train, y_train)
y_pred = clf.predict(x_test)
GBDT:
python
from sklearn.ensemble import GradientBoostingClassifier
clf = GradientBoostingClassifier(n_estimators=100, learning_rate=1.0, max_depth=1, random_state=0)
clf.fit(x_train, y_train)
y_pred = clf.predict(x_test)
XGBoost:
python
import xgboost as xgb
xg_reg = xgb.XGBClassifier(n_estimators = 100, learning_rate = 0.1, max_depth = 5,
nthread=3, colsample_bytree = 0.3, seed = 27)
xg_reg.fit(x_train,y_train)
preds = xg_reg.predict(x_test)