【机器学习】集成学习
集成学习
一、集成学习的基本思想
集成学习 (ensemble learning) 通过构建并结合多个学习器来完成学习任 务,有时也被称为多分类器系统(multi-classifier system) 、基于委员会的学习(committee-based learning) 等。
图 8.1 显示出集成学习的一般结构:先产生一组“个体学习器”(individual learner),再用某种策略将它们结合起来。
个体学习器通常由一个现有的学习算法从训练数据产生,例如C4.5决策树算法、 BP神经网络算法等,此时集成中只包含同种类型的个体学习器,例如“决策树集成”中全是决策树,“神经网络集成”中全是神经网络,这样的集成是“同质”(homogeneous)。同质集成中的个体学习器亦称"基学习器" (base learner), 相应的学习算法称为"基学习算法" (base learning algorithm)。
集成也可包含不同类型的个体学习器,例如同时包含决策树和神经网络,这样的集成是"异质"的(heterogenous)。异质集成中的个体学习器由不同的学习算法生成,这时就不再有基学习算法;相应的,个体学习器一般不称为基学习器,常称为"组件学习器"(component learner)或直接称为个体学习器。
集成学习思想源自概率近似正确(Probably Approximately Correct,PAC)学习理论。根据PAC学习理论,若某学习问题能被个体学习器高精度地学习,则称该学习问题是强可学习问题,并称相应的个体学习器为强学习器;反之,若某学习问题仅能被个体学习器低精度地学习,则称该学习问题是弱可学习问题,并称相应的个体学习器为弱学习器。对于强可学习问题,当直接构造其强学习器比较困难时,可通过构造一组弱学习器以生成强学习器,将强可学习问题转化为弱可学习问题。通常称集成学习在分类任务中的弱(强)学习器为弱(强)分类器,在回归任务中的弱(强)学习器为弱(强)回归器。
集成学习对若学习器选择的要求:
- 弱学习器的合理选择显然是集成学习首先必须解决的问题。如果弱学习器的泛化性能太差,则由它们组成的集成模型可能不会取得性能上的有效提升,甚至会产生性能下降的情况。
- 集成学习除了对弱学习器的泛化性能有一定要求之外,还要求不同的弱学习器之间应当存在一定的差异。一般来说,差异较大的一组弱学习器组成的集成模型,对泛化效果的提升会较为明显。
对于选定的一组弱学习器,集成学习需要通过一定的组合策略将它们组合起来形成较高性能的强学习器。从统计学角度看,由于学习任务的假设空间对于数据集而言通常是一个过大的空间,在假设空间当中可能同时存在多个假设使得模型在该数据集上得到相同的泛化性能,此时若使用单个学习器会带来过多的模型偏好,从而出现模型泛化能力不强的现象,结合多个弱学习器则可以有效降低此类风险。
二、集成学习基本范式
1. 弱学习器的构造
对于给定的样本数据集\(D\),可通过对该样本数据集采取某种随机的采样方式生成多个具有一定差异的训练样本集\(D_1,D_2,\dots,D_m\),然后分别通过这些训练样本集产生若干具有一定差异的弱学习器\(L_1,L_2,\dots,L_m\),以满足集成学习的要求。由于可对D进行多次重复采样且每次采样结果互不影响,故可认为通过采样所得的各个训练样本集之间相互独立。由此可知,在得到满足任务需求的训练样本集\(D_1,D_2,\dots,D_m\)之后,可如图5-3所示并行执行弱学习器构造过程。
上述弱学习器的并行构造方式忽略了弱学习器之间的某些联系,有时候还会丢掉一些重要信息。例如,对于某弱学习器分类错误的样本,其他弱学习器的训练过程当中应该加以重视,以免再犯同样的错误。弱学习器的并行构造方式显然无法做到这一点。为此可用串行方式逐个构造弱学习器,使得各弱学习器之间存在一定关联。
弱学习器的串行构造过程如图5-4所示,一般会根据前一弱学习器的输出调整其后继训练样本子集的样本分布,再通过调整后的训练样本子集构造弱学习器,如此重复直至完成所有所需弱学习器的构造。由图5-4可知,用于构造弱学习器\(L_{i+1}\)的训练子集\(D_{i+1}\)由弱学习器\(L_i\)确定,故而训练子集\(D_{i+1}\)需要在弱学习器\(L_i\)确定之后才能生成。这种串行弱学习器的构造方式显然会在一定程度上降低构造效率。
2. 弱学习器的组合
简单平均法
设有\(m\)个弱回归器,第\(i\)个弱回归器对样本输入X的预测输出为\(L_i(X)\),则可取集成模型\(L(X)\)的输出为各个弱回归器输出的简单平均值,即有
这种简单的组合策略被称为简单平均法。
简单平均法规定每个弱回归器对集成模型输出的贡献都相同。然而,不同弱回归器的重要性通常会有一些差异,此时简单平均法对各弱回归器一视同仁的做法不够合理,会导致集成学习的预测输出因过分依赖不太重要的弱回归器而降低泛化性能。
加权平均法
令\(w_i\)为弱回归器\(L_i(X)\)的权重,则有
通常使用机器学习方法获得加权平均法中的权重。需要注意的是,样本数量的不足或噪声样本的存在可能会影响权重的正确计算,对于大型集成任务而言,利用少量样本计算过多的权重很容易产生比较严重的过拟合现象。
投票法
对于输出空间为离散集合的分类任务,通常用投票法实现多个弱分类器的组合。
设有\(m\)个弱分类器,输出空间为\(S_{out}=\{c_1,\dots,c_n\}\),其中\(c_j\)表示第j类的类标。令\(L_i(X,c_j)\)表示一个布尔值,当且仅当第\(i\)个弱分类器\(L_i(X)\)对于样本输入X的预测输出为\(c_j\)时,\(L_i(X,c_j)=1\)。可将集成模型的输出\(L(X)\)定义为
上式表明\(L(X)\)的输出值为得票数最多的类别,也就是将集成模型选取得票数最多的类别类作为预测结果。通常称这种投票方法为相对多数投票法。显然,相对多数投票法可能会使得多个类别同时具有最多票数,此时可从这些具有相同最多票数的类别中随机选择一个类别作为集成模型的预测输出。
在票数比较分散的情况下,相对多数投票法的最多票数可能会很小,此时会大大增加集成模型出现错误分类的概率。为此,需要对相对多数投票法进行改进,对集成模型\(L(X)\)预测输出类型的最低得票数进行合理限制。限制模型\(L(X)\)预测输出类型的最低得票数不得小于弱分类器数目m的一半,否则\(L(X)\)拒绝输出预测结果,则称这种改进后的相对多数投票法为绝对多数投票法。
加权投票法
相对多数投票法和绝对多数投票法显然均未考虑不同弱分类器在重要性方面的差异。可在上述投票法中引入加权机制以度量弱分类器的重要性,得到一种名为加权投票法的弱分类器组合方法。具体地说,对于一组重要性不相同的弱分类器\(L_i(X)\),令\(w_i\)为\(L_i(X)\)的权重,则可通过带加权计算的投票方法对其进行组合,得到集成模型的预测输出为
3. 集成学习的基本流程
集成学习虽然会根据具体任务需求选择相应的个体学习器生成策略和组合策略,但基本流程保持不变,即如图5-5所示,先通过数据集生成个体学习器,然后利用某种组合策略将个体学习器组合成集成模型。这种基本流程构成了集成学习的基本范式。
三、集成学习泛化策略
集成学习的目标是获得具有较好泛化性能的机器学习模型,最好能够达到使模型泛化误差最小的理想情况。现以回归任务为例,通过分析影响模型泛化误差的因素,讨论提升集成模型泛化性能的基本方法。
假设回归任务的真实映射为\(f\),集成模型\(L\)由\(m\)个弱回归器\(L_1,\dots,L_m\)通过简单平均法组合生成,即对于输入样本\(X\),集成模型\(L(X)\)的预测输出为
则集成模型\(L\)关于输入样本\(X\)的误差可表示为
弱回归器\(L_i\)对输入样本X的预测\(L_i(X)\)与集成模型预测结果的差异可表示为
则一组弱回归器的差异度或多样性可表示为该组所有弱回归器关于集成模型输出偏差的平均值,即有
对上式分解可得:
令\(Q(L_i,X)\)表示所有弱回归器对于输入样本X的平均误差,即
则有
由以上分析可知,集成模型\(L\)关于输入样本\(X\)的预测误差\(Q(L,X)\)等于所有弱回归器关于输入样本\(X\)的平均误差减去这组弱回归器的差异度\(\mathrm{ave}\ D\)。
这个结论为集成模型泛化性能的提升给出了两个基本思路,即降低个体学习器的泛化误差和提高个体学习器的多样性。
降低弱学习器的泛化误差:可用样本扩充、范数惩罚等机器学习正则化策略提升弱学习器的泛化性能并在具体集成学习中尽可能使用泛化性能较好的弱学习器进行集成训练。
提高弱学习器多样性:可以分别从改变训练样本和改变模型训练参数这两个角度来提高弱学习器多样性。
从改变训练样本的角度提高集成模型泛化性能,主要是从改变输入的角度出发,通过对样本数据采样增加输入样本随机性,由此提高弱学习器多样性。具体地说,若需通过样本数据集\(D\)构造\(m\)个不同的弱学习器,则可使用某种采样方法从D生成m个有差别的训练样本数据子集\(\{D_1,D_2,\dots,D_m\}\),分别用这些训练子集进行训练就可以构造出\(m\)个有差别的弱学习器。对于决策树和神经网络等弱学习器,训练样本集的细微变动都可能导致训练模型产生显著变化,故通过D的不同采样子集可显著提高此类弱学习器的多样性。
由于弱学习器自身参数的不同设置以及在不同训练阶段产生的不同参数都会产生不同的弱学习器,故可从这些角度增加弱学习器的多样性。例如,改变神经网络初始连接权重、隐含层神经元个数等参数可以使模型收敛至不同的解,故可通过随机设置不同的参数获得具有一定差异的弱学习器。
值得注意的是,通常综合使用多种泛化策略构造同一个集成模型。例如,在构造某个集成模型时可能既采用数据样本采样方法,又对模型参数进行随机选择以提高弱学习器的多样性。
事实上,弱学习器的个数也在一定程度上影响集成模型的泛化性能。例如,对于某个二分类任务的集成学习问题,假设每个弱学习器的错误率均为\(\varepsilon\),则可从理论上证明其集成模型的泛化误差上界为
其中,\(m\)为组成集成模型的弱学习器个数。
\(H(m)\)作为关于弱学习器个数\(m\)的函数,取值随着\(m\)的增加而减小。因此,增加若学习器的个数也能达到提升集成模型泛化性能的目的。
四、Bagging集成学习
Bagging集成学习方法首先通过对样本数据集进行自助随机采样方式并行构造多个具有一定差异的样本数据子集,然后分别由这些子集训练构造多个弱学习器并将这些弱学习器集成为一个具有较强泛化性能的集成模型,即强学习器。也称该方法为袋装法,其名称Bagging是Bootstrap Aggregating的缩略语,意为自助集成,较好地体现了该方法的基本思想。Bagging集成学习是一种基本的集成学习方法,由该方法衍生的随机森林学习方法也是一种在多个领域得到广泛应用的重要集成学习方法。本节主要介绍Bagging和随机森林集成学习的基本方法,包括Bagging集成学习的基本策略、随机森林的模型结构与训练算法。
1.Bagging集成策略
对于给定的样本数据集\(D\),如何在\(D\)的基础上产生多个具有一定差异的训练样本数据子集\(D_1,D_2,\dots,D_k\)是集成学习的一个关键。Bagging集成学习主要通过自助采样法生成训练样本数据子集。
自助采样法:假设\(D\)中包含有\(n\)个样本数据,自助采样会对\(D\)进行\(n\)次有放回的随机采样并将采样获得的样本纳入训练集。显然,自助采样可能会抽到重复样本且未能抽到\(D\)中的某些样本。不难知道,\(D\)中某个数据在一次自助采样时未被抽到的概率为\((1-1/n)^n\),当\(n→∞\)时的概率极限值为0.368。这意味着当数据集\(D\)的基数\(n\)足够大时,一次自动采样中未被抽到的样本数量占总样本数量的\(36.8\%\)左右。可将这些未被抽到的样本组成测试样本集合,用于测试弱学习器的泛化性能。
得益于自助采样方法的随机性质,对样本数据集\(D\)进行多次自助采样就可以分别生成多个具有一定差异的训练样本子集\(D_1,D_2,\dots,D_k\),可分别通过对这些子集的训练构造出所需的弱学习器。
对多个弱学习器的集成方案则较为简单,一般通过简单平均法集成多个弱回归器,通过相对多数投票法集成多个弱分类器。由于每个训练样本子集都是通过独立自助采样得到,各次自助采样相互独立,故可并行构造各个弱学习器,大幅降低集成学习算法的时间复杂度。
Bagging集成学习的基本流程图如图5-6所示:
2.随机森林模型结构
决策树是一类简单有效的常用监督学习模型,它具有很多良好的性质和比较成熟的训练构造算法。可用Bagging集成学习方法将多个决策树模型作为弱学习器集成起来,构造一个具有较强泛化性能的森林模型作为强学习器。
由于Bagging集成学习方法一般通过随机性自助采样方法生成用于构造弱学习器的训练样本数据子集合,使得由这些子集合训练而成的决策树模型结构具有一定的随机性且相互之间具有一定的差别,故称由这些决策树作为弱学习器组合而成的森林模型为随机森林模型,通常简称为随机森林。
对于一组具有一定差异的决策树模型,它们对于同一样本的预测值可能存在差异,若综合考虑这组决策树对同一样本的预测结果,则由此得到的综合预测结果通常会比单个决策树模型的预测结果更为合理。因此,作为Bagging集成学习强学习器的随机森林模型比决策树模型具有更好的泛化性能。
由以上分析可知,随机森林模型是一类以决策树模型为弱学习器的Bagging集成模型。由于随机森林模型的弱学习器类型和模型集成策略都已确定,故提高随机森林模型泛化性能的关键在于如何提高弱学习器之间的差异性。根据Bagging集成学习的基本原理,随机森林模型可以通过对数据集的随机性自助采样获得多个具有一定差异的训练样本子集,由此生成多个具有不同结构的弱学习器。
事实上,除了通过构造具有一定差异的训练样本子集以产生不同结构的决策树之外,还可以根据决策树模型训练构造方法特点,通过对决策树模型中某些特征引入随机性的方式进一步增加决策树模型之间的互异性。具体地说,在确定随机森林中某决策树上某个结点的划分属性时,需要先从当前结点所对应属性集合\(A=\{a_1,a_2,\dots,a_m\}\)中随机选择一个包含\(s\)个属性的子集\(A'\),并从子集\(A'\)中选择一个最优属性作为划分属性。
显然,当s取值较小时,单个决策树模型预测的偏差较大,预测错误率较高,使用此类弱学习器进行集成通常难以达到理想效果;若s取值较大,则弱学习器之间的差异性较小,使用此类弱学习器进行集成所得到集成模型的性能提升效果不明显。由此可知,属性子集中属性个数s的确定直接影响着随机森林模型的性能。理论分析表明,取\(s=\log_2m\)时集成模型的泛化性能较为理想。
显然,当s取值较小时,单个决策树模型预测的偏差较大,预测错误率较高,使用此类弱学习器进行集成通常难以达到理想效果;若s取值较大,则弱学习器之间的差异性较小,使用此类弱学习器进行集成所得到集成模型的性能提升效果不明显。由此可知,属性子集中属性个数s的确定直接影响着随机森林模型的性能。理论分析表明,取s=log2m时集成模型的泛化性能较为理想。
3.随机森林训练算法
随机森林模型基于Bagging集成学习方法构造,故训练构造随机森林模型的过程基本上也遵从Bagging集成学习的基本流程,只是在一些细节方面与前述基本Bagging集成学习方法有所不同。具体地说,对于一个包含n个样本的数据集D,首先对D随机性自助采样k个训练样本子集\(D_1,D_2,\dots,D_k\),然后分别由\(D_1,D_2,\dots,D_k\)训练构造k棵决策树,并对这些决策树进行组合便可得到随机森林模型。上述随机森林模型的构造过程与基本Bagging集成学习方法的差别主要在于通过训练样本子集\(D_1,D_2,\dots,D_k\)构造k棵决策树模型的环节。与基本Bagging集成学习不同的是,随机森林训练算法通过在决策树的构造环节引入随机性进一步提升了弱学习器的个体差异性,使得生成的随机森林模型具有更好的泛化性能。
现以使用训练样本子集\(D_i\)构造第i棵决策树\(T_i\)为例,介绍作为弱学习器的决策树模型的具体构造过程。
决策树的构造:构造决策树的关键在于从训练样本数据集中确定决策树结点的划分属性。假设在确定决策树Ti中某个结点的划分属性时,该结点所对应样本特征属性集合为\(A_i=\{a_{i1},a_{i2},\cdots,a_{im}\}\),则可使用某个度量指标通过比较该特征集合上各属性指标值的方式来确定决策树结点的划分属性。例如,在构造CART决策树时需要比较所有属性关于训练样本集\(D_i\)的基尼指数值,取使得训练数据集\(D_i\)基尼指数最小的属性\(a_{ij}\)作为该结点的划分属性。
为提高决策树模型的个体差异性,通常需要从特征属性集合\(A_i\)中随机选择s个特征组成新的特征集合\(A'_i=\{a'_{i1},a'_{i2},\cdots,a'_{is}\}\),然后算得由\(A'_i\)中的最优特征\(a'_{ij}\)作为划分属性。
以构造CART决策树为例,随机森林集成学习中构造单棵决策树算法的具体步骤如下:
- 通过自助法确定训练样本集\(D_i\);
- 从当前样本数据集的特征集合\(A_i=\{a_{i1},a_{i2},\dots,a_{im}\}\)中随机选择s个特征组成新的特征集合\(A'_i=\{a'_{i1},a'_{i2},\cdots,a'_{is}\}\);
- 分别计算\(A'_i\)中所有属性关于该样本数据集的基尼指数,并根据基尼指数确定最优特征切分点,然后根据最优切分点\(D_i\)中的样本分配到子节点所对应的样本子集中;
- 分别对两个子节点递归地调用步骤2~3,直到满足算法停止条件。算法停止条件为节点中样本个数或样本集基尼指数小于给定阈值,或者没有更多特征可以分裂。
不难发现,上述训练过程没有包含剪枝操作。这是因为决策树剪枝操作可能会造成单棵决策树模型的预测偏差增大,不利于提升随机森林模型的泛化性能。
五、Boosting集成学习
前述Bagging集成学习方法及随机森林模型对弱学习器的训练没有考虑各个弱学习器之间的关联性。事实上,在很多情况下可以通过弱学习器之间的关联性获得泛化性能更好的学习效果。例如,在背英语单词的过程中,背完第一遍后容易记住的单词都记住了,第二遍主要针对第一遍记错的单词重点记忆,第三遍主要针对第二遍还未记住的单词重点记忆,如此重复直至完成目标。Boosting集成学习方法正是基于这种思想,该方法特别注重那些被弱学习器错误预测的样本,因而是一种非常有效的集成学习方法。在Boosting集成学习方法基础上衍生出两个在多个领域得到广泛应用的著名集成学习算法,即AdaBoost算法和GBDT算法。
1.Boosting集成策略
在日常生活和工作中,人们总是善于从过往的经验中汲取教训,尽量使得已经犯过的错误不会再犯。不会被同一块石头绊倒两次指的就是这个意思。Boosting集成学习正是基于这种思想实现对弱分类器的训练。Boosting集成学习方法,又名提升式集成学习方法。顾名思义,该方法主要通过集成各个弱学习器的成功经验和失败教训实现对模型性能的提升。具体地说,该方法使用迭代方式完成对各个弱学习器的训练构造,每次迭代对训练样本集的选择都与前面各轮的学习结果有关,使用前面各轮学习结果更新当前各训练样本的权重,并对前面被错误预测的样本赋予较大的权重,实现对当前训练样本集合数据分布的优化。
由以上分析可知,Boosting集成学习的弱学习器之间基本上呈现互补状态,对于被前一个弱学习器Lt错误预测的样本X,由于在对随后弱学习器\(L_{t+1}\)的训练过程中增加了对样本X的关注程度,故样本X能够被\(L_{t+1}\)正确预测的概率会有所提升。这种将前一个弱学习器\(L_t\)的预测效果用于确定后一个弱学习器\(L_{t+1}\)的训练方式正是Boosting集成策略的关键。
Boosting集成学习通常使用两种方式调整训练样本集的数据分布:一是仅调整样本数据的权重,而不改变当前训练样本集合;二是改变当前训练样本集合,将那些被之前的弱学习器错误预测的样本复制到关于当前弱学习器的训练样本集合中重新进行训练。
第一种方式的基本思想是提高当前训练样本集合中被错误预测样本的权重,降低已被正确预测样本的权重,使得后续对弱学习器的训练构造更加重视那些被错误预测的样本。具体地说,对于包含n个样本的训练集T,其中每个样本的初始权重均为1/n,则对于所有被错误预测样本组成的集合Q,其整体权重等于预测错误率\(ε\)。若规定权重更新后样本集合Q的整体权重为1/2,则需将其初始权重\(ε\)乘上\(1/(2ε)\),即有\([1/(2ε)]ε=1/2\)。同理可知,剩余样本的整体权重应乘上\(1/[2(1-ε)]\)以确保更新后概率分布的所有概率之和为1。
Boosting集成学习调整训练样本集数据分布的第二种方式是改变当前训练样本集合,即复制被前面弱学习器错误预测样本到样本训练集当中重新进行训练。显然,采用这种方式会使得各个弱学习器的训练样本集不完全相同。例如,对于前一个预测正确率为50%的弱学习器\(L_t\),则可将用于训练当前弱学习器\(L_{t+1}\)的训练样本集合\(T_{t+1}\)调整为:一半是被弱学习器\(L_t\)错误预测的样本,另外一半是被弱学习器\(L_t\)正确预测的样本。训练样本集合\(T_{t+1}\)的这种构造方式充分考虑了弱学习器\(L_t\)的不足,并通过后续弱学习器\(L_{t+1}\)对其进行修正,从而提高集成模型的预测性能。
Schapire’s Boosting算法正是采用上述思想实现对训练样本集数据分布的调整。该算法是一种用于解决分类问题的Boosting集成学习算法,主要通过构造三个互补的弱分类器并由投票法将其集成为一个具有较强分类性能的强分类器。具体地说,对于包含n个样本的数据集D,该算法首先由D随机生成一个包含s个样本的子集\(D_1\)作为训练构造第一个分类器\(C_1\)的训练样本集合,并用数据集D对分类器\(C_1\)进行性能测试。由于\(C_1\)的泛化性能较弱,故会存在一些被错误分类的样本。对于构造第二个分类器\(C_2\)所使用的训练样本数据集合\(D_2\),其中一半样本是被分类器\(C_1\)错误预测的样本,另外一半样本是被分类器\(C_1\)正确预测的样本。
由于分类器\(C_1\)和分类器\(C_2\)分别由不同训练集生成,故它们对于相同样本的预测结果会有不同偏好。如果只用多个带有不同偏好的弱学习器进行组合,则所得集成模型的预测结果会由这组弱学习器对偏好的认可度决定,这显然不够合理。因为集成模型的预测结果应由样本的实际分布决定。故该算法在训练第三个分类器\(C_3\)时,主要选择分别被分类器\(C_1\)和分类器\(C_2\)预测成不同结果的样本来构成训练样本集\(D_3\)以用于对分类器\(C_3\)的训练。
Boosting集成学习算法的基本流程如图5-16所示。与Bagging集成学习方法类似,Boosting集成学习通常采用加权平均或加权投票方法实现对多个弱学习器的集成,由此构造一个具有较强泛化性能的集成模型。由于Boosting集成学习中各个弱学习器之间具有一定关联,由此可以得到预测偏差更小的弱学习器,故能有效降低集成模型的预测偏差。但由于其弱学习器通过串行训练逐个生成,故Boosting集成学习要花费较长时间训练弱学习器。
2.AdaBoost集成学习算法
AdaBoost集成学习算法是一种具有自适应性质的Boosting集成学习算法。该算法的自适应性主要表现在自动提升被错误预测样本的权重,自动减少被正确预测样本的权重,使得弱学习器训练过程能够根据模型预测性能自动进行调整。事实上,Ada Boost是Adaptive Boosting的缩略语,意为自适应增强,较好地表达了该算法的核心思想。
AdaBoost集成学习算法基本上遵从Boosting集成学习思想,通过不断迭代更新训练样本集的样本权重分布以获得一组性能互补的弱学习器,然后通过加权投票等方式将这些弱学习器集成起来得到性能较优的集成模型。
现以二分类任务为例介绍该算法的具体过程。
对于训练样本集\(D=\{(X_1,y_1),(X_2,y2),\dots,(X_n,y_n)\}\),其中\(y_i\in\{-1,+1\}\),由AdaBoost集成学习算法构造集成模型的基本步骤如下:
- 令i=1并设定若学习器的数目m。使用均匀分布初始化训练样本集的权重分布,令n维向量\(w_i\)表示第i次需要更新的样本权重,则有\(w^1=(w_{11},w{12},\cdots,w_{1n})^T=\left(\frac{1}{n},\frac{1}{n},\cdots,\frac{1}{n},\right)^T\)
- 使用权重分布为\(w^i\)的训练样本集\(D_i\)学习得到第i个若学习器\(L_i\);
- 计算\(L_i\)在训练样本集\(D_i\)上的分类错误率\(e_i=\sum_{k=1}^nw_{ik}I(L_i(X_k)\ne y_k)\)
- 确定弱学习器\(L_i\)的组合权重\(\alpha_i\)。由于弱学习器\(L_i\)的权重取值与其分类性能有关,对于分类错误率\(e_i\)越小的的\(L_i\),则其权重\(\alpha_i\)应该越大,故有\(\alpha_i=\frac{1}{2}\ln\frac{1-e_i}{e_i}\)
- 依据弱学习器\(L_i\)对训练样本集\(D_i\)的分类错误率\(e_i\)更新样本权重,更新公式为\(w_{i+1,j}=\frac{w_{ij}\exp(-\alpha_i y_k L_i(X_k))}{Z_i}\),其中\(Z_i=\sum_{k=1}^{n}w_{ij}\exp(-\alpha_i y_k L_i(X_k))\)为归一化因子,保证更新后权重向量为概率分布。
- 弱i<m,则令i=i+1并返回步骤2,否则,执行步骤7;
- 对于m个弱分类器\(L_i,L_2,\dots,L_m\),分别将每个\(L_i\)按权重\(\alpha_i\)进行组合\(L=\mathrm{sign}\left(\sum_{i=1}^m\alpha_i L_i(X)\right)\)得到并输出所求集成模型L,算法结束。
由上述算法步骤可知,AdaBoost集成学习算法的关键是如何更新样本权重,即步骤5中的权重更新公式。事实上,可将该公式改写为如下形式
即当某个样本被前一个弱学习器错误预测时,该样本的权重会被放大\(e_i/(1-e_i)\)倍,以便在后续弱学习器构造过程中得到应有的重视。
3.GBDT集成学习算法
GBDT的含义为梯度提升决策树(Gradient Boosting Decision Tree,GBDT),它是一种以回归决策树为弱学习器的集成学习模型,主要用于完成机器学习的回归任务。与随机森林模型类似,GBDT集成学习模型通常使用CART决策树(回归树)模型作为弱学习器。GBDT模型的训练构造算法采用迭代方式逐个构造组成GBDT集成模型的各个弱学习器,因而属于基于弱学习器串行训练方式的Boosting集成学习算法,但GBDT集成学习算法的基本思想与前述AdaBoost等Boosting算法有很大的差异。
对于GBDT集成模型中任一非初始弱学习器,该弱学习器以前一轮迭代中的集成学习模型对训练样本的预测误差作为输出,通过与该预测误差进行拟合的优化计算方式完成对该弱学习器的构造,并使用作为该弱学习器输出结果的预测误差对集成学习模型的预测结果进行补偿或校正,从而提高预测结果的准确性。因此,GBDT集成学习的实质是以迭代方式让集成模型逐步逼近理想的预测模型。
设某个回归任务的训练样本数据集为\(D=\{(X_1,y_1),(X_2,y2),\dots,(X_n,y_n)\}\),其中\(y_i\in\{-1,+1\}\)并根据样本集D构造了一个作为GBDT集成学习模型第一个弱学习器的初始回归决策树\(L_0\),则对于D中任意给定的一个训练样本X,决策树\(L_0\)对于X的预测输出与其标记值y之间的误差为\(e=\frac{1}{2}[L_0(X)-y]^2\)
为提升模型性能,需要通过一定的方式来改进模型\(L_0\)以减小预测误差。将误差e看做模型\(L_0\)的函数,则
使用上述函数作为优化的目标函数来改进模型\(L_0\),使用梯度下降法实现对上述优化问题的求解,则对上式求导可求得如下梯度
则梯度的反方向为\(y-L_0(X)\),应对模型\(L_0(X)\)往这个方向进行调整。
然而,由于单个回归决策树模型的结点数目较少,难以有效拟合所有训练样本的梯度方向,故通常无法直接根据上述方向对模型\(L_0(X)\)进行更新。
由于模型\(L_0(X)\)的更新方向\(y-L_0(X)\)为训练样本标记值与该模型预测结果之差,即模型\(L_0(X)\)的预测误差,故可构造一个新的模型\(L_1(X)\)来对模型\(L_0(X)\)的预测误差\(y-L_0(X)\)进行拟合。在对样本X进行预测时,由于\(L_1\)对于X的输出是对\(L_0\)输出的某个校正量,且校正方向一定是误差e减小的方向,故这两个模型的输出之和\(L_0(X)+L_1(X)\)一定比\(L_0(X)\)更加接近样本真实值y。
GBDT集成学习算法正是根据上述思路通过迭代方式逐步构造多个弱学习器,并逐步将它们集成为一个具有较强泛化性能的强学习器。
具体地说,首先根据训练样本数据集D构造一个新的数据集\(T_1\),并使用T1构造一个新的回归决策树模型\(L_1(X)\)作为GBDT集成学习模型的一个新增弱学习器。\(T_1\)的具体形式如下
其中,\(\nabla_i=y_i-L_0(X_i)\)。
GBDT集成学习算法的基本步骤如下。
- 构造初始学习器\(L^0(X)\)。令t=0,根据下式构造初始回归树\(L^0(X)=L_0(X)\):\(L_0(X)=\arg\min_c\sum_{(X_i,y_i)\in D}J(y_i,c)\)
- 其中,\(L_0(X)\)为只有一个根结点的初始回归决策树;c为使得目标函数最小化的模型参数;\(J(y_i,c)\)为损失函数。
-
\[J(y,g(X))=\frac{1}{2}[y-g(X)]^2 \]
- 其中,y为样本真实值或标注值;g(X)为单个回归决策树模型的预测值。
- 令t=t+1,并计算数据集D中每个训练样本的负梯度\(\nabla_i\):
-
\[\nabla_i=-\left[\frac{\partial J(y,L(X_i))}{\partial L(X_i)}\right]_{L(X)=L^t(X)} \]
-
- 构造新的训练样本集\(T_t\):\(T_t=\{(X_1,\nabla_1),\dots,(X_n,\nabla_n)\}\)
- 使用\(T_t\)作为训练样本集构造一棵回归树,并使用该回归树作为第t+1个弱学习器\(L_t(X)\),该决策树中第j个叶结点的输出值为:
-
\[C_{t, j}=\arg \min _c \sum_{\left(X_i, \nabla_i\right) \in T_i^j} J\left(y_i, L^t\left(X_i\right)+c\right) \]
- 其中,\(T_j^j\)表示第\(t+1\)个弱学习器的第j个叶结点所对应的数据集合。
- 上式表明弱学习器\(L_t(X)\)中每个叶结点的输出均使得上轮迭代所得集成模型\(L^{t-1}(X)\)的预测误差达到最小。
- 可将回归决策树\(L_t(X)\)表示为\(L_t(X)=\sum_j C_{t,j}I[(X_i,\nabla_i)\in T_t^j]\)
- 更新集成模型为\(L^t(X)=L^{t-1}(X)+L_t(X)\)
- 若未满足算法终止条件,则返回步骤2,否则,算法结束。
由以上分析可知,GBDT集成学习算法的基本思想是在当前集成模型所对应目标函数的梯度反方向上直接更新模型,由此实现对集成模型的优化。这种优化求解方法与梯度下降法比较类似,但与梯度下降法有着很大差别。因为梯度下降法根据目标函数值的迭代下降获得优化的模型参数,而GBDT集成学习算法的优化计算则是根据目标函数值的迭代下降直接获得作为集成模型的预测函数。
如前所述,使用梯度下降法优化计算模型参数w的迭代公式为
其中,\(F(w_k)\)是参数取值为\(w_k\)时的目标函数。可使用公式来迭代计算模型参数w的优化值。而对于GBDT集成学习算法,假设算法在第t次迭代后所得集成模型对应的预测函数为\(F_t(X)\),该算法则是直接对预测函数\(F_t(X)\)进行迭代计算,迭代方向为目标函数\(J(F(X))\)关于函数\(F(X)\)梯度的反方向,故可将GBDT集成学习算法表示为如下迭代形式
其中,\(step_t\)为迭代步长,通常取\(step_t=1\);\(\nabla J(F_t(X))\)按下式计算
GBDT集成学习模型具有较好的泛化性能,对多种类型的数据具有较强的适应能力,目前被认为是传统机器学习领域中对样本真实分布具有最好拟合效果的模型之一,已被广泛应用于知识发现与数据挖掘、视频图像处理与模式识别等多个领域。GBDT集成学习模型虽然用于回归任务,不过将该集成模型的连续型输出空间转化为分类任务的离散型输出空间,则可使GBDT集成学习模型适用于分类任务,这里不再赘述。