集成学习

Bagging


一个复杂的模型可能会导致:高方差,怎么办?

多找几个这样的模型,组合取平均,这样结果就会好很多

放回式抽样,这样可以获得几笔不同的数据集:DataSet->n*DataSet

使用这几笔数据训练不同的分类器
这里写图片描述
在测试集中,再使用上述几个分类器,投票(分类)/ 取平均(回归)
这里写图片描述

对Decision Tree使用Bagging------>Random Forest

但是,如果仅仅训练集resample是不够的

还要:决策树划分节点的时候,某些节点只能使用部分特征(限制某些feature不能用)

最后,Out-of-Bag Validation for bagging(oob袋外验证,即一直没用被采样到的数据,拿来作为交叉验证)

OOB
如下图,O表示使用,X表示未使用
这里写图片描述
我们可以使用f2和f3组合作为随机森林,然后使用x3作为测试集(f2和f3都没使用x3)
这里写图片描述


Boosting


  • Bagging是用在很复杂(很强,越复杂越强嘛)的模型上(老大妈考虑太周到了,想办法让她不要太关注细枝末节),主要是想降低Variance(方差),避免过拟合

  • Bagging主要技巧:打散数据集,有放回的采样

  • Boosting是用在很弱的模型上的(能力互补的菜鸡分工合作),主要是想降低Bias(偏差)

  • Boosting主要技巧:对不能正确分类的数据集重点关注,加大权重

大致流程:

获取第一个分类器f1
.
寻找能辅助(互补)f1的分类器f2 (跟f1差不多的话就不行。不过怎么找?)
.
反复上述
.
组合所有分类器(注意顺序)

如果获取不同的分类器?

  1. 方法一:还是放回式采样
  2. 方法二:给每一笔数据设置不同的权重,构成不同的数据集。之后再Loss损失函数中反应出权重即可。
    这里写图片描述

Adaboost

在训练集X1上获取了分类器f1,假设loss=0.25

改变权重获取训练集X2(X1变来的),使得f1的loss=0.5( 我们拿着放大镜看f1的弊端 [分类错误的数据加大权重,分类对的减小],从而我们可以找到f2来修复。)
这里写图片描述

  1. 第一次给f1出的是正常的卷子
  2. 第二次给f1出的是**“会的都不考,考的都不会”**的那种卷子,f1就蒙了。不过蒙了好啊,说明老师找到f1不会的东西了。怎么办呢?我们就去找f2同学,让f2来做这套卷子。新的卷子,f2就做的比f1好多了。
  3. f2做完了这第二套卷子,也有不会的啊。老师就又给f2出了你f2 **“会的都不考,考的都不会”**的卷子,这下f2蒙了,于是f3登场…
  4. 就这样,找来了越来越多的同学,题目再难也都能有人会做了

而数学上的重点就是要找到上图√3(我们把它记为d),来使得f2更好,计算公式: d=√[ (1-loss) / loss ]
这里写图片描述

Gradient Boosting

回过来思考Adaboost,就是不断寻找 小分类器f(t) 来完善 最终的分类器g(t)
这里写图片描述
这里写图片描述

我们在寻找 f(t) 的时候,究竟是如何判断它是我们想要的呢?
答:Loss函数

Loss必然与g(t)产生联系:loss(g(t))

有联系,那就好办了–>梯度下降:
这里写图片描述

一看,什么鬼?

其实,跟之前是差不多的:
这里写图片描述

后面通过梯度求得的其实就是理想的新分类器

Stacking

至于stacking,我的感觉就是Bagging参考了boosting之后,对原本的投票(取平均)机制进行了更新(主要是添加权重)

这里写图片描述

有了数据X,有了4个模型(小明、老王、老李、小毛),但是不知道这四个模型哪个好哪个辣鸡,所以干脆针对它们的输出Y再来一次分类器(Final Classifier),并进行训练。

于是乎,我们就能很好地利用原有的4个模型了!-

再来看看最常见的stacking图:
这里写图片描述

给了训练集(X, Y),通过交叉验证的方式获得(X, Y’) - - - - - - - 多了一撇
每个模型都获得一个Y’
再进行第二次的分类器训练(Final Classifier)—>获得模型权重
最终,组合集成–>获得最终模型
PS:上图绿色主要是保证数据集与模型的对应(应该是的…)

本文主要参考台湾大学李宏毅ML课程,加之自己的理解所写

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值