首页 > 代码库 > AdaBoot算法学习笔记

AdaBoot算法学习笔记

算法原理

相比单一的学习器,集成Ensemble的思想是将不同的分类器组合,以期得到更优的(组合)模型用于预测。根据实现的不同,集成算法又有多种形式:

  • 不同算法集成
  • 相同算法的不同参数(设置)集成
  • 使用数据集的不同部分

集成Ensemble算法主要分为Bagging和Boosting,AdaBoost是Boosting算法的主要代表,是"Adaptive Boosting"(自适应增强)的缩写,由Yoav Freund和Robert Schapire在1995年提出。它的自适应在于:前一个基本分类器分错的样本会得到加强,加权后的全体样本再次被用来训练下一个基本分类器。同时,在 每一轮中加入一个新的弱分类器,直到达到某个预定的足够小的错误率或达到预先指定的最大迭代次数。

整个Adaboost 迭代算法就3步:

  1. 初始化训练数据的权值分布。如果有N个样本,则每一个训练样本最开始时都被赋予相同的权值:1/N。
  2. 训练弱分类器。具体训练过程中,如果某个样本点已经被准确地分类,那么在构造下一个训练集中,它的权值就被降低;相反,如果某个样本点没有被准确地分类,那么它的权值就得到提高。然后,权值更新过的样本集被用于训练下一个分类器,整个训练过程如此迭代地进行下去。
  3. 将 各个训练得到的弱分类器组合成强分类器。各个弱分类器的训练过程结束后,加大分类误差率小的弱分类器的权重,使其在最终的分类函数中起着较大的决定作用, 而降低分类误差率大的弱分类器的权重,使其在最终的分类函数中起着较小的决定作用。换言之,误差率低的弱分类器在最终分类器中占的权重较大,否则较小。

 

AdaBoost算法过程

 技术分享

 

Reference:

【1】Adaboost 算法的原理与推导

【2】深入浅出ML之Boosting家族

AdaBoot算法学习笔记