问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

模型融合方法总结

发布网友 发布时间:2022-10-15 03:22

我来回答

1个回答

热心网友 时间:2023-10-03 02:00

        一般来说,通过融合多个不同的模型,可能提升机器学习的性能,这一方法在各种 机器学习比赛 中广泛应用,比如在kaggle上的otto产品分类挑战赛①中取得冠军和亚军成绩的模型都是融合了1000+模型的“庞然大物”。

        常见的集成学习&模型融合方法包括:简单的Voting/Averaging(分别对于分类和回归问题)、Stacking、Boosting和Bagging。

        在不改变模型的情况下,直接对各个不同的模型预测的结果,进行投票或者平均,这是一种简单却行之有效的融合方式。

        比如对于 分类问题 ,假设有三个相互独立的模型,每个正确率都是70%,采用少数服从多数的方式进行投票。那么最终的正确率将是:

        即结果经过简单的投票,使得正确率提升了8%。这是一个简单的概率学问题——如果进行投票的模型越多,那么显然其结果将会更好。但是其 前提条件是模型之间相互独立,结果之间没有相关性。越相近的模型进行融合,融合效果也会越差。

        比如对于一个正确输出全为1的测试,我们有三个很相近的的预测结果,分别为:

进行投票其结果为:

而假如我们的各个预测结果之间有很大差异:

其投票结果将为:

        可见模型之间差异越大,融合所得的结果将会更好。//这种特性不会受融合方式的影响。 注意这里所指模型之间的差异,并不是指正确率的差异,而是指模型之间相关性的差异。

        对于 回归问题 ,对各种模型的预测结果进行平均,所得到的结果通过能够减少过拟合,并使得边界更加平滑,单个模型的边界可能很粗糙。这是很直观的性质,随便放张图②就不另外详细举例了。

        在上述融合方法的基础上,一个进行改良的方式是对各个投票者/平均者分配不同的权重以改变其对最终结果影响的大小。对于正确率低的模型给予更低的权重,而正确率更高的模型给予更高的权重。这也是可以直观理解的—— 想要推翻专家模型(高正确率模型)的唯一方式,就是臭皮匠模型(低正确率模型)同时投出相同选项的反对票 。 具体的对于权重的赋值,可以用正确率排名的正则化等。

        这种方法看似简单,但是却是下面各种“高级”方法的基础。

        Boosting是一种将各种弱分类器串联起来的集成学习方式,每一个分类器的训练都依赖于前一个分类器的结果,顺序运行的方式导致了运行速度慢。和所有融合方式一样,它不会考虑各个弱分类器模型本身结构为何,而是对训练数据(样本集)和连接方式进行操纵以获得更小的误差。但是为了将最终的强分类器的误差均衡,之前所选取的分类器一般都是相对比较弱的分类器,因为一旦某个分类器较强将使得后续结果受到影响太大。 所以多用于集成学习而非模型融合(将多个已经有较好效果的模型融合成更好的模型)。

        这里引用知乎专栏 《【机器学习】模型融合方法概述》③处引用的加州大学欧文分校Alex Ihler教授的两页PPT:

        其基本工作机制如下:

        1、从初始样本集中训练出一个基学习器;

        2、根据基学习器的表现对样本集分布进行调整,使得做错的样本能在之后的过程中受到更多的关注;

        3、用调整后的样本集训练下一个基学习器;

        4、重复上述步骤,直到满足一定条件。

         注意,一般只有弱分类器都是同一种分类器(即同质集成)的时候,才将弱分类器称为基学习器,如果是异质集成,则称之为个体学习器。由于不是本文重点,所以此处不作区分。特此说明。

        最终将这些弱分类器进行 加权相加 。

        常见的Boosting方法有Adaboost、GBDT、XGBOOST等。 //下面仅从思想层次上简单介绍各种方法,具体的算法推理公式推导以及可用的工具包等参考本文附录。

        Bagging是 Bootstrap Aggregating 的缩写。这种方法同样不对模型本身进行操作,而是作用于样本集上。采用的是随机有放回的选择训练数据然后构造分类器,最后进行组合。与Boosting方法中各分类器之间的相互依赖和串行运行不同,Bagging方法中基学习器之间不存在强依赖关系,且同时生成并行运行。

        其基本思路为:

        1、在样本集中进行K轮有放回的抽样,每次抽取n个样本,得到K个训练集;

        2、分别用K个训练集训练得到K个模型。

        3、对得到的K个模型预测结果用投票或平均的方式进行融合。

         在这里,训练集的选取可能不会包含所有样本集,未被包含的数据成为包/袋外数据,可用来进行包外误差的泛化估计。每个模型的训练过程中,每次训练集可以取全部的特征进行训练,也可以随机选取部分特征训练,例如极有代表性的随机森林算法就是每次随机选取部分特征。

        下面仅从思想层面介绍随机森林算法:

        1、在样本集中进行K轮有放回的抽样,每次抽取n个样本,得到K个训练集,其中n一般远小于样本集总数;

        2、选取训练集,在整体特征集M中选取部分特征集m构建决策树,其中m一般远小于M;

        3、在构造每棵决策树的过程中,按照选取最小的基尼指数进行*节点的选取进行决策树的构建。决策树的其他结点都采取相同的*规则进行构建,直到该节点的所有训练样例都属于同一类或者达到树的最大深度;

        4、重复上述步骤,得到随机森林;

        5、多棵决策树同时进行预测,对结果进行投票或平均得到最终的分类结果。

        多次随机选择的过程,使得随机森林不容易过拟合且有很好的抗干扰能力。

优化方式上 >

        在机器学习中,我们训练一个模型通常是将定义的Loss最小化的过程。但是单单的最小化loss并不能保证模型在解决一般化的问题时能够最优,甚至不能保证模型可用。训练数据集的Loss与一般化数据集的Loss之间的差异被称为generalization error。

        Variance过大会导致模型过拟合,而Bias过大会使得模型欠拟合。

          Bagging 方法主要通过降低 Variance 来降低 error , Boosting 方法主要通过降低 Bias 来降低 error 。

        Bagging方法采用多个不完全相同的训练集训练多个模型,最后结果取平均。由于

        所以最终结果的Bias与单个模型的Bias相近,一般不会显著降低Bias。    

        另一方面,对于Variance则有:

        Bagging的多个子模型由不完全相同的数据集训练而成,所以子模型间有一定的相关性但又不完全独立,所以其结果在上述两式的中间状态。因此可以在一定程度上降低Variance从而使得总error减小。

        Boosting方法从优化角度来说,是用forward-stagewise这种贪心法去最小化损失函数

。所谓forward-stagewise,就是在迭代的第n步,求解新的子模型f(x)及步长a(或者称组合系数),来最小化

,这里

是前n步得到的子模型的和。因此Boosting在最小化损失函数,Bias自然逐步下降,而由于模型间强相关,不能显著降低Variance。

        Bagging里面每个分类器是强分类器,因为他降低的是方差,方差过高需要降低是过拟合。

        boosting里面每个分类器是弱分类器,因为他降低的是偏差,偏差过高是欠拟合。

样本选择上>

        Bagging:训练集是在原始集中有放回选取的,从原始集中选出的各轮训练集之间是独立的。

        Boosting:每一轮的训练集不变,只是训练集中每个样例在分类器中的权重发生变化。而权值是根据上一轮的分类结果进行调整。

样例权重 >

        Bagging:使用均匀取样,每个样例的权重相等

        Boosting:根据错误率不断调整样例的权值,错误率越大则权重越大

预测函数 >

        Bagging:所有预测函数的权重相等。

        Boosting:每个弱分类器都有相应的权重,对于分类误差小的分类器会有更大的权重

并行计算 >

        Bagging:各个预测函数可以并行生成

        Boosting:理论上各个预测函数只能顺序生成,因为后一个模型参数需要前一轮模型的结果。计算角度来看,两种方法都可以并行。bagging,random forest并行化方法显而意见。boosting有强力工具stochastic gradient boosting

        接下来介绍在 各种机器学习比赛中 被誉为“七头龙神技”的Stacking方法。

         (但因其模型的庞大程度与效果的提升程度往往不成正比,所以一般很难应用于实际生产中)

        下面以一种易于理解但不会实际使用的两层的stacking方法为例,简要说明其结构和工作原理: (这种模型问题将在后续说明)

        假设我们有三个基模型M1,M2,M3,用训练集对其进行训练后,分别用来预测训练集和测试集的结果,得到P1,T1,P2,T2,P3,T3

        这种方法的问题在于,模型M1/2/3是我们用整个训练集训练出来的,我们又用这些模型来预测整个训练集的结果,毫无疑问过拟合将会非常严重。因此在实际应用中往往采用 交叉验证 的方法来解决过拟合问题。

        首先放几张图⑤,我们着眼于Stacking方法的第一层,以5折交叉验证为例说明其工作原理:

1、首先我们将训练集分为五份。

2、对于每一个基模型来说,我们用其中的四份来训练,然后对未用来的训练的一份训练集和测试集进行预测。然后改变所选的用来训练的训练集和用来验证的训练集,重复此步骤,直到获得完整的训练集的预测结果。

3、对五个模型,分别进行步骤2,我们将获得5个模型,以及五个模型分别通过交叉验证获得的训练集预测结果。即P1、P2、P3、P4、P5。

4、用五个模型分别对测试集进行预测,得到测试集的预测结果:T1、T2、T3、T4、T5。

5、将P1~5、T1~5作为下一层的训练集和测试集。在图中分别作为了模型6的训练集和测试集。

        Stacking方法的整体结构如下图所示:

        Blending是一种和Stacking很相像的模型融合方式,它与Stacking的区别在于训练集不是通过K-Fold的CV策略来获得预测值从而生成第二阶段模型的特征,而是建立一个Holdout集,例如10%的训练数据,第二阶段的stacker模型就基于第一阶段模型对这10%训练数据的预测值进行拟合。

    说白了,就是把Stacking流程中的K-Fold CV 改成HoldOut CV。

    以第一层为例,其5折HoldOut交叉验证将如下图③所示:

         需要注意的是,网上很多文章在介绍 Stacking 的时候都用了上面 Blending 的图还强行解释了的,比如③、⑤等。

     Stacking 与 Blending 相比 ,Blending的优势在于:

    1、Blending比较简单,而Stacking相对比较复杂;

    2、能够防止信息泄露:generalizers和stackers使用不同的数据;

    3、不需要和你的队友分享你的随机种子;

    而缺点在于:

    1、只用了整体数据的一部分;

    2、最终模型可能对留出集(holdout set)过拟合;

    3、Stacking多次交叉验证要更加稳健。

    文献②中表示两种技术所得的结果都相差不多,如何选择取决于个人喜好。如果难以抉择的话,可以同时使用两种技术并来个第三层将其结果合并起来。

以上为本人学习的总结,很多内容都未经实际验证,如果发现总结中有错误或与实际表现不符,敬请指正。

【参考文献】

①https://www.kaggle.com/c/otto-group-proct-classification-challenge

②https://mlwave.com/kaggle-ensembling-guide/

③https://zhuanlan.hu.com/p/25836678

④https://blog.csdn.net/Mr_tyting/article/details/72957853

⑤https://blog.csdn.net/data_scientist/article/details/78900265

⑥https://mlwave.com/human-ensemble-learning/

⑦https://blog.csdn.net/sinat_29819401/article/details/71191219

⑧https://blog.csdn.net/zwqjoy/article/details/80431496

⑨http://lib.csdn.net/article/machinelearning/35135
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
苹果电脑电池充不进电苹果电脑充不进去电是怎么回事 苹果电脑不充电没反应苹果电脑充电指示灯不亮充不了电怎么办 狗狗更加忠诚护家、善解人意,养一只宠物陪伴自己,泰迪能长多大... 描写泰迪狗的外形和特点的句子 国外留学有用吗 花钱出国留学有用吗 !这叫什么号 百万医疗赔付后是否可以续保 前一年理赔过医疗险还能续保吗? 医疗住院险理赔后还能购买吗? 损失函数与鲁棒性 朋友送的华为mate20Pro在香港买的,字体能改成中文简体吗 数字式水表怎么看 部分月饼开始在价格上做文章,标价499运费600,怎么看这种变相提价? 继面条、甜奶提价后,水果罐头也涨了,哪些公司将会受益? 得康充电器36V12AH电池组设置参数? 我的电瓶车是36v12ah的电池能不能用48v20ah的充电器 百利源36V12AH充电器充10AH的电池行吗? 保安个人年度工作计划 彩虹怎么不显示IP了?而且经常会出现重启程序? 彩虹显IP信息 彩虹IP显示错误 若想真明白,真要好几年 是哪首歌的歌词? 不知不觉好几年,仿佛刚刚才遇见歌词 即兴发言怎么写 张家港公共自行车下什么app载 公务员拿了住房补贴 还能拿宅基地拆迁款吗? 昌字辈 取名 我是今年刚考上的公务员。上班两个月,家里房物就被征用拆迁,请问我能亨享受房屋安置费吗? 公务员在农村有房的宅基地拆迁时应享受安置用房吗? 摩托车行驶中风门开关是向上还是向下,大冬天发动摩托车,风门开关是向上容易发动还是向下容易发动 英语题不会啊 帮忙指导~! 鼎龙彩粉和弗来斯通碳粉哪个好用 微信上如何查医疗保险缴费情况? 江西考生文科353分想报口腔医学专业哪个学校好些/拜托 成人高考报名条件(医学检验) 仓鼠爱在洗澡砂里睡觉怎么办 微信名女生两个字霸气冷酷 好听的微信昵称女霸气高冷两个字 二个字最吉利最旺财的微信名男 微信名女生冷酷霸气两个字 两个字的冷酷霸气的女生微信名 死面烙饼的做法,死面烙饼怎么做好吃,死面烙饼的家常 的做法,死面烙饼怎么做好吃,死面烙饼的家常做法 加标回收样品牛奶前处理是加标前还是加标后 水质检测有机项目分析中,水样经固相萃取处理后做的加标回收,国标要求回收率范围是多少? 谁能分享下《安娜贝尔2:诞生》资源,最好是高清的 东莞虎门地税三月份扣了两次个人所得税怎样退款 黑头贴怎么去黑头? 买破壁机一般问客服几个问题 水培生菜的种植方法 水培生菜怎么种植 1分米是几米