机器学习日常17:Bagging,Boosting(包括Adaboost,gradient boosting)简单小结

集成学习通过构建并结合多个学习器来完成学习任务。通俗来讲就是用多个分类器或者线性模型来结合成一个黑盒子,这个黑盒子要比单一学习器有更显著优越的性能(比如精度,泛化性能)。

在这里引用西瓜书中的描述:

根据个体学习器的生成方式,目前集成学习方法大致分成两大类,1,个体学习器间存在强依赖关系,必须用串行生成的序列化方法,这里指用Boosting   2,个体学习器间不存在强依赖关系,可同时生成的并行化方法,这里指Bagging,或者random forest。

Bagging实际上基于自助采样法,也就是有放回的随机采样,使抽取的样本数目同原来的样本数目一样。比如有m个样本,我们随机有放回采样,采集出 T个含m个样本的采样集。然后基于这 T个采样集,每个采样集学习出一个学习器,然后将这 T个学习器结合。就构成了我们的Bagging。预测输出时,可以采用简单投票法(对于分类任务)或者简单平均法(对于回归任务)。

关于Bagging,训练集中大约有63.2%的样本出现在采样集中,所以那剩下的部分,可以进行“包外估计”。另外,Bagging主要关注降低模型方差。

Random forest(随机森林)算是Bagging上的扩展变体。在Bagging中,我们把基学习器定义成决策树,另外在决策树的训练过程中引入随机属性选择(这里是随机选择一部分属性(特征),随机选择一部分样本)。就变成了random forest。

随机森林简单易于实现,随着学习器数目的增加,能收敛到更低的泛化误差。

Boosting的工作机制如下:

首先从初始训练集训练处一个基学习器,再根据基学习器的表现对训练样本分布进行调整,使得先前基学习器做错的训练样本在后续受到更多关注,然后基于调整后的样本分布来训练下一个基学习器,如此重复,至学习器数目到达指定T,最终将T个基学习器进行加权结合。

 

 

以下伪代码例子摘自知乎上某大神回答:


链接:https://www.zhihu.com/question/54332085/answer/296456299

 

对于Adaboost:

1,初始化训练数据的权值分布

D1= (w11, ..., w1i, ..., w1N),其中w1i= 1/N,i=1, 2, ..., N

2,对m=1, 2,..., M

a,使用具有权值分布Dm的训练数据集学习,得到基本分类器

Gm(x): X -> {-1, +1}

b,计算Gm(x)在训练数据集上的分类误差率

c,计算Gm(x)的系数

这里的对数是自然对数。

d,更新训练数据集的权值分布

这里,Zm是规范化因子

它使Dm+1成为一个概率分布。

3,得到最终分类器

公式推导可以参见西瓜书,有很多种推导方法,西瓜书中用“线性组合来最小化指数损失函数”方法。

上面是具体算法,下面是例子分析(来自《统计学习方法》--李航)

对于Gradient Boost

Gradient Boosting是一种实现Boosting的方法,它的主要思想是,每一次建立模型,是在之前建立模型损失函数的梯度下降方向。损失函数描述的是模型的不靠谱程度,损失函数越大,说明模型越容易出错。如果我们的模型能够让损失函数持续的下降,说明我们的模型在不停的改进,而最好的方式就是让损失函数在其梯度的方向下降。

这里损失函数可以是logistics,huber,甚至是L2损失。

其伪代码如下所示:

 
rm,i 为每次的残差(求梯度)     为学习器    n在这里为步长    大致过程对应理论过程。
 
 




 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值