Boost和bagging算法

无意间开启了xgboost,为了弄清楚它的原理,只能往下挖,随着xgboost->gbdt->boost来到基本的boost算法,同时也遇见了Boost的伙伴Bagging。接下来,稍微看看他们吧。

学习Bagging和Boost首先需要了解两个名词“弱分类器”和“强分类器”。

“弱分类器”的分类能力不强,但它又比随机选的效果稍微好点,类似于“臭皮匠”。

“强分类器”具有很强的分类能力,也就是把特征扔给它,他能分的比较准确,算是“诸葛亮”一类的。

如果直接可以建立一个强分类器,那弱分类器实际上就是多余的,但是,这世上“绝顶聪明的诸葛亮”少之又少,反而,在某方面有才华的人很多。于是,Boost和Bagging都选择了用三个臭皮匠去顶诸葛亮。

实际上,在深度学习大行其道的今天,分类器的分类能力基本都比较好,但通常也会“强强联手”组成一个更强的决策系统。


Boost和Bagging都是构建多个弱学习算法,形成多个弱分类器,得到多种比较粗糙的分类规则,然后将这些弱分类规则组织成强分类规则。

1. 提升算法Boost

boost通常采用改变训练数据的概率分布,针对不同的训练数据分布调用弱学习算法学习一组弱分类器。在多次迭代的过程中,当前次迭代所用的训练数据的概率分布会依据上一次迭代的结果而调整。也就是说训练数据的各样本是有权重的,这个权重本身也会随着迭代而调整。如下图,Dm为训练数据集的概率分布,第一次迭代,基本分类器C1的分类误差用于调整D2,第二次迭代,基本分类器C2用于迭代D3, ...。


不同分布的训练数据进入不同学习法则后,得到的各基本分类器通常经过线性组合,形成强分类器。例如,像Adaboost和xgboost,最后的强分类器都是弱分类器的加性组合。


从上面的结构图可以看出,很明确的可优化点有两点:训练数据集的分布、各基本分类器在线性组合中的权重w_m。对于训练数据集的分布,通常,被上一次分类错误的样本的权重会被调大,被正确分类的会被调小。基本分类器的误差越大,其权重越小,反之越大。


2. Bagging算法

Bagging直译为“增强聚合”。它的方式是训练几个分类器,然后让这几个分类器的输出当做分类投票,选择票数最多的那个输出作为最后的输出。感觉起来,这就是大家常用的投票方式。Dropout也算是一种Bagging学习。

Bagging的特点:

  A. 对每个分类器,输入数据都是从原始训练数据中可重复的采样, 每个分类器的输入服从相同的分布,且各输入之间相互独立。而Boost中,各训练数据的分布不独立,每个分类器的输入样本之间也不独立。

B. 各分类器可以采用相同算法,不同的超参数;也可采用不同算法; Boost基本采用相同的算法。

C. 每个分类器的输出没有权重之分,都是平等的。


Boost和Bagging都称为集成方法。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章