Boosting和Bagging

集成学习(ensemble learning)经过构建并结合多个学习器来完成学习任务。集成学习经过将多个学习器进行结合,常能够得到比单一学习器显著优越的泛化性能。这对“弱学习器”尤其明显,所以集成学习的不少理论研究都是针对弱学习器进行的。html

要得到好的集成,个体学习器应该“好而不一样”,即个体学习器要有必定的“准确性”,即学习器不能太坏,而且要有“多样性”,即学习器之间有差别。算法

根据个体学习器的生成方式,目前的集成学习方法大体能够分为两大类,即个体学习器间存在强依赖关系,必须串行生成的序列化方法,以及个体学习器间不存在强依赖关系,可同时生成的并行化方法,前者的表明是boosting,后者的表明是Bagging和随机森林。网络

1. Boosting

Boosting是一族可将弱学习器提高为强学习器的算法。这族算法的工做机制相似:先从初始训练集训练出一个基学习器,再根据基学习器的表现对训练数据样本分布进行调整,似的先前基学习器作错的训练样本在后续受到更多的关注,而后基于调整后的样本分布来训练下一个基学习器;如此重复进行,直至基学习器数目达到事先指定的值T,最终将这T个基学习器进行加权结合。函数

Boosting算法最著名的表明是AdaBoost,其能够经过“加性模型”(additive model)来推导获得,即基学习器的线性组合为:性能

来最小化指数损失函数(exponential loss function):学习

若H(x)能令指数损失函数最小化,则考虑用损失函数对H(x)求偏导:优化

这意味着sign(H(x))达到了贝叶斯最优错误率。换言之,若指数损失函数最小化,则分类错误率也将最小化;这说明指数损失函数是分类任务本来0/1损失函数的一致的替代损失函数。因为这个替代函数有更好的数学性质,例如它是连续可微函数,所以咱们用它来替代0/1损失函数做为优化目标。htm

在AdaBoost算法中,第一个基分类器是经过直接将基学习器用于初始数据分布而得;此后迭代地生成下一个基分类器以及其对应的加权权重分。当基分类器基于当前的数据分布获得后,该基分类器的权重应使得其最小化指数损失函数:blog

AdaBoost算法在得到 Ht-1后样本分布将进行调整,使得下一轮的基学习器ht能纠正Ht-1的一些错误。理想状况下能纠正所有错误,即最小化:get

因而可知,理想的ht将在分布Dt下最小化分类偏差。所以,弱分类器将基于分布Dt来训练,且针对Dt的分类偏差应小于0.5.这在必定程度上相似“残差逼近”的思想。考虑Dt和Dt+1的关系,有:

因而,咱们能够从基于“加性模型”和优化”指数损失函数“的角度推导出AdaBoost算法:

 

Boosting算法要求基学习器能对特定数据分布进行学习,这能够经过”重赋权法“或者”重采样法“来处理。

从误差-方差分解的角度(http://www.cnblogs.com/bentuwuying/p/6654536.html)来看,Boosting主要关注下降误差,所以Boosting能基于泛化性能至关弱的学习器构建出很强的集成。

 

2. Bagging与随机森林

欲获得泛化性能强的集成,集成中的个体学习器应尽量相互独立;虽然”独立“在现实任务中没法作到,但能够设法使基学习器尽量具备较大的差别。给定一个训练数据集,一种可能的作法就是对训练样本进行采样,产生出若干个不一样的子集,再从每一个子集中训练出一个基学习器。因为训练数据的不一样,咱们得到的基学习器可望具备较大的差别。然而,为得到较好的集成,咱们同时还但愿个体学习器不能太差。若是采样的每一个子集都彻底不一样,则每一个学习器只用到了一小部分训练数据,甚至不足以进行有效学习,这显然没法保证产生出较好的基学习器。为解决这个问题,咱们能够考虑使用互相有交集的采样子集。这就是Bagging的思想。

从误差-方差分解的角度看,Bagging主要关注的是下降方差,所以它在不剪枝决策树,神经网络等易受样本扰动的学习器上效果更为明显。

随机森林(RF)是Bagging的一个扩展变体。RF在以决策树为基学习器构建Bagging集成的基础上,进一步在决策树的训练过程当中引入随机属性选择。在RF中,对基决策树的每一个结点,先从该节点的属性集合中随机选择一个包含k个属性的子集,而后再从这个子集中选择一个最优属性用于划分。通常状况下,推荐k=log2d,d是全部的属性集合。

随机森林中的基学习器的多样性不只来自于样本扰动,还来自于属性扰动,这就使得最终集成的泛化性能可经过个体学习器之间差别度的增长而进一步提高。

 

3. 总结

学习器结合可能会从三方面带来好处。

1. 从统计的方面来看,因为学习任务的假设空间每每很大,可能有多个假设在训练集上达到同等性能,此时若使用单学习器可能因误选而致使泛化性能不佳,结合多个学习器能够减少这个风险。

2. 从计算的方面来看,学习算法每每会陷入局部极小,有的局部极小点所对应的泛化性能可能很糟糕,而经过屡次运行以后进行结合,可下降陷入糟糕局部极小点的风险。

3. 从表示的方面来看,某些学习任务的真实假设可能不在当前学习算法所考虑的假设空间中,此时若使用单学习器确定无效,而经过结合多个学习器,因为相应的假设空间有所扩大,有可能学得更好的近似。

相关文章
相关标签/搜索