adaboost算法是boosting系列算法的一种,boosting系列算法是串行生成多个弱学习器,并根据结合策略得到强学习器。Adaboost算法能用于分类和回归,本文只介绍分类算法。
上篇文章讲到了boosting系列的算法思想,adaboost算法是它的具体实现。
boosting系列算法都需要解决下面几个问题:
1)如何计算学习误差率e
2)如何得到弱学习器的系数α
3)每次迭代过程中,如何更新样本权重D
4)采用何种结合策略
本文介绍的adaboosting算法回答了上述的4个问题。
1. Adaboosting算法步骤
假设训练集样本为:
第k轮迭代的数据集样本权重为:
初始化样本权重为:
下面基于boosting系列算法的4个基本问题来介绍Adaboost算法
1) 学习率误差的计算
其中为第k轮弱学习器的输出。
2)如何得到弱学习器的系数α
表示第k轮迭代的弱学习器的系数。
3)如何更新样本权重D
表示第k轮迭代过程中,第i个样本的权重。
4)采用何种结合策略
Adaboost算法采用加权平均的方法,并通过sign函数得到最终的分类结果:
2. Adaboost算法的几个知识要点
Adaboost算法一系列弱学习器的加权平均,暂不考虑sign函数(因为不影响算法的思想),有:
由上式可知,Adaboost算法是一种加法模型。
令表示为第k轮迭代后的强学习器,由加法模型可得:
Adaboost算法的损失函数为指数函数,即:
根据本节介绍的这几个知识点,可反推出样本权重的更新公式和弱学习器的权重系数,具体请参考https://www.cnblogs.com/pinard/p/6133937.html。
Adaboost的优点在于简单,且模型不易过拟合。缺点是若数据集包含了异常样本,则异常样本在迭代过程中会获得较高的权重,导致模型分类性能较差。
欢迎扫码关注: