一.什么是集成学习
集成学习 (ensemble learning)通过将多个学习器进行组合来完成学习任务。下图显示集成学习的一般结构(取自周志华老师的西瓜书),个体学习器通常由一种现有的学习算法从训练数据产生,例如决策树(C4.5、CART)、BP神经网络等。集成中只包含同种类型的个体学习器时,集成是同质的,同质集成 中的个体学习器也称为"基学习器",相应学习算法称为"基学习器算法";集成中包含不同类型的个体学习器时,例如既有决策树又有神经网络,这样的集成是异质的,异质集成 中个体学习器由不同学习算法生成,这时不再有基学习器算法,相应的个体学习器一般不称为基学习器,直接称为"个体学习器"或"组件学习器"。
集成学习算法需要关注的两个问题,是探索集成学习的关键:
1)个体学习器如何训练得到
例如Adaboost改变训练数据权值;Gradient Boosting的梯度提升
2)如何将个体学习器组合
例如Bagging的投票法------软投票、硬投票;Boosting的线性组合------加法模型
不同的个体学习器训练方法+不同的个体学习器组合=不同的集成学习算法
二.集成学习主要方法
2.1Boosting 串行方法
Boosting是将弱学习算法提升为强学习算法的机器学习方法,采用加法模型 (即基函数的线性组合)与前向分步算法or梯度提升算法。通俗解释:Boosting会训练一系列弱分类器,并将所有学习器的预测结果组合起来作为最终预测结果,在学习过程中,后期的学习器更关注先前学习器学习中的错误。
-
典型算法
Adaboost、GBDT、XGBoost、LightGBM等,其中AdaBoost 继承了Boosting的思想,为每个弱学习器赋予不同权值,将所有弱分类器权重和作为预测的结果,达到强学习器的效果;Gradient Boosting是Boosting思想的另一种实现方法,它将损失函数梯度下降的方向作为优化的目标,新的学习器建立在之前学习器损失函数梯度下降的方向,在梯度下降的方向不断优化,使损失函数持续下降,从而提高模型的拟合程度,代表算法GBDT、XGBoost、LightGBM;GBDT (Gradient Tree Boosting,别名 GBM、GBRT、MART)是Gradient Boosting的一种实现,GBDT相较BDT(提升树)基学习器都是采用CART回归树,但BDT是不断拟合残差来优化目标函数,GBDT是通过负梯度近似残差来优化目标函数(即损失函数);XGBoost和LightGBM都是GBDT的改进模型,最终这两个模型成为了集大成者,适合于分类、回归、排序等问题(多种基学习器);支持分布式并行计算(Rabit),具有高可移植性(XGBoost4J-Spark、XGBoost4J-Flink);支持GPU算法加速;结果也更加精准(目标函数用二阶泰勒展开近似);泛化能力更强(加入了结构误差项------正则化降低模型复杂度)。
-
算法特点
Boosting可以有效提高模型准确性,但各个基学习器间存在强依赖关系,只能【串行】生成的序列化方法,时间开销较大(XGBoost和LightGBM在这方面已经做了极大的改进)
2.2Bagging 并行方法
Bagging对数据集进行有放回采样,得到每个基模型所需要的子训练集,然后对所有基模型预测结果进行综合,产生最终的预测结果。对于分类问题,采用投票法(软投票、硬投票)计算结果;对于回归问题,采用平均法计算结果。
- 典型算法
Random Forests随机森林(简称RF)是Bagging最具代表性的算法,基学习器采用决策树,并且在Bagging样本扰动(行采样)的基础上增加了属性扰动(列采样),进一步丰富了样本的多样性。 - 算法特点
Bagging模型的精度要比Boosting低,但各个基学习器相互独立,不存在强依赖关系,可以【并行】生成的序列化方法,时间开销较小(RF模型仅采用决策树作为基模型,进一步优化可训练效率)
2.3Stacking 融合方法
Stacking是通过训练集训练好所有的基模型,然后用基模型的预测结果生成一个新的数据,作为组合器模型的输入,用以训练组合器模型,最终得到预测结果。组合器模型通常采用逻辑回归。
- 算法特点
Stacking一般采用异质集成 ,即使用多种学习算法训练不同种类的个体学习器。而Boosing和Bagging采用同质集成,即基学习器为同一种基学习算法。
三.集成学习案例
3.1书籍案例推荐
《阿里云天池大赛赛题分析 机器学习篇》
- 工业蒸汽量预测 属于回归问题 。采用的算法有 单一模型 岭回归、Lasso回归、SVR回归、K近邻; Boosting模型 GBDT 、XGBoost; Bagging模型 RandomForset; 多模型融合Stacking LightGBM+LinearRegression 等等。
- 天猫用户重复购买预测 属于分类问题 。采用模型有 单一模型 逻辑回归LogisticRegressioin、高斯贝叶斯 GaussianNB、K近邻、决策树分类; 集成学习 随机森林、LightGBM、极端随机树ET。
- O2O优惠券预测 属于时间序列预测问题 。采用算法有 朴素贝叶斯 MultinomialNB、逻辑回归、决策树、随机森林、XGBoost、LightGBM。另外有模型验证方法 交叉验证(K折、留一法、留P法、K折分层等)、 验证结果可视化 (学习曲线、验证曲线),以及模型调参 (网格搜索、随机搜索、启发式搜索)。
- 阿里云安全恶意程序检测 属于多分类问题,采用LightGBM模型实现,本节更多讲解 数据探索和特征工程过程。
3.2个人学习博客
1.关于XGBoost的应用示例及基本原理,
见《XGBoost模型调参、训练、评估、保存和预测》 ,包含模型脚本文件;
见《XGBoost算法原理及基础知识》 ,包括集成学习方法,XGBoost模型、目标函数、算法,公式推导等;
2.关于分类任务的评估指标值详解,
见《分类任务评估1------推导sklearn分类任务评估指标》,其中包含了详细的推理过程;
见《分类任务评估2------推导ROC曲线、P-R曲线和K-S曲线》,其中包含ROC曲线、P-R曲线和K-S曲线的推导与绘制;
3.关于XGBoost模型中树的绘制和模型理解,
见《Graphviz绘制模型树1------软件配置与XGBoost树的绘制》,包含Graphviz软件的安装和配置,以及to_graphviz()和plot_trees()两个画图函数的部分使用细节;
见《Graphviz绘制模型树2------XGBoost模型的可解释性》,从模型中的树着手解释XGBoost模型,并用EXCEL构建出模型。
4.关于集成学习实践,
见《机器学习实践(1.1)XGBoost分类任务》,包含二分类、多分类任务以及多分类的评估方法。
见《机器学习实践(1.2)XGBoost回归任务》,包含回归任务模型训练、评估(R2、MSE)。
见《机器学习实践(2.1)LightGBM分类任务》,包含LightGBM二分类、多分类任务及评估方法;
见《机器学习实践(2.2)LightGBM回归任务》,包含LightGBM模型的调参、训练、保存、调用、评估。
❤️ 机器学习内容持续更新中... ❤️
声明:本文所载信息不保证准确性和完整性。文中所述内容和意见仅供参考,不构成实际商业建议,可收藏可转发但请勿转载,如有雷同纯属巧合。