根据弱模型的表现在下一轮训练中改变样本的权重,具体而言就是:让弱模型在做错的样本中在后续学习中受到更多的关注,同时让弱模型表现好的样本在后续训练中获得更少的关注;
最后根据弱模型的表现决定弱模型的话语权,即投票表决时的可信度。
那么上述过程就产生了两个问题:
在每一轮训练中如何改变样本的权重;
如何将弱分类器组合成为一个强分类器。
AdaBoost针对第一个问题提高错误分类样本的权重降低正确样本权重的做法,对于第二个问题AdaBoost采用加权多数表决的方式,具体来说就是加大误差率小的弱分类器的权值,在表决中起到更大的作用,同时减小误差率大的分类器的权重,使其话语权变小。具体算法过程为:
“”“”
输入:样本数量N的数据集、弱分类器算法、迭代次数M
输出:强分类器G
初始化数据集的样本权重W0=(w01,w02,...,w0N);
对于迭代次数1~M:
根据弱分类器算法和权重训练出一个弱分类器gk,并计算加权错误率ek:
根据加权错误率,计算权重的更新的大小为:
根据权重更新的大小对样本进行权重进行更新:
对弱分类器进行加权集成,形成强分类器:
“”“”
在用Boosting进行提升学习过程中,不宜选择学习能力较强的模型,这样可能会导致提升没有意义或者不兼容,因为Boosting是让弱模型专注某一个方面,最后再进行集中表决,若使用较强的模型的模型,可能包含了多个方面,最后表决出现模棱两可的情况导致Boosting失去作用,可能模型在第一次产生模型就已经达到了最优,使得模型没有提升空间。
具体解释如下:Boosting的期望、方差可用下式表示:
可以发现,当选去强模型时,其具有较大的方差δ,从而导致整体的方差变大,防止过拟合的能力变差,因此必须选择弱模型作为基分类器。从期望公式来看,随着基分类器的增多,整体期望也就越接近真实值,整体模型准确度提高。但准确率并不会无限逼近1,正因为随着训练的进行,整体的方差变大,防止过拟合能力变差,导致准确度下降。
所谓的比较弱的弱模型比如说是限制层数的决策树,最极端的情况下就是只有1个决策树桩的决策时,选用该弱分类器就成为了提升树(Boosting Tree),提升树既可以用于分类也可用于回归。
提升树提升树是Boosting的弱分类器采用决策树的一种算法,这里主要说明回归树,为后面GBDT做一个铺垫,提升树是通过拟合上一颗树的残差,生成一颗新的树,因此每次都仅有一个树桩。下面是提升树的生成原理。
假设上一轮所学习到最终的强分类器为fm-1(x)(叠加之后的),那么此时的损失函数为:
假设在本轮迭代中学习到的弱分类器hm(x),那么损失函数可以表示为(采用平方损失函数),通过最小化损失函数求hm(x):