1、集成学习概述
集成学习是一种机器学习范式,它通过训练若干个弱学习器,然后使用一定的结合策略,将这些弱学习器组合起来,最终形成强学习器,获得更好的性能。
也就是说,集成学习中有两个主要的问题需要解决:第一个是如何得到若干个弱学习器,第二是如何选择一个结合策略,将这些弱学习器组合成一个强学习器。
2、集成学习之弱学习器(基本模型)
上一节我们提到,集成学习方法的第一个问题就是如何得到若干个弱学习器,这里我们有两种选择。
第一种是所有的弱学习器都是同一种,或者说是同质的,比如都是决策树弱学习器,或者都是神经网络弱学习器;
另一种是所有的弱学习器不全是同一种,或者说是异质的,比如有一个分类任务,我们在训练集上训练一个支持向量机弱学习器,一个逻辑回归弱学习器和一个朴素贝叶斯弱学习器,再通过某种结合策略确定最终的分类强学习器。
目前来说,同质弱学习器的应用是最广泛的,一般我们常说的集成学习方法都是指同质弱学习器。而同质弱学习器中使用最多的模型是CART决策树和神经网络。同质弱学习器中的弱学习器按照是否存在依赖关系划分为两类,第一类是弱学习器之间存在强依赖关系,一系列弱学习器基本都需要串行生成,代表算法是boosting系列算法,第二类是弱学习器之间不存在依赖关系,一系列弱学习可以并行生成。代表算法是bagging系列算法。
另外注意,我们对弱学习器的选择应该与我们聚合这些模型的方式相一致。如果我们选择的是具有高偏差低方差的弱学习器,那么我们应该倾向于选择一种减小偏差的聚合方式,比如boosting方法;而如果我们选择的是低偏差高方差的弱学习器,那么应该倾向于选择一种减小方差的聚合方式,比如bagging方法;
3、集成学习之常用框架(元算法)
组合弱学习器的元算法主要有三种:
- boosting:该方法通常考虑的是同质分类器,它以一种高度自适应的方法顺序地学习这些弱学习器,每个弱学习器都依赖前面的弱学习器,最后按照某种确定性的策略将它们组合起来。
- bagging:该方法通常考虑的是同质分类器,相互独立并行地学习这些弱学习器,并按照某种确定性的平均过程将它们组合起来。
- stacking:该方法通常考虑的是异质分类器,它并行地学习弱分类器,并训练一个元模型将它们组合起来,以不同弱学习器的输出结果作为元模型的输入,得到最终的预测结果。
接下来将更为详细地这三种方法:
(1)boosting算法
boosting算法的基本原理可以采用下图概述:
从图中可以看出,boosting算法的工作机制是先对训练集中的样本赋初始权重,然后使用带初始权重的样本训练一个弱学习器1,根据弱学习器1的学习误差率表现来调整样本的权重,使得弱学习器1学习误差率高的样本的权重变高,从而使得这些误差率高的样本在后面的弱学习器2中受到更多的重视。然后基于调整权重后的训练集训练弱学习器2。如此重复进行,直到弱学习器的数量达到指定的数量T,将这T个弱学习器通过结合策略进行组合,得到最终的强学习器。
boosting系列算法主要有自适应提升算法adaboost和梯度提升算法gradient boosting,梯度提升算法又包括梯度提升树(GBDT)和Xgboost算法。
(2)bagging算法
bagging算法和boosting算法不同,它的弱学习器之间没有依赖关系,所以可以独立并行的生成,其原理如下图所示:
从上图可以看出,bagging算法的弱学习器的训练样本是通过随机采样得到的,通过T次采样,可以得到T个采样集,然后在每个采样集上训练一个弱学习器,最后通过某种结合策略将这些弱学习器组合起来,形成强学习器。
这里的随机采样一般使用的是自主采样(Boostrap Sampling),即每次从原始训练集中随机选择一个样本,将该样本放入采样集,接着把该样本放回,也就是说下次采样时仍然有可能采到该样本,这样采集m次,可以得到有m个样本的采样集,由于是随机采样,所以采样集和原始数据集不同,和其他采样集也是不同的,这样在采样集上进行训练就可以得到不同的弱学习器。
随机森林是bagging的一个特化进阶版,所谓的特化是因为随机森林的弱学习器都是决策树。所谓的进阶是随机森林在bagging的样本随机采样基础上,又加上了特征的随机选择,其基本思想没有脱离bagging的范畴。
(3)stacking算法
正如上文已经提到的,stacking 的概念是学习几个不同的弱学习器,并通过训练一个元模型来组合它们,然后基于这些弱模型返回的多个预测结果输出最终的预测结果。
因此,为了构建 stacking 模型,我们需要定义两个东西:想要拟合的 L 个学习器以及组合它们的元模型。
例如,对于分类问题来说,我们可以选择 KNN 分类器、logistic 回归和SVM 作为弱学习器,并决定学习神经网络作为元模型。然后,神经网络将会把三个弱学习器的输出作为输入,并返回基于该输入的最终预测。
4、集成学习之结合策略
在上面几节里面我们主要关注于学习器,提到了学习器的结合策略但没有细讲,本节就对集成学习之结合策略做一个总结。我们假定我得到的TTT个弱学习器是{h1,h2,...,hT}\{h_1,h_2,...,h_T\}{h1,h2,...,hT}。
(1)回归任务的结合策略
对于数值类的回归预测问题,通常使用的结合策略是平均法,也就是说,对于若干个弱学习器的输出进行平均得到最终的预测输出。
最简单的平均是算术平均,也就是说最终预测是:
H(x)=1T∑1Thi(x)H(x) = \frac{1}{T}\sum\limits_{1}^{T}h_i(x)H(x)=T11∑Thi(x)
如果每个弱学习器有一个权重www,则变成加权平均,最终预测是
H(x)=∑i=1Twihi(x)H(x) = \sum\limits_{i=1}^{T}w_ih_i(x)H(x)=i=1∑Twihi(x)
其中wiw_iwi是个体学习器hih_ihi的权重,通常有
wi≥0,      ∑i=1Twi=1w_i \geq 0 ,\;\;\; \sum\limits_{i=1}^{T}w_i = 1wi≥0,i=1∑Twi=1
(2)分类任务的结合策略
对于分类问题的预测,我们通常使用的是投票法。假设我们的预测类别是c1,c2,...cK{c1,c2,...cK}c1,c2,...cK,对于任意一个预测样本x,我们的T个弱学习器的预测结果分别是(h1(x),h2(x)...hT(x))(h1(x),h2(x)...hT(x))(h1(x),h2(x)...hT(x))。
最简单的投票法是相对多数投票法,也就是我们常说的少数服从多数,也就是TTT个弱学习器的对样本x的预测结果中,数量最多的类别cicici为最终的分类类别。如果不止一个类别获得最高票,则随机选择一个做最终类别。
稍微复杂的投票法是绝对多数投票法,也就是我们常说的要票过半数。在相对多数投票法的基础上,不光要求获得最高票,还要求票过半数。否则会拒绝预测。
更加复杂的是加权投票法,和加权平均法一样,每个弱学习器的票的权重不再是1,而是一个它的权重,最终将各个类的加权票数求和,最大的值对应的类别为最终类别。