【模型融合】Bagging,Boosting,Stacking

一、引言

我理解的Kaggle比赛中提高成绩主要有3个地方

  1. 特征工程
  2. 调参
  3. 模型融合

在机器学习训练完模型之后我们要考虑模型的效率问题,常用的模型效率分析手段有:

  1. 研究模型学习曲线,判断模型是否过拟合或者欠拟合,并做出相应的调整;
  2. 对于模型权重参数进行分析,对于权重绝对值高/低的特征,可以对特征进行更细化的工作,也可以进行特征组合;
  3. 进行bad-case分析,对错误的例子分析是否还有什么可以修改挖掘
  4. 模型融合:模型融合就是训练多个模型,然后按照一定的方法集成过个模型,应为它容易理解、实现也简单,同时效果也很好,在工业界的很多应用,在天池、kaggle比赛中也经常拿来做模型集成。

二、模型融合初探

2.1 什么叫做模型融合

一般来说,通过融合多个不同的模型,可能提升机器学习的性能,这一方法在各种机器学习比赛中广泛应用,比如在kaggle上的otto产品分类挑战赛①中取得冠军和亚军成绩的模型都是融合了1000+模型的“庞然大物”。常见的集成学习&模型融合方法包括:简单的Voting/Averaging(分别对于分类和回归问题)、Stacking、Boosting和Bagging。

 下图介绍了模型融合的一般结构:先产生一组”个体学习器 ,再用某种策略将它们结合起来,加强模型效果。

 

2.2 模型融合应用广泛的原因

可以通过数学证明模型,随着集成中个体分类器数目T 的增大,集成的错误率将指数级下降,最终趋向于零。具体证明在周志华和李航老师的书中都有。它不是具体的指某一个算法,而是一种把多个弱模型融合合并在一起变成一个强模型的思想,也称为集成学习(Ensemble Learning):

1、单个模型容易过拟合,多个模型融合可以提高范化能力
2、单个模型预测能力不高,多个模型往往能提高预测能力
3、对于数据集过大或过小,可以分别进行划分和有放回的操作,产生不同的数据子集,然后通过数据子集训练不同的分类模型,最终合并成一个大的分类器
4、对于多个异构的特征集的时候,很难进行融合,可以考虑每个数据集构建一个分类模型,然后将多个模型融合
5、模型融合算法成功的关键在于能保证弱分类器(弱模型)的多样性,融合不稳定的学习算法能得到更明显的性能提升

2.3 模型融合的条件

个体学习器准确性越高、多样性越大,则融合越好。(这里写图片描述,E代表融合后的误差加权均值,这里写图片描述代表个体学习器的误差加权均值,这里写图片描述代表模型的多样性,也就是各个模型之间的分歧值)

Base Model 之间的相关性要尽可能的小。这就是为什么非 Tree-based Model 往往表现不是最好但还是要将它们包括在 Ensemble 里面的原因。Ensemble 的 Diversity 越大,最终 Model 的 Bias 就越低。
Base Model 之间的性能表现不能差距太大。这其实是一个 Trade-off,在实际中很有可能表现相近的 Model 只有寥寥几个而且它们之间相关性还不低。但是实践告诉我们即使在这种情况下 Ensemble 还是能大幅提高成绩。

2.4 模型融合的分类

按照个体学习器的关系可以分为两类:

  • 个体学习器问存在强依赖关系、必须串行生成的序列化方法,代表Boosting方法;
  • 个体学习器间不存在强依赖关系、可同时生成的并行化方法,代表是Bagging 和”随机森林” 。

2.5 集成学习与模型融合的区别(其实区别不大)

集成学习是指多个弱分类器有关联地逐步训练集成为强分类器,这种弱分类器一定是同质的分类器。一般把弱分类器集成的强分类器看成是一个分类器。

而多模型融合是多个分类器,这里面比如集成学习得到的强分类器看成是一个分类器。多模型融合一般用来做信息补充或互补,比如用时空模型来为行人重识别模型抽取时空信息作补充。

三、模型融合详细介绍

 3.1 模型融合基础算法

投票法(Voting):如果是分类模型,每个模型都会给出一个类别预测结果,通过投票的方式,按照少数服从多数的原则融合得到一个新的预测结果。
均值法(Ave

  • 13
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: bagging:是一种集成学习方法,通过对训练数据进行有放回的随机抽样,生成多个子集,然后在每个子集上训练一个基学习器,最后将这些基学习器的预测结果进行平均或投票来得到最终的预测结果。 boosting:也是一种集成学习方法,但与bagging不同的是,它是通过对训练数据进行加权,使得基学习器更加关注那些难以分类的样本,从而提高整体的预测准确率。 stacking:是一种更加高级的集成学习方法,它不仅仅是将多个基学习器的预测结果进行简单的平均或投票,而是将这些预测结果作为新的特征,再训练一个元学习器来得到最终的预测结果。 ### 回答2: BaggingBoostingStacking都是集成学习(Ensemble Learning)中常用的方法。 Bagging(自举汇聚法)是一种并行集成方法,基于自助采样的思想,通过构建多个相互独立的分类器(如决策树),再进行投票或求平均等方式进行集成。每个子分类器都是在不同的训练数据集上训练得到的,可以减少模型的方差,提高模型的稳定性,有效降低过拟合风险。 Boosting(提升法)则是一种串行集成方法,通过迭代训练一系列弱分类器(如决策树),通过不断调整样本权重以使错误样本更加关注,然后再结合所有弱分类器形成一个强分类器。Boosting可以提高模型的准确性,特别适用于处理复杂的分类问题。 Stacking(堆叠泛化法)是一种更为复杂的集成方法,它结合了BaggingBoosting的优势。在Stacking中,首先构建多层的分类器(如基分类器、元分类器等),每层的输出作为下一层的输入。最后通过一个元分类器来整合各层的输出结果,以获得最终的预测结果。 总结起来,Bagging通过并行地构建多个相互独立的分类器进行集成,Boosting通过迭代地训练一系列弱分类器形成一个强分类器,而Stacking通过构建多层的分类器以获得更强大的预测能力。这些集成方法在实际应用中,能够有效提高分类模型的准确性和稳定性,达到更好的预测效果。 ### 回答3: BaggingBoostingStacking都是常用于集成学习(ensemble learning)中的方法。 Bagging是基于自助采样(bootstrap sampling)的一种集成学习方法。在Bagging中,我们从原始数据集中使用有放回地进行采样得到多个不同的子样本集,并使用这些子样本集独立地训练多个基学习器。最后,通过对基学习器的预测结果进行投票或求平均来得到最终的集成模型。Bagging能够减少过拟合,提高模型的稳定性和泛化能力。 Boosting也是一种集成学习方法,与Bagging不同的是它是基于序列训练的。在Boosting中,基学习器是按顺序训练的,每个基学习器都会根据前一个学习器的预测结果对样本进行调整。Boosting的核心思想是通过迭代训练一系列弱学习器,使得它们能够逐步提升性能并最终形成一个强学习器。常用的Boosting算法有AdaBoost和Gradient BoostingStacking是一种更高级的集成学习方法,它将多个不同类型的基学习器集成在一起。在Stacking中,我们首先使用训练数据集对多个基学习器进行训练,然后使用这些基学习器对测试数据集进行预测。接着,我们将基学习器的预测结果作为输入,再训练一个元学习器来得到最终的集成模型Stacking通过将不同类型的基学习器进行组合,可以充分利用它们的优势,提高模型的性能和泛化能力。 综上所述,BaggingBoostingStacking都是集成学习中常用的方法,它们通过组合多个基学习器来提高模型的性能和泛化能力,从而在实际应用中取得更好的结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小胡同1991

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值