本博文仅用于个人学习
1.作用:
Adaboost(Adaptive Boosting)是一种集成学习算法,用于提高分类器的准确性。它的主要作用是通过组合多个弱分类器(即准确率略高于随机猜测的分类器)来构建一个强分类器。
2.算法流程:
1.首先在数据集D中选取正确率最高的特征用F1表示。
2.将数据集D分为两类,{F1分对的数据]和{F1分错的数据]。
3.以较大概率取F1分错的数据,以较小概率去F1分对的数据,形成新的集合D2。
4.在D2中选取正确率最高的特征,用F2表示。
5.将D分为: [F1、F2都分对的数据],[F1分对而F2分错的数据,以及F1分错而F2分对的数据],[F1,F2都分错的数据]。
6.以最大概率取{F1,F2都分错的数据],以次大概率取(F1分对而F2分错的数据,以及F1分错而F2分对的数据],以最小概率取F1、F2都分对的数据],得到数据集D3。
7.在D3中选取正确率最高的特征,用F3表示7循环,以此类推。
8.用各个特征的线性组合构建分类器。
3.AdaBoost算法优点:
1、很好的利用了弱分类器进行级联。
2、可以将不同的分类算法作为弱分类器。
3、AdaBoost具有很高的精度。
4、相对于bagging算法和Random Forest算法,AdaBoost充分考虑的每个分类器的权重。
5、Adaboost提供一种框架,在框架内可以使用各种方法构建子分类器。可以使用简单的弱分类器,不用对特征进行筛选,也不存在过拟合的现象。
缺点:
1、AdaBoost迭代次数也就是弱分类器数目不太好设定,可以使用交叉验证来进行确定。
2、Adaboost会使得难于分类样本的权值呈指数增长,训练将会过于偏向这类困难的样本,导致Adaboost算法易受噪声干扰。
3、Adaboost依赖于弱分类器,而弱分类器的训练时间往往很长。
4.对异常样本比较敏感,异常样本在迭代过程中会获得较高的权值,影响最终学习器的性能表现。
4.相关面试题
(1)简述一下 Adaboost 的权值更新方法。
答:参考浙江大学胡浩基老师的《机器学习》课程中AdaBoost(自适应提升)。特征选择 – 自适应提升(AdaBoost)_哔哩哔哩_bilibili
约21分钟处。
(2)训练过程中,每轮训练一直存在分类错误的问题,整个Adaboost却能快速收敛,为何?
答:每轮训练结束后,AdaBoost 会对样本的权重进行调整,调整的结果是越到后面被错误分类的样本权重会越高。而后面的分类器为了达到较低的带权分类误差,会把样本权重高的样本分类正确。这样造成的结果是,虽然每个弱分类器可能都有分错的样本,然而整个 AdaBoost 却能保证对每个样本进行正确分类,从而实现快速收敛。
(3) Adaboost 的优缺点?
答:优点:能够基于泛化性能相当弱的的学习器构建出很强的集成,不容易发生过拟合。
缺点:对异常样本比较敏感,异常样本在迭代过程中会获得较高的权值,影响最终学习器的性能表现。
(4)AdaBoost 与 GBDT 对比有什么不同?
答:区别在于两者boosting的策略:Adaboost通过不断修改权重、不断加入弱分类器进行boosting;GBDT通过不断在负梯度方向上加入新的树进行boosting。