学习器的结合可能会从三个方面带来好处 [Dietterich,2000]:
-
从统计方面来看,学习任务的假设空间往往很大,可能有多个假设在训练集上达到同等性能,结合多个学习器会减小单学习器因误选而导致泛化性能不佳这一风险;
-
从计算的方面来看,学习算法往往会陷入局部极小点,有的局部极小点所对应的泛化性能可能很糟糕,而通过多个学习器运行之后进行结合,可降低陷入糟糕局部极小点的风险;
-
从表示方面来看,学习任务的真实假设可能不在当前学习算法的假设空间中,通过结合多个学习器,使得相应的假设空间有所扩大,从而降低这一风险。
21.1 结合策略
假定集成包含T个基学习器 {h1,h2,...,hT},其中 hi 在样本 x 上的输出为 hi(x)。对 hi 进行结合的几种常见策略:
21.1.1 hi(x)平均法
对数型输出hi(x)∈R,最常见的结合策略是使用++++平均法 (averaging)++++:
++++简单平均法++++(simple averaging) : H(x) = (1/T)Σ(i=1,T)hi(x)
++++加权平均法++++ (weighted averaging) : H(x) = Σ(i=1,T)wi·hi(x),其中 wi 是个体学习器 hi 的权重,通常要求wi≥0,Σ(i=1,T)wi =1。例如估计出个体学习器的误差,然后令权重大小与误差大小成反比。
++事实上,加权平均法可认为是集成学习研究的基本出发点,对给定的基学习器,不同的集成学习方法可视为通过不同的方式确定加权平均法中基学习器的权重++。
++加权平均法的权重一般是从训练数据中学习而得,现实任务中的训练数据通常不充分或存在噪声,尤其对规模比较大的集成来说,学习的权重比较多时,较容易导致过拟合++ 。因此,++实验和应用均显示出,加权平均法未必一定优于简单平均法++[Xuetal.,1992; Hoetal.,1994; Kittleretal.,1998]。<简单平均法是加权平均法 wi=1/T 的特例>
++一般而言,在个体学习器性能相差较大时宜使用加权平均法,而在个体学习器性能相近时宜使用简单平均法++。
21.1.2 类概率投票法
对分类任务来说,学习器 hi 将从类别集合 {c1, c2, ..., cn} 中预测一个类别,最常见的结合策略是使用++++投票法(voting)++++。
++将 hi 在样本 x 上的预测输出表示为一个N维向量 (hi1(x), hi2(x), ... , hin(x)),其中hij(x)是学习器 hi对类别 cj 的输出(分数)++。
++++绝对多数投票法++++(majority voting) : H(x) = cj if Σ(i=1,T)hij(x) > 0.5(Σ(k=1,n)Σ(i=1,T)hik(x))
<类别 cj 总得分高于全体类别得分总数的一半时,集成预测结果为cj;否则拒绝预测 (这在可靠性要求较高的学习任务中是一个很好的机制)。>
++++相对多数投票法++++(plurality voting) : H(x) = C argmax(j) Σ(i=1,T)hij(x)
<当类别cj总得分最高时,集成预测结果为cj。>
++++加权投票法++++(weighted voting) : H(x) = C argmax(j) Σ(i=1,T)wi·hij(x)
<其中wi是hi的权重,通常wi≥0,Σ(i=1,T)wi=1,类别cj总得分最高时为集成预测结果。>
以上没有限制hi输出值的类型。在现实任务中,不同类型的 hi 可能产生不同类型的 hij(x) 值,常见的有:
-
类标记:hij(x)∈{0,1},若hi将样本x预测为类别cj则取值为1,否则为0。
-
类概率:hij(x)∈(0,1),相当于对后验概率P(cj|x)。
++不同类型的hij(x)值在集成学习结合策略中不能混用。++
++对一些能在预测出类别标记的同时产生分类置信度的学习器,其分类置信度可转化为类概率使用。++若此类值未进行规范化,例如支持向量机的分类间隔值,则必须使用一些技术如Platt缩放(Platt scaling)[Platt,2000]、等分回归(isotonic regression)[Zadrozny and Elkan,2001]等进行"校准"(calibration)后才能作为类概率使用。
基于类概率进行结合 往往比直接基于类标记进行结合 性能更好。但是需要注意,如果个体学习器的类型不同,其类概率值不能直接用于集成学习的结合策略进行汇总比较。例如,逻辑回归通过Sigmoid函数输出类概率,决策树基于叶结点样本比例计算类概率,DNN通过softmax函数输出类概率 ... 未校准(标准化)的类概率值直接相加/平均只是某学习器类概率投票的放大效果 (不能平等地体现每个学习器的类概率投票),导致集成结果出现偏差。在此种情形下,通常可转换为硬投票或进行概率校准。
21.1.3 学习法 : Stacking算法
当训练数据很多时,一种更为强大的结合策略是使用"++++学习法++++ ",++++Stacking++++[Wolpert,1992; Breiman,1996b]是学习法的典型代表。
++Stacking先从训练数据集训练出T个初级学习器 hi (Stacking将个体学习器称为初级学习器)++ ,然后++使用这T个初级学习器 hi "生成"一个新数据集用于训练元学习器(meta-learner) h'++ ,++Stacking使用h'得到集成结果H(x)++ 。++在这个新数据集中,T个初级学习器的输出结果 (h1(xi), h2(xi), ..., hT(xi)) 作为新样本的输入特征,而样本标记仍使用初始样本(xi, yi)的标记yi++。
Stacking算法流程如下:
训练数据集 D={(x1,y1), (x2,y2), ..., (xm,ym)}
用于训练元学习器的新数据集 D'
初级学习器 h1, h2, ..., hT,初级学习算法 f1, f2, ..., fT
元学习器 h',元学习算法 f'
for t=1, 2, ..., T do
ft(D) → ht
end for
D' = ∅
for i=1,2, ..., m do
for t=1,2, ..., T do
zit = ht(xi) <注意这里使用的数据集不是训练数据集D,zit是ht对样本xi输出的类概率向量>
end for
D' = D' U (zi1, zi2, ..., ziT, yi)
end for
f'(D') → h'
输出:H(x) = h'(h1(x), h2(x), ..., hT(x))
++如果直接使用 初级学习器的训练数据集 产生 训练元学习器的新数据集,则过拟合风险会比较大;++因此,一般是通过交叉验证或留一法,使用训练初级学习器未使用过的样本产生元学习器的训练样本。
以k折交叉验证为例,数据集被随机划分为k个大小相似的集合D1, D2, ..., Dk。令Dj和D'j分别表示第j折的训练集和测试集。初级学习器 ht 在第 j 折的训练集 Dj 上进行训练。
对于第 j 折的测试集 D'j 中每个样本(x'ji, y'ji),令zjit=ht(x'ji) 即初级学习器 ht 在 x'ji 上的输出结果,则由T个初级学习器在 x'ji 上产生的新样本特征为 zji=(zji1, zji2, ..., zjiT),样本标记为y'ji。
k折交叉验证过程结束后,这T个初级学习器产生的新数据集是D'={(zji, y'ji)}, j=1,2, ..., k。然后D'将用于训练元学习器。
元学习器输入的样本特征和元学习算法对Stacking集成的泛化性能有很大影响。
<H(x) = h'(h1(x), h2(x), ..., hT(x)) 也可说明,T个初级学习器输出的类概率(h1(x), h2(x), ..., hT(x)) 和 元学习器将(h1(x), h2(x), ..., hT(x))进行结合得出最终的集成结果的元学习算法,对Stacking集成最为重要。
元学习器是将T个初级学习器的输出结果进行结合得出最终集成结果的学习器。>
有研究表明,将T个初级学习器输出的类概率作为元学习器的输入特征 <(zi1, zi2, ..., ziT, yi),zit是ht对样本xi输出的类概率向量>,用多响应线性回归 (Multi-response Linear Regression,简称MLR) 作为元学习算法效果较好[Ting and Witten,1999] <MLR是基于线性回归的分类器,它对每个类分别进行线性回归。在MLR中使用不同的特征集更佳[Seewald,2002]。>
21.2 多样性
构建泛化能力强的集成,个体学习器应"好而不同",现在对此做一个简单的理论分析:
21.2.1 误差-分歧分解
假定个体学习器h1, h2, ..., hT通过加权平均法的结合,产生集成结果H(x),完成回归学习任务f。对于样本x,学习器 hi的"分歧"(ambiguity)为 ,
集成的分歧为 A(h|x) = Σ(i=1,T) wi·A(hi|x) =
++这里的集成"分歧" A(h|x) 表征个体学习器(加权平均)在样本x上的不一致性,即在一定程度上反映了个体学习器的多样性++。
个体学习器hi的平方误差 : E(hi|x) = (fi(x)-hi(x))^2 <fi(x)表示hi完成学习任务f的理论结果>
集成H的平方误差 : E(H|x) = (f(x)-H(x))^2
令Σ(i=1,T)wi·E(hi|x) 表示个体学习器平方误差的加权均值,有
A(h|x) = Σ(i=1,T)wi·E(hi|x) - E(H|x)
<这里的集成"分歧" A(h|x) 从平方误差的角度表征个体学习器(加权平均)在样本x上的不一致性>
令p(x)表示样本的概率密度,则在全样本上有:
Σ(i=1,T)wi·∫A(hi|x)p(x)dx = Σ(i=1,T)wi·∫E(hi|x)p(x)dx - ∫E(H|x)p(x)dx
个体学习器hi在全样本上的分歧 Ai = ∫A(hi|x)p(x)dx
个体学习器hi在全样本上的泛化误差 Ei = ∫E(hi|x)p(x)dx
集成在全样本上的泛化误差 E = ∫E(H|x)p(x)dx
则有 Σ(i=1,T)wi·Ai = Σ(i=1,T)wi·Ei - E
E = Σ(i=1,T)wi·Ei - Σ(i=1,T)wi·Ai = Σ(i=1,T)wi·(Ei-Ai)
这个漂亮的式子[Krogh and Vedelsby,1995]称为"误差-分歧分解 "(error-ambiguity decomposition),表示:++个体学习器准确性越高(Ei越低)、多样性(Ai)越大,则集成的泛化性能越好++。
不过需要注意的是,上面的推导过程只适用于回归学习,难以直接推广到分类学习。并且,Ai不是一个可优化的多样性度量,它只能在集成构造好之后进行估计。
21.2.2 多样性度量
多样性度量(diversity measure)是用于度量集成学习中个体分类器的多样性,即估算个体学习器的多样化程度。典型做法是考虑个体分类器的两两相似/不相似性。
给定数据集D={(x1,y1), (x2,y2), ..., (xm,ym)},对二分类任务 yi∈{-1,+1},分类器 hi 与 hj 的预测结果联表(contingency table)如图所示:

其中 a+b+c+d=m。
基于这个联表,一些常见的多样性度量:
- 不合度量(disagreement measure)
++++disij = (b+c)/m++++
- 相关系数 (correlation coefficient)
++++ρij = (ad-bc) / √((a+b)(a+c)(c+d)(b+d))++++
ρij值域为[-1,1]。若hi与hj无关,则值为0 (ad=bc);若hi与hj正相关则值为正,否则为负。
- Q-统计量 (Q-statistic)
++++Qij = (ad-bc) / (ad+bc)++++
- k-统计量 (k-statistic)
++++两个分类器取得一致的概率 p1 = (a+d)/m++++
++++两个分类器偶然达成一致的概率 p2 = ((a+b)(a+c)+(d+c)(d+b)) / m^2++++
++++k = (p1-p2)/(1-p2)++++
若分类器hi与hj在D上完全一致,则k=1 (p2=0);若仅是偶然达成一致,则k=0 (p1=p2)。k仅在hi与hj达成一致的概率甚至低于偶然性的情况下取负值。k值越大则多样性越小。
以上都是"(学习器)成对型"(pairwise)多样性度量,例如著名的"k-误差图",是将每一对分类器作为图上一个点,横坐标是这对分类器的k值,纵坐标是它们的平均误差 (数据点云的位置越高,则个体分类器准确性越低;数据点云的位置越靠右,则个体学习器的多样性越小)。
21.2.3 多样性增强
在集成学习中需有效地增强个体学习器的多样性。如何增强多样性?一般思路是在学习过程中引入随机性,常见做法主要是对数据样本、输入属性、输出表示、算法参数进行扰动。
具体做法总结如下:
- 数据样本扰动
++通常是基于采样法++ ,例如在Bagging中使用自助采样法,在AdaBoost中使用序列采样(调整样本分布与权重)。++++再利用不同的数据子集训练出不同的个体学习器++++。
一些常见的基学习器,例如决策树、神经网络等,训练样本的变动会导致学习器有显著变动,数据样本扰动法对这类基学习器很有效;然而,有一些基学习器对数据样本的扰动不敏感,例如线性学习器、支持向量机、朴素贝叶斯、k近邻学习器等,对此类稳定基学习器(stable base learner)进行集成往往需要使用输入属性扰动等其他方法。
- 输入属性扰动
++训练样本的不同"子空间" (subspace,即属性子集) 提供了观察数据的不同视角。从不同子空间(属性子集)训练出的个体学习器必然有所不同++。
著名的随机子空间(random subspace)算法[Ho,1998]基于输入属性扰动,从初始属性集抽取出若干个属性子集,再基于每个属性子集训练一个基学习器。对包含大量冗余属性的数据,在子空间中训练个体学习器不仅能产生多样性大的个体,还会因属性数的减少而大幅训练节省时间开销。若训练集只包含少量属性,或者冗余属性很少,则不宜使用输入属性扰动法。
<子空间一般指从初始的高维属性空间投影产生的低维属性空间,描述低维空间的属性是通过初始属性投影变换而得,未必是初始属性。>
- 输出表示扰动
基本思路是对输出表示进行操纵以增强多样性。可对训练样本的类标记进行改动,如"翻转法"(Flipping Output)[Breiman,2000]随机改变一些训练样本的标记;
也可对输出表示进行转化,如"输出调制法"(Output Smearing)[Breiman,2000]将分类输出转化为回归输出后构建个体学习器;
还可将原任务拆解为多个同时求解的子任务,如多分类学习的OvO、OvR、OvM-ECOC法,将多分类任务拆解为一系列二分类任务训练基学习器。
<回顾ECOC法:N个类别、M个分类器(每个类别都对应这M个分类器,每个分类器都对应这N个类别;且每个分类器将一部分类别作为正类,另一部分作为反类),则每个类别对应一个由M个+/-组成的编码,测试样本通过这M个分类器生成一个由M个+/-组成的预测编码 -- 两者编码之间差别最小对应的类别即为测试样本的预测结果。>
- 算法参数扰动
基学习算法一般都有参数需要进行设置 (例如神经网络的隐层神经元数、初始连接权值等),通过设置不同的参数,可产生差别较大的个体学习器。
对参数较少的算法,可将其学习过程中使用的某机制用其他机制代替,从而达到扰动的目的 (例如决策树使用的属性选择机制)。
值得指出的是,++++训练单一学习器通常使用交叉验证等方法使用不同参数训练出多个学习器并从中确定最优参数值,从而选择其中一个学习器进行使用,而集成学习则相当于把这些学习器都利用起来。++++
++++不同的多样性增强机制可同时使用,++++例如随机森林同时使用了数据样本扰动和输入属性扰动。
如何理解多样性,被认为是集成学习中的圣杯问题。
著名数据挖掘竞赛 KDDCup 历年的冠军几乎都使用了集成学习。