机器学习 Adaboost算法原理详解

Adaboost介绍

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

Adaboost步骤

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

下面介绍几条运算中需要用到的公式

误差率

误差率表示错误的个数占的比重,结合每个样本的权重的话,就变成了最右边的公式,I中表示分类错误的样本,w表示每个样本的权重,一共有N个样本。
在这里插入图片描述

权重系数

在步骤3说到,我们需要给每个分类器一个权重,最后再结合,我们需要定义一个权重系数。
在这里插入图片描述
权重系数,它表示弱分类器在最终分类器中的重要程度(可以得到弱分类器在最终分类器的权重)。
当e<=0.5时,a>=0,且a随着e的减小而增大,意味着误差率越小的分类器在最终分类器的作用越大。

例子

在这里插入图片描述
有10个样本,样本0.1.2.6.7.8是1类别,3.4.5.9是-1类别。
每个样本的权值都是1/10=0.1,
现在我们要考虑从哪里切一刀,使得误差率最小。
在这里插入图片描述
这里我们通过计算得到当分类值2.5时误差率最小,为0.3。
接着我们计算第一个分类器的权重系数:
这个a1代表第一个分类器在最终的分类函数中所占的比重为0.4236
在这里插入图片描述
在步骤2说到,我们要更新训练集的权重,有很多种方法对数据的权重进行改变,目的都是一样的
(对正确分类的数据减小权重,对错误分类的增加权重)。
在这里插入图片描述
上面就是对权值的更新,对正确分类的数据减小权重,对错误分类的增加权重,可用于下一轮的迭代。
在这里插入图片描述
在这里插入图片描述
第二个分类器的权重系数也可以计算出来,为0.6496,这个a2代表第二个分类器在最终的分类函数中所占的比重为0.6496。
同理我们可以继续对样本进行权重更新,构造第三个分类器,最后计算出误差率进而求第三个分类器权重系数为0.7514。
我们最后把三个弱分类器组合起来,成为一个强分类器
G(x)=sign(0.4236G1(X)+0.6496G2(X)+0.7514G3(X))(sign表示当x<0.取-1,当x>0,取1)
这就是Adaboost的一个构造过程,不复杂,但效果很好。

总结

Adaboost是一种集成算法,通过结合弱分类器来得到最终的强分类器

  • 优点: 泛化错误率低,易编码,可用在绝大部分分类器上,无参数调整
  • 缺点: 对离群点敏感(难以分类,权重会呈指数增长)

猜你喜欢

转载自blog.csdn.net/weixin_43172660/article/details/83186199
今日推荐