AdaBoost是集成学习(ensemble learning)的一种

集成学习通过结合多个(弱)学习
弱学习器指的是性能不太好的学习器,比如一个准确率略微超过50%的二分类器。
当犯错概率独立的基学习器个数M很大的时候,集成后的放错概率接近0:大多数人同时犯错的概率是比较低的。

集成学习的分类

按照每个基学习器之间是否存在依赖关系可以分为两类:
1.基学习器之间存在强依赖关系,一系列基学习器需要串行生成,代表算法:Boosting
2.基学习器之间不存在强依赖关系,一系列基学习器可并行生成,代表算法:Bagging随机森林

Boosting系列算法

Boosting系列算法的主要思想和步骤:

1.先用每个样本权重相等的训练集训练一个初始的基学习器
2.根据上轮得到的学习器对训练集的预测表现情况调整训练集中的样本权重(提高被错分类的样本的权重,使得在下轮训练中得到更多的关注),然后据此训练一个新的基学习器。
3.重复2直到M个基学习器,最终的集成结果是M个基学习器的组合。

1.Adaboost-------adaptive boosting

按照上面的思想,就会有两个主要问题:
1.如何调整每一轮的训练集中的样本权重?
2.如何将得到的M个组合成最终的学习器?
算法采取的方式是:
1.提高上一轮被错误分类的样本的权值,降低被正确分类的样本的权值
2.线性加权求和:误差率小的基学习器拥有较大的权值,误差率大的基学习器拥有较小的权值

图片说明

注意:标准Adaboost算法只适用于二分类任务
训练数据集合如下:

图片说明

1.初始化权重

图片说明

*2.重复M次得到M个基学习器 *

(1)按照样本权重分布,训练数据得到m个基学习器:

图片说明

(2)计算第m个基学习器在加权训练集上的分类误差率:

图片说明
上式中 I(⋅) 是指示函数,考虑更加周全的AdaBoost算法在这一步还应该判断是否满足基本条件(例如生成的基学习器是否比随机猜测好), 如果不满足,则当前基学习器被抛弃,学习过程提前终止。

(3)计算第m个基学习器的系数(即最终集成使用的基学习器的权重):

图片说明

(4)更新训练样本的权重

图片说明

图片说明

3.构建最终分类器的线性组合

图片说明
所有的 αm 的和并不为1(因为没有做一个softmax操作)

AdaBoost算法解释,为什么要这么做算法????

向前分布算法:

AdaBoost算法最终模型表达式:
图片说明

这是一个累加的值,希望效果好------>经验误差最小!!!
图片说明

求解上述复杂优化问题的思想:
因为是累加的模型----->每一步只学习一个基学习器和对应的权重---->不断迭代得到最终模型
m-1轮迭代之后可以得到最优模型
图片说明
这样,前向分步算法就通过不断迭代求得了从 m=1 到 m=M 的所有基分类器及其权重

损失函数

指数损失函数:
图片说明

指数损失函数是分类任务原本0/1损失函数的一致(consistent)替代损失函数,由于指数损失函数有更好的数学性质,例如处处可微,所以我们用它替代0/1损失作为优化目标。
https://tangshusen.me/2018/11/18/adaboost/

AdaBoost算法是一个加性模型,将其简化成前向分步算法求解;
将0/1损失函数用数学性质更好的指数损失函数替代

2.Boosting tree