模型融合学习以及应用

模型融合背景

应用场景

精度要求高,时效性低,可以提升准确率,以及一些比赛,模型融合是最重要的方式和方法。(注意:后期大佬们模型融合会得到非常好得效果)

分类

举个例子,就相当于对于一个二分类来说,主要有三个模型,通过三个最基础的模型来进行投片以此来实现最终的分类的结果。

回归

对于回归,简答的思路就是平均,对于改进版本是加权平均,例如三个模型,A,B,C那么对模型进行排名,那么A占的权重是3/6,2/6,1/6。
对于Bagging和Boosting方法都是通过这种弱分类的方法来实现。

Bagging

Bagging采用有放回的方式进行抽样,利用抽样的样本对模型进行训练,重复多次然后进行融合。
大概可以分为这样的两类,
1,重负K次
有放回的重复抽样建模,并得到子模型
2,模型融合
分类问题 回归问题
Bagging算法不用我们自己实现,随机森林就是基于Bagging算法的一个典型例子,采用的基分类器是决策树。R和python都集成好了,直接调用。

Boosting

bagging算法可以进行并行处理,而且Boosting的思想是一种迭代的方法,并且每次都会更加关注分类错误的案例结果,并且将错误的分类增加相应的权重,并且下一轮的迭代希望能够将弱分类进行权值相加,这里引用(加州大学欧文分校Alex Ihler教授)的PPT
在这里插入图片描述
在这里插入图片描述
基于boosting的思想还有Adaboost以及GBDT,这样在python也已经集成好了,可以直接调用。可以思考一下:随机森林、Adaboost、GBDT、XGBoost的区别是什么?

stacking

stacking的方法要比boosting的方法要简单一些。
例子:从简单的二级stacking说起,如果有三个模型,M1,M2,M3
对于M1来说通过对train数据集进行训练,并且利用test进行测试,那么有P1和T1,同样对于M2和M3有相同的结构。
(…P1…)T,(…T1…)T
(…P2…)T,(…T2…)T
(…P3…)T,(…T3…)T
将其进行合并则有
在这里插入图片描述
3. 再用第二层的模型M4训练train2,预测test2,得到最终的标签列。
在这里插入图片描述
Stacking本质上就是这么直接的思路,但是存在问题,问题在于P1的得到是有问题的,用整个训练集训练的模型反过来去预测训练集的标签,毫无疑问过拟合是非常非常严重的,因此现在的问题变成了如何在解决过拟合的前提下得到P1、P2、P3,这就变成了熟悉的节奏——K折交叉验证。我们以2折交叉验证得到P1为例,假设训练集为4行3列。
在这里插入图片描述
在这里插入图片描述
对于测试集T1的得到,有两种方法。注意到刚刚是2折交叉验证,M1相当于训练了2次,所以一种方法是每一次训练M1,可以直接对整个test进行预测,这样2折交叉验证后测试集相当于预测了2次,然后对这两列求平均得到T1。
或者直接对测试集只用M1预测一次直接得到T1。
P1、T1得到之后,P2、T2、P3、T3也就是同样的方法。理解了2折交叉验证,对于K折的情况也就理解也就非常顺利了。所以最终的代码是两层循环,第一层循环控制基模型的数目,每一个基模型要这样去得到P1,T1,第二层循环控制的是交叉验证的次数K,对每一个基模型,会训练K次最后拼接得到P1,取平均得到T1。这下再把@Wille博文中的那张图片放出来就很容易看懂了。
在这里插入图片描述
从初始样本中,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值