集成学习之Boosting

浏览: 1352

集成学习通过构建并结合多个学习器来完成学习任务,也被称作多分类器系统、基于委员会的学习(大概是因为它的工作原理与委员会工作机制相似)等。所谓集成算法顾名思义就是先产生一组个体学习器,再用某种策略将这些个体学习器结合起来,个体学习器也可以称为组件学习器。当这些个体学习器为同种类型的,则称它们为同质的,这时的个体学习器还可以称为基学习器;反之则为异质的。

集成学习很多理论都是针对弱学习器进行的,而基学习器有时也被称为弱学习器。虽然如此,在实际应用中,人们更倾向于使用比较强的学习器来集成。

要获得好的集成,个体学习器应该“好而不同”,即个体学习器要有一定的准确性,并且要有多样性。

有式子证明:随着集成中个体分类器数目T的增大,集成的错误率将指数级下滑,最终趋向于零。但是这个结论建立在一定的基础之上:基学习器的误差相互独立。但是这是不可能的。因此,如何产生并结合“好而不同”的个体学习器是集成学习研究的核心。

目前的集成学习方法大致可以分为两大类:个体学习器间存在强依赖关系、必须串行生成的序列化方法:Boosting

                                                                个体学习器间不存在强依赖关系、可同时生成的并行化方法:Bagging

Boosting

Boosting是一种框架算法,拥有一系列的算法,如:AdaBoost,GradientBoosting,LogitBoost等算法。这三种算法的不同之处在于其三要素选取的函数不同(函数模型、目标函数、优化算法)。需要说明的是:比较火的GBDT是以决策树为基学习器的GB算法,因此它属于Boosting,而目前很火的XGBoost扩展和改进了GBDT。

对于Boosting来说,他在样本选择上:每一轮的训练集不变,只是训练集中每个样例在分类器中的权重发生变化,而权值是根据上一轮的分类结果进行调整的。

在样例权重上:会根据错误率不断调整样例的权值,错误率越大则权重越大。

在预测函数上:每个弱分类器都有相应的权重,对于分类误差小的分类器会有更大权重。

在计算方式方面:由于后一个模型的参数需要前一轮模型的结果,各个预测函数只能顺序生成。

最核心的两个问题:

1)每一轮如何改变训练数据的权值或概率分布?

通过提高那些在前一轮被弱分类器分错样例的权值,减小前一轮分队样例的权值,使得分类器对误分的数据有较好的效果。

2)通过什么方式来组合弱分类器?

通过加法模型将弱分类器进行线性组合,比如AdaBoost通过加权多数表决的方式,即增大错误率小的分类器的权值,同时减小错误率较大的分类器的权值。而提升树通过拟合残差的方式逐步减小残差,将每一生成的模型叠加得到最终模型。参考:https://www.cnblogs.com/liuwu265/p/4690486.html

AdaBoost算法有多种推导方式,比较容易理解的是基于“加性模型”,即基学习器线性组合来最小化指数损失函数,换而言之,若指数函数最小化则分类错误率也将最小化。

对无法接受带权样本的基学习算法而言,可以通过重采样法来处理,即在每一轮学习中根据样本分布对训练集重新进行采样,再用重采样而得的样本集对基学习器进行训练,一般来说。这种方法与赋权的方法相比并没有显著的优劣差别,需要注意的是,Boosting算法在训练每一轮都要检查当前生成的基学习器是否比随机猜测的好,一旦条件不满足,则当前基学习器被抛弃,且学习过程停止。这种情况下,初始设置的学习轮数也许还远未达到,可能导致最终集成中只包含很少的基学习器而性能不佳。若采用“重采样法”,则可获得“重启动”机会以避免训练过程中的早停止。简而言之,即在抛弃不满足条件的当前基学习器之后可根据当前分布重新对训练样本进行采样,再基于新的采样结果重新训练出基学习器,从而使学习过程可以持续到T轮完成。

从偏差-方差分解的角度看,Boosting主要关注降低偏差,因此,Boosting能基于泛化性能相当弱的学习器构建出很强的集成。

Boosting算法先写到这里,更多关于Boosting的知识以后再补充。

推荐 0
本文由 韩冰冰 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册