文章目录

Boosting是集成学习算法之一。通过整合多个弱分类器,从而形成一个强分类器。正所谓“三个臭皮匠,顶个诸葛亮”.

核心思想:

先从初始训练集训练出一个基学习器,再根据基学习器的表现对训练样本分布进行调整,使得先前基学习器做错的训练样本在后续受到更多关注,即对分类错误的样本加大权重,对正确分类的样本减少权重。然后基于调整后的样本分布来训练下一个基学习器,如此重复进行,直至基学习器数目达到事先指定的值T,最终将这T个基学习器进行加权结合。

流程如下:

给出任意一个弱学习算法和训练集表示某个特征空间。
初始化时,需要根据特征空间中原始训练集的分布来给每一个样本分配权值。(AdaBoost为训练样本指定分布为1/n,即每个训练样本的权重都相同)。
调用弱学习算法进行T次迭代,每次迭代后,按照训练结果更新训练集上的分布,对训练失败的训练样本赋予较大的权重,使得下一次迭代更加关注这些样本,从而得到一个基本分类器序列,每个基本分类器也赋予一个权重,预测效果好的,相应的权重越大。
T次迭代之后,在分类问题中最终的分类器采用带权重的投票法产生。

Boosting算法族最著名的的代表就是AdaBoost

Adaboost的原理

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

具体说来,整个Adaboost 迭代算法就3步:

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