前面我们讲了决策树,以及为了避免单颗决策树过拟合问题而诞生的集成算法随机森林算法。
但是随机森林有一个问题,因为每一棵树都是独立的,所以即使前面的树有优点也不能充分利用,这就让人觉得很浪费。那有没有一种可能,让每次预测在上一轮的基础上进行,重点去关注上一轮没有预测正确的样本,这样就能取长补短整体不就更完美了嘛?这也就是AdaBoost的核心思想。
目录
1. AdaBoost简介
对于Adaboost而言,每一棵基础决策树的构造都基于上一棵基础决策树的分类结果。如果前一棵基础决策树将样本点预测错误,那么本轮就会加大被预测错的样本点的权重,然后再进行预测,因此每一轮的预测会更关注上一轮被分类错误的样本。那么,Adaboost的流程就可以简单概括如下。
2. AdaBoost算法步骤
结论就是这么个结论。学到这里基本上就够用了,但对于更有求知欲的你,可能会好奇这些公式怎么得到的,下面我们就来从头推导一下。
3. 相关公式推导
我们把上面式子分成两部分看
4. AdaBoost优点
- 适用于各种分类器:AdaBoost可以与各种类型的基分类器结合使用,例如决策树、神经网络、支持向量机等,因此具有很强的灵活性和通用性。
- 不容易过拟合:AdaBoost通过迭代训练,在每一轮迭代中调整样本权重,将更多关注于错误分类的样本,从而减少了过拟合的风险。
- 高精度:AdaBoost能够结合多个弱分类器,提高整体分类器的性能,训练误差可以以指数速率下降。
5. AdaBoost缺点
- 训练时间长:AdaBoost是一个迭代算法,当基分类器数量较多或数据集较大时,训练时间会显著增加。
- 对数据不平衡问题敏感:如果某个类别的样本数量远远大于其他类别,AdaBoost可能会倾向于错误地分类这些较少的类别样本
- 需要仔细调节参数:涉及的一些参数(如学习率和基分类器的数量)需要仔细调节,以达到最佳性能。不正确的参数选择可能会导致模型性能下降或过拟合的问题。
- 对噪声和异常值敏感:因为AdaBoost会关注错误分类的样本,如果数据中存在噪声或异常值,这些样本可能会被错误分类,从而影响整个模型的性能。