作者:陈超
“本文共3400余字,数学公式原理不深,预计阅读时间15分钟”
AdaBoost是Adaptive Boosting的简称,属于集成算法(Ensemble Method)中Boosting类别中的一种。AdaBoost是非常成功的机器学习算法,由Yoav Freund和RobertSchapire于1995年提出,他们因此获得了2003年的哥德尔奖(Gödel Prize)。本文将从下面几个方面对AdaBoost进行展开:
- 算法思想和算法简易流程
- 算法实例和算法总结
- 从广义加法模型看AdaBoost
- sklearn库相关函数
一 算法思想和算法简易流程
在Agro的《XGBOOST(一)》一文中介绍了集成算法以及作为集成算法典型代表的Boosting算法。XGBOOST算法属于Gradient Boosting框架,是Boosting算法家族的一种。作为Boosting算法家族中出现更早也同样闻名的另外一种算法便是本文要论述的AdaBoost算法。Gradient Boost和AdaBoost 最显著的相同点都在于前一轮训练结果将用来调整本轮训练的样本,从而优化本轮训练出的模型,使得整个的模型更加精确。不同点在于Grandient Boost改变的是本轮训练的样本标签,而AdaBoost 则侧重于调整本轮样本的样本权重,从而改变样本的分布。
读者可以通过AdaBoost的算法流程来发现这一不同。算法的简易流程表述如下:
1. 确定样本集
2. 初始化样本数据的权重,如每个样本的权重为1/n(假设样本个数为n)
3. 进行1,2,...,T轮迭代
a. 归一化样本权重
b. 对样本集进行训练,并计算训练误差
c. 选择误差最小的分类器作为本轮的分类器
d. 根据预测结果更新样本数据的权重:预测错误样本增加权重,预测正确样本降低权重
e. 计算分类器的权重
4. 根据分类器的预测结果及其权重加权表决最终结果
下面是一个AdaBoost的训练迭代变化图,我们可以看到在每次迭代中版本的权重的变化,分类错误的样本权重的逐渐加大,而分类正确的样本权重逐渐减少的过程。