Boosting系列算法之AdaBoost算法

 接自https://blog.csdn.net/Y_hero/article/details/88381259 ,由上一篇总结我们已经初步了解了集成学习以及Boosting的基本原理,不过有几个Boosting具体的问题没有详细解释:

1)如何计算学习误差率e?

2) 如何得到弱学习器权重系数α?

3)如何更新样本权重D?

4) 使用何种结合策略?

只要是boosting大家族的算法,都要解决这4个问题。那么Adaboost是怎么解决的呢?

1.Adaboost分类算法

Adaboost是一种boosting算法,表示自适应boosting。假设我们的训练集样本是:
训练集
则训练集在第K个弱学习器的输出权重为:
输出权重
可以看出,第一个弱学习器的输出权重就是样本集中各样本所占权重。

接下来我们看第一个问题;如何计算学习误差率e?

 分类问题的误差率很好理解和计算。由于多元分类是二元分类的推广,这里假设我们是二元分类问题,输出为{-1,1},则第k个弱分类器Gk(x)在训练集上的加权误差率为:
加权误差率
加权误差率=失败样本数*样本权重之和

接着我们来看第二个问题;如何得到弱学习器权重系数α?

对于二元分类问题,第k个弱分类器的权重系数为:
弱学习器的权重系数
为什么这样计算弱学习器权重系数?从上式可以看出,如果分类误差率ek越大,则对应的弱分类器权重系数αk越小。也就是说,误差率小的弱分类器权重系数越大。具体为什么采用这个权重系数公式,我们在讲Adaboost的损失函数优化时再讲。

第三个问题:如何更新样本权重D?
假设第k个弱学习器的样本集权重系数为
在这里插入图片描述
那么第K+1个弱学习器的样本集权重系数为:
Boosting系列算法之AdaBoost算法_第1张图片
根据上式我们可以看出,如果第i个样本分类错误,导致样本的权重在第k+1个弱学习器重增大,如果分类正确,则权重在第k+1个弱分类器中减少.具体为什么采用样本权重更新公式,我们在讲Adaboost的损失函数优化时再讲。

最后一个问题是集合策略。Adaboost分类采用的是加权表决法,最终的强分类器为
强分类器
以上是adaboost的分类算法。

2.Adaboost分类问题的损失函数优化

 刚才上一节我们讲到了分类Adaboost的弱学习器权重系数公式和样本权重更新公式。但是没有解释选择这个公式的原因,让人觉得是魔法公式一样。其实它可以从Adaboost的损失函数推导出来。

从另一个角度讲, Adaboost是模型为加法模型,学习算法为前向分步学习算法,损失函数为指数函数的分类问题。

模型为加法模型好理解,我们的最终的强分类器是若干个弱分类器加权平均而得到的。

前向分步学习算法也好理解,我们的算法是通过一轮轮的弱学习器学习,利用前一个弱学习器的结果来更新后一个弱学习器的训练集权重。也就是说,第k-1轮的强学习器为
    在这里插入图片描述
    而第k轮的强学习器为
    在这里插入图片描述
    两式比较得:
    在这里插入图片描述
可见强学习器的确是通过前向分步学习算法一步步而得到的。

Adaboost损失函数为指数函数,即定义损失函数为
    在这里插入图片描述
    利用前向分步学习算法的关系可以得到损失函数为
    在这里插入图片描述

3.Adaboost小结

到这里Adaboost就写完了,前面有一个没有提到,就是弱学习器的类型。理论上任何学习器都可以用于Adaboost.但一般来说,使用最广泛的Adaboost弱学习器是决策树和神经网络。对于决策树,Adaboost分类用了CART分类树,而Adaboost回归用了CART回归树。

这里对Adaboost算法的优缺点做一个总结。

Adaboost的主要优点有:

1)Adaboost作为分类器时,分类精度很高

2)在Adaboost的框架下,可以使用各种回归分类模型来构建弱学习器,非常灵活。

3)作为简单的二元分类器时,构造简单,结果可理解。

4)不容易发生过拟合

Adaboost的主要缺点有:

1)对异常样本敏感,异常样本在迭代中可能会获得较高的权重,影响最终的强学习器的预测准确性。

你可能感兴趣的:(机器学习,AdaBoost,机器学习,算法)