bagging算法_集成学习算法:Boosting、Bagging | 随机森林、Stacking

集成学习,将多个学习器结合并构建出更优越的泛化性能。单个分类器的分类效果不好,那么我们就把这些分类器结合起来用提升性能。

集成学习,又被成为多分类器系统。当系统中都是同种类型的学习器,我们就称为同质(homogeneous)的,同质系统中的学习算法称为基学习算法;当系统中存在不同类型的学习器,我们就称为异质的(heterogeneous)。

理论上,我们期望通过结合多个弱学习器得到强学习器。但是在实践中需要考虑到开销,以尽可能简单的结构获得期望的泛化效果。同时,要使得个体学习器有一定的准确性,并且多个学习器之间要有差异有多样性。

集成学习方法可以分为两大类,一种是串行组织多个学习器的序列化方法,代表算法是Boosting;另一种是并行组织多个学习器的并行化方法,代表算法有Bagging和随机森林。


*************************************************************************

Boosting算法

Boosting的模型可以理解为,

v2-0b63d6c009ebef80dc98758d98d1f649_b.jpg
图片来源:参考网页附于文末

v2-d0f35c9dc8d8d0939a945d109cba96b9_b.jpg
图片来源:参考网页附于文末

对于原始训练集数据

,通常先对样本初始化权值分布,得到训练集
,这样通过带权训练集训练出第一个弱学习器模型;然后根据一定的规则更新样本的权值分布,得到新的训练集
,再通过训练集
训练出第二个弱学习器模型,重复以上过程得到若干个若学习器,最后我们通过线性组合这些弱学习器得到强学习器。

Boosting算法重点关注的是降低偏差。在整个训练过程中,对于分类错误的样本,给它赋予更大的关注度(权值),再通过训练下一个学习器来降低分类误差。

Boosting算法里常用的是AdaBoost,Gradient Boosting(代表算法GBDT),提升树算法,XGBoost等等。

AdaBoost算法:

  • 必须使用同一种学习分类器
  • 把所有弱分类器联合起来,对于分类效果好的分类器具有较大的权重,分类效果差的分类器赋予较小的权重;
  • 样本权重的更新规则:对于分类错误的样本,加大其对应的权重,对于分类正确的样本,降低其权重,误分类的样本在下一轮训练中收到更大关注
  • 损失函数基于指数型损失函数

算法流程:

v2-1fd8e58f64f51099bdeafaadc1cbf70f_b.jpg
来源:见参考

其中上图8.5式子那里做了系数归一化,加权方式分配的方式,值得参考;最后8.7式是取符号函数。

提升树算法:

以分类树或者提升树为基学习器的Boosting方法,对于分类问题就使用二叉分类树,对回归问题就使用分类树,提升树模型可以表示为决策树的加法模型(不带权,简单叠加)。

使用的是平方误差损失函数,通过逼近残差的方法来实现。(对于第N次训练得到的学习器

,整体模型的迭代式可以写作:
,如果把真实值与上一次迭代的预测值之差
称为残差,那么这个迭代过程就是用
去逼近残差,计算最小均方误差函数更新样本)

GBDT算法:

GBDT是多颗回归树的预测值叠加。是针对使用一般损失函数的优化算法,迭代就沿着损失函数梯度下降的方向进行。

XGBoost:

它是Gradient Boosting的一种高效系统实现。对GBDT进一步的改进,包括对代价函数进行了二阶泰勒展开,在代价函数里加入了正则项,正则项用来惩罚复杂的模型,借鉴了随机森林的列采样方法,支持并行计算等。目前来说,效果比较好,速度快。

XGBoost​www.jiqizhixin.com
v2-6a12589e1606c5cd8fa711e22b5edb8c_180x120.jpg
机器学习算法中 GBDT 和 XGBOOST 的区别有哪些?​www.zhihu.com
75894665f9fc8cf514a4e95184138ff6_180x120.jpg

LightGBM是一个实现GBDT算法的分布式高效框架。

机器学习算法之LightGBM - 标点符​www.biaodianfu.com
v2-29a75f62677388f3a785b353264896a1_180x120.jpg

CatBoost(categorical boosting)是一种能够很好地处理类别型特征的梯度提升算法库。该库中的学习算法基于GPU实现,打分算法基于CPU实现。

Dukey:CatBoost原理及实践​zhuanlan.zhihu.com
v2-9caba7b451eabdf658b72c8bc843d784_180x120.jpg

*************************************************************************

Bagging:

Bagging是并行式集成学习的代表。基本流程:从样本集中采样出若干个训练样本的采样集,基于这个采样集训练出一个基学习器,重复多次,再将训练出的多个学习器结合。在对预测进行输出的时候,对分类任务进行简单投票,对回归任务进行简单平均法,也可以进一步考虑投票的置信度然后做出输出。

1.有放回的抽取样本K次,每次训练一个子模型 ; 2. 模型融合,投票/平均

相对Boosting会更加加单一些

v2-3c4d08f1e4197fcb6919d3fa43146e01_b.jpg
图片来源:文末参考网站

v2-32aaf7ac2f42543e719dbe72f66a0a18_b.jpg
图片来源:文末参考网站
当我们在不同数据集上面进行训练模型时,Bagging 通过减少误差的方差来降低误差。换句话说,bagging 模型能降低过拟合。bagging 能起到这种效果是因为:由于各个数据集是不同的,所以在投票的环节他们的误差被相互抵消了。另外,在一些采样数据中,异常值可能就直接被忽略了。

要注意到从样本集中随机采样,大约有37%的数据不会被采到(Out of Bag),可以作为测试集合

随机森林

是Bagging的一个扩展变体,Random Forest。随机森林以决策树为基学习器,构建Bagging的结构的,在训练过程引入随机因素。比如说,决策树选择节点属性划分样本是根据当前所有属性中选择最优属性。而RF中,先从所有属性集合中选出若干个属性的子集合,然后从该子集合中选出最优属性作为决策树当前节点的划分属性。如果随机选择的属性子集大小为1,则为随机选择所有属性;如果子集大小等于所有属性数目,则随机森林和传统决策树相同。一般推荐 子集个数=

所有属性个数;

随机森林简单容易实现,计算开销比较小。随机森林的训练,不仅来自样本扰动,还有属性扰动,集成后的泛化效果更好。

随机深林的收敛性与Bagging相似,随机深林的起始性能相对较差,特别是仅含有一个基学习器的时候,随着学习器数目的增加,随机森林通常会收敛到更低的泛化误差。
实战:用Python实现随机森林​baijiahao.baidu.com
v2-88fd96e72fd3e4986962350029305209_ipico.jpg

the-learning-machine/ML-algorithms-python

实战:用Python实现随机森林​baijiahao.baidu.com
v2-88fd96e72fd3e4986962350029305209_ipico.jpg
the-learning-machine/ML-algorithms-python​github.com
v2-23582ae8c441e00a93783e0d9679a851_ipico.jpg

我看到有人推荐这篇文章,Cornell的作者,找时间会写个它的review

v2-aa46b1878c2b6963daf8bdd334eaf01c_b.jpg

*************************************************************************

Stacking:

stacking算法就像它的名字一样,算法结构上和数据结构stack很像。stacking首先从初始数据集中训练出多个学习器

,称为初级学习器,而每个初级学习器的分类输出作为次级学习器的输入,
,可以理解为学习器嵌套。

v2-a9bda266559976d106d614441d18aae0_b.jpg

Stacking类似神经网络,是一种表示学习。一般Stacking是两层结构,第一层可以认为是对原始数据提取特征,第二层可以认为是对特征进行的表示学习过程。结构上还是很好理解的。

微调:「Stacking」与「神经网络」​zhuanlan.zhihu.com
v2-f6c64d85d044dd57c2772bb99538e14f_180x120.jpg
Sheldon Zhao:【干货】比赛后期大招之stacking技术分享​zhuanlan.zhihu.com

下次把这篇文章阅读总结一下:

v2-9923386ddf5044be04e5ceec4988d4f3_b.jpg

总结:

  • 集成学习方法就是组织多个学习器并设计整个模型的架构,通过这种方式来提高泛化能力,根据以各个学习器之间的组织方式可以分为三类,串行的Boosting,并行的Bagging,以及嵌套式/层级结构的Stacking
  • 每种方法的都有各种延伸拓展,变形式较多,优化手段:使用不同loss function;学习器的选择;泰勒展开高阶小量,求梯度;正则化惩罚项
  • 多学习器输出的单一结果的方法有:投票、加权平均、Learning Machine Learning多学习器输出的单一结果的方法有:投票、加权平均

参考:

机器学习 (豆瓣)​book.douban.com
v2-24bbe9c8b38d5dfc3a49b1aa9a0c4092_ipico.jpg
机器学习 -- Boosting算法​blog.csdn.net
v2-afcb03e558489217af9d9ecfef9fc6db_180x120.jpg
机器学习算法之Boosting - 标点符​www.biaodianfu.com
v2-4e02b27cd650724de8c21845b11ee1b1_180x120.jpg
boosting系列算法_网络_jingshuiliushen_zj的博客-CSDN博客​blog.csdn.net
v2-dc6d2d08b55c05da82fb2f3ca7865944_ipico.jpg
(二)bagging 方法_JavaScript_CoderPai的博客-CSDN博客​blog.csdn.net
v2-da4d28cf50223e5182ace7f61b5bfd0d_180x120.jpg
https://mlwave.com/​mlwave.com
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值