集成学习总结
1.集成学习概述
从下图,我们可以对集成学习的思想做一个概括,对于训练集数据,我们可以训练若干个个体学习器(弱学习器),通过一定的结合策略,最终形成一个强学习器。

也就是说,集成学习由两个主要的问题需要解决,第一是如何得到若干个个体学习器,第二种是如何选择结合策略,将这些个体学习器结合起来。
2.集成学习之个体学习器
个体学习器的分类:
1)第一种是所有的个体学习器都是同一种类(或者说是同质的)。比如都是决策树个体学习器,或者说都是神经网络个体学习器。
2)第二种是所有的个体学习器都不是同一个种类的(或者说是异质的)。比如说对于一个分类问题,对训练集采用支持向量机、逻辑回归、朴素贝叶斯作为个体学习器,再通过某种结合策略组合成最终的分类学习器。
综上所述:
目前来说同质个体学习器的应用是最广泛的,一般我们常说的集成学习的方法都是指同质个体学习器。而同质个体学习器最广泛的是CART决策树和神经网络。
按照个体学习器之间是否存在依赖关系可以分为两类,一类是强依赖关系,即一系列学习器基本都需要串行生成,代表算法是boosting系列算法。第二类是个体学习器之间不存在强依赖关系,一系列个体学习器并行生成,代表算法是随机森林以及bagging系列算法。
3.集成学习之boosting
boosting 原理图:

boosting的工作机制是首先从训练集用初始权重训练出一个个体学习器1,根据弱学习的学习误差率表现来更新训练样本的权重,使得之前弱学习器1学习误差率搞的训练样本点的权重变高,使得这些误差率高得点在后面得弱学习器中得到更高得重视。然后基于调整后的训练集来训练弱学习器2,如此重复进行下去,直到弱学习器的格式达到指定数目T,然后将这些弱学习器通过集合策略进行整合,得到最终的强学习器。
boosting系列算法中最著名的是Adaboost以及提升树(boosting tree)系列算法。提升树系列算法中应用最广泛的是梯度提升树算法(Gradient B oosting Tree)
4.集成学习之bagging
bagging 原理图:

从上图可知,bagging的个体学习器的训练集是通过随机采样得到的。通过T次的随机采样,可以得到T个采样集,对于这T个采样集,我们可以分别独立的训练出T个弱学习器,再对T个弱学习器通过集合策略组合成一个强学习器。
对于这里的随机采样,一般采用的是自助采样法(Bootstrap sample),即使对于m个样本的原始训练集,我们每次先随机采集一个样本放入采样集,接着把样放回,也就是说,这次采集到的样本在下次采集中也有可能被采集到,这样采集m次,最终得到m个样本的采样集,由于是随机采样,这样每次的采样集是和原始训练集不同的,和其他采样集也是不同的这样便得到多个不同的弱学习器。
随机森林是bagging的一个特征进阶版,所谓的特化是因为随机森林的弱学习器都是决策树,所谓的进阶指的是随机森林在bagging的样本随机采样中加入了特征的随机选择,其基本思想没有脱离开bagging的范畴。
5.集成学习结合策略
上面主要在于学习器,现在我们来关注一下集成学习的结合策略。
假设得到T个学习器{h1,h2,h3,...,hT}
5.1平均法
对于数值类的回归预测问题,通常的结合策略是平均法,对于若干个弱学习器的输出进行平均得到最终的预测输出。
最简单的是算术平均,即预测结果为:
H(x) = \frac{1}{T}\sum\limits_{1}^{T}h_i(x)
如果每个个体学习器都有一个权重w,则最终的预测是
H(x) = \sum\limits_{i=1}^{T}w_ih_i(x)
其中wi是个体学习器hi的权重,通常由:
w_i \geq 0 ,;;; \sum\limits_{i=1}^{T}w_i = 1
5.2投票法
对于分问题的预测,通常采用的是投票法,假设预测的类别是:{c1,c2,c3,...,ck},对于任意一个样本x,T个个体学习器的预测结果分别是:{h1(X),h2(X),h3(X),...,hT(x)}。
最简单的 的投票方法是相对多数投票法(即:少数服从多数),也就是在T个个体学习器对样本x的预测结果中,数量最多的类别数作为最终的分类类别数,如果布置一个类被获得最高票数,则随机选取其中一个作为预测结果。
稍微复杂的是绝对多数投票,也就是说票数要过半。即:不光要求票数最多,还要求票数过半数,否则拒绝预测。
更加复杂的是加权投票法,和加权平均法类似,每个弱学习器的分类票书要乘以一个权重,最终将各个类别的加权投票数求和,最大值对应的类别即为预测的最终类被。
5.3学习法
上两节的方法都是对弱学习器的结果做平均或者投票,相对比较简单,但是可能学习误差较大,于是就有了学习法这种方法,对于学习法,代表方法是stacking,当使用stacking的结合策略时, 我们不是对弱学习器的结果做简单的逻辑处理,而是再加上一层学习器,也就是说,我们将训练集弱学习器的学习结果作为输入,将训练集的输出作为输出,重新训练一个学习器来得到最终结果。
在这种情况下,我们将弱学习器称为初级学习器,将用于结合的学习器称为次级学习器。对于测试集,我们首先用初级学习器预测一次,得到次级学习器的输入样本,再用次级学习器预测一次,得到最终的预测结果。
参考资料
1、刘建平老师博客:《集成学习原理小结》 https://www.cnblogs.com/pinard/p/6131423.html
2、西瓜书的集成学习章节

浙公网安备 33010602011771号