介绍
- AdaBoost,是“Adaptive Boosting”(自适应增强)的缩写,是一种机器学习方法,由Yoav Freund和Robert Schapire于1995年提出。
思想
- 前面的模型对训练集预测后,在每个样本上都会产生一个不同损失,AdaBoost会为每个样本更新权重,分类错误的样本要提高权重,分类正确的样本要降低权重,下一个学习器会更加“关注”权重大的样本;每一次得到一个模型后,根据模型在该轮数据上的表现给当前模型设置一个权重,表现好的权重大,最终带权叠加得到最终集成模型。
AdaBoost分类
AdaBoost回归
AdaBoost的两个权重
学习器的权重
样本的权重
AdaBoost思想
刚开始有一份等权的数据,训练一个模型,这个模型会有一个错误率,根据这个错误率去求一个权重,就可以给这个学习器一个权重(学习器的权重),上个学习器分错的样本,需要调整权重,错的升高权重,对的降低权重(样本的权重)
AdaBoost思想的优缺点
- 优点:
• 可以使用各种回归分类模型来构建弱学习器,非常灵活
• Sklearn中对AdaBoost的实现是从带权学习视角出发的,思想朴素,易于理解
• 控制迭代次数可以一定程度防止发生过拟合 - 缺点:
• 对异常样本敏感,异常样本在迭代中可能会获得较高的权重,影响最终预测准确性。
AdaBoost小结
- 提升树
• AdaBoost思想结合决策树的基学习器,就得到提升树模型。提升树做分类时,基学习器选CART分类树;回归时选CART回归树 - 两个视角
• 带权学习视角、前向分布学习视角 - 前向分步学习的说明
• 在前向分步学习视角下,当提升树的损失函数是平方损失和指数损失时,优化是简单的,但对一般损失函数而言优化难度大,即没有通用的求解方案
• 因此2001年,Friedman提出了一个通用方案——梯度提升,起名为GBDT