一、集成学习之 Boosting
Boosting 是一族可将弱学习器提升为强学习器的算法。
Boosting的算法原理我们可以用一张图做一个概括如下:
从上图中可以看出,Boosting算法的工作机制是首先从训练集用初始权重训练出一个弱学习器1,根据弱学习的学习误差率表现来更新训练样本的权重,让之前弱学习器1学习误差率高的训练样本点的权重变高,使得这些误差率高的点在后面的弱学习器2中得到更多的重视。
然后基于调整权重后的训练集来训练弱学习器2,如此重复进行,直到弱学习器数达到事先指定的数目T,最终将这T个弱学习器通过集合策略进行整合,得到最终的强学习器。
Boosting系列算法里最著名算法主要有AdaBoost算法和提升树(boosting tree)系列算法。提升树系列算法里应用最广泛的是梯度提升树(Gradient Boosting Tree)。
二、机器学习之 Bagging
Bagging是并行式集成学习方法最著名的代表
我们可以用一张图做一个概括如下:
从上图可以看出,Bagging的个体弱学习器的训练集是通过随机采样得到的。通过T次的随机采样,我们就可以得到T个采样集,对于这T个采样集,我们可以分别独立的训练出T个弱学习器,再对这T个弱学习器通过集合策略来得到最终的强学习器。
这里的随机采样一般采用的是自助采样法(Bootstrap sampling),即对于m个样本的原始训练集,我们每次先随机采集一个样本放入采样集,接着把该样本放回,也就是说下次采样时该样本仍有可能被采集到,这样采集m次,最终可以得到m个样本的采样集,由于是随机采样,这样每次的采样集是和原始训练集不同的,和其他采样集也是不同的,这样得到多个不同的弱学习器。
随机森林是bagging的一个特化进阶版,所谓的特化是因为随机森林的弱学习器都是决策树。所谓的进阶是随机森林在bagging的样本随机采样基础上,又加上了特征的随机选择,其基本思想没有脱离bagging的范畴。
三、集成学习之结合策略
3.1、学习器结合会从三个方面带来好处:
- 从统计方面看,由于学习任务的假设空间往往很大,可能有多个假设在训练集上达到同等性能,此时若使用单学习器可能因误选而导致泛化性能不佳,结合多个学习器则会减小这一风险。
- 从计算的方面来看,学习算法往往会陷入局部极小,有的局部极小点所对应的泛化性能可能很糟糕,而通过多次运行之后进行结合,可降低陷入糟糕局部极小点的风险。
- 从表示方面看,某些学习任务的真是假设可能不在当前学习算法所考虑的假设空间中,此时若使用单学习器肯定无效,而通过结合多个学习器,由于相应的假设空间有所扩大,有可能学得更好的近似。
如下图所示:
3.2、平均法
对于数值类的回归预测问题,通常使用的结合策略是平均法,也就是说,对于若干个弱学习器的输出进行平均得到最终的预测输出。
- 简单平均法(最简单的平均是算术平均,也就是说最终预测是)
H ( x ) = 1 T ∑ i = 1 T h i ( x ) H(x)=\frac{1}{T}\sum_{i=1}^{T} h_i(x) H(x)=T1i=1∑Thi(x) - 加权平均法(如果每个个体学习器有一个权重 w w w,则最终预测是)
H ( x ) = 1 T ∑ i = 1 T h i ( x ) H(x)=\frac{1}{T}\sum_{i=1}^{T} h_i(x) H(x)=T1i=1∑Thi(x)
其中, w i w_i wi 是个体学习器 h i h_i hi 的权重,通常要求 w i ≥ 0 w_i \geq 0 wi≥0, ∑ i = 1 T w i = 1 \sum_{i=1}^{T} w_i=1 ∑i=1Twi=1
加权平均法的权重一般是从训练集中学习而得,显示任务中的训练样本通常不充分或存在噪声,这使得学出的权重不完全可靠。尤其是对于规模较大的集成来说,学习的权重比较多,容易导致过拟合。因此,加权平均法未必一定优于简单平均法。
一般而言,在个体学习器性能相差较大时宜使用加权平均法,而在个体学习器性能相近时宜使用简单平均法。
3.3、投票法
对于分类问题的预测,学习器 h i h_i hi 将从类别标记集合{ c 1 , c 2 , . . . , c K c_1,c_2,...,c_K c1,c2,...,cK} 中预测出一个标记。对此,我们通常使用的是投票法。我们将 h i h_i hi 在样本 x x x 上的预测输出表示为一个 N N N 维向量 ( h i 1 ( x ) , h i 2 ( x ) . . . h i T ( x ) ) (h_i^1(x),h_i^2(x)...h_i^T(x)) (hi1(x),hi2(x)...hiT(x)),其中 h i j h_i^j hij 是 h i h_i hi 在类别标记 c j c_j cj 上的输出。
-
相对多数投票法
最简单的投票法是相对多数投票法,也就是我们常说的少数服从多数,也就是T个弱学习器的对样本x的预测结果中,数量最多的类别ci为最终的分类类别。如果不止一个类别获得最高票,则随机选择一个做最终类别。
-
绝对多数投票法
稍微复杂的投票法是绝对多数投票法,也就是我们常说的要票过半数。在相对多数投票法的基础上,不光要求获得最高票,还要求票过半数。否则会拒绝预测。
-
加权投票法
更加复杂的是加权投票法,和加权平均法一样,每个弱学习器的分类票数要乘以一个权重,最终将各个类别的加权票数求和,最大的值对应的类别为最终类别。
加权投票法和加权平均法类似, w i w_i wi 是 h i h_i hi 的权重,通常 w i ≥ 0 w_i \geq 0 wi≥0, ∑ i = 1 T w i = 1 \sum_{i=1}^{T} w_i=1 ∑i=1Twi=1
3.4、学习法
当训练数据很多时,一种更为强大的结合策略是 “学习法”,即通过另一个学习器来进行结合。Stacking 是学习法的典型代表。这里把个体学习器称为初级学习器,用于结合的学习器称为次级学习器或元学习器。
Stacking 先从初始数据集训练出初级学习器,然后 “生成” 一个新数据集用于训练次级学习器。在这个新数据集中,初级学习器的输出被当作样例输入特征,而初始样本的标记仍被当作样例标记。Stacking 的算法描述如下图,假定初级学习器使用不同学习算法产生,即初级集成是异质的。
在训练阶段,次级训练集是利用初级学习器产生,若直接用初级学习器的训练样本来产生次级训练集,则过拟合风险会比较大;因此,一般是通过交叉验证或留一法,用训练初级学习器未使用的样本来产生次级学习器的训练样本。
次级学习器的输入属性表示和次级学习算法对 Stacking 集成的泛化性能有很大影响。
贝叶斯模型平均(Bayes Model Averaging,简称 BMA)基于后验概率来为不同模型赋予权重,可视为加权平均法的一种特殊实现。但是,Stacking 通常优于 BMA ,因为其鲁棒性(健壮性)比 BMA 更好,而且 BMA 对模型近似误差非常敏感。