AdaBoost 算法

        AdaBoost 算法 是一种经典的集成学习算法,它将多个弱分类器集成起来,以达到较高的分类准确率,广泛应用于数据分类、人脸检测等应用中。尤其在人脸检测方面,AdaBoost 是非常经典、成功的一个算法。弱分类器被线性组合成为一个强分类器。

一、面临两个问题:

  1. 在每一轮,如何改变训练数据的概率分布或者权值分布。
  2. 如何将弱分类器组合成强分类器。

二、AdaBoost 的思路:

  1. 提高那些被前一轮弱分类器错误分类样本的权值,降低那些被正确分类的样本的权值。
  2. 采用加权多数表决。具体的,加大分类错误率低的分类器的权值,使其在表决中起较大作用,减少分类误差率大的弱分类器的权值,使其在表决中起较小作用。

三、训练目标:

最小化指数损失函数。

四、三部分组成:

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

五、具体步骤:

输人参数:e是预测误差,m 是需要构建的单决策器的个数,如:

if(x < 3 )
    y ﹦1
else
    y =-1

就是一个简单的单决策器,基于x 预测y。α是每个单决策器的不同权重。n 是数据集中点的个数。

W = [ 1/n,1/n,…,1/n ]   # W是一个数组,表示每个数据点的权重,初始相同

C = {};  # C 是一个集合,存放每次循环得到的最佳单决策器

For i = 1 : m

1) 在当前的权重W 下,尝试各种不同的单决策器,直到找到预测误差最小的那个单决策器Hi(针对所有数据),使得误分的数据点的权重之和最小。对Hi预测错误的数据点,计算这些点的权重之和εi;

2) C ﹦C 与 Hi 的并集;

3) 计算分类器的权重αi, αi = 1/2 *log((1-εi + /εi) ;

4) 更新W 数组,

    w_right = exp( - αi) ,w_wrong = exp( αi) ; # exp 是自然对数

    预测正确的数据点,原始权重乘以w_right;

    预测错误的数据点,原始权重乘以w_rong;

5) W = W/sum(W) ;    # 规范化W,规范化之后,使各元素之和为1

6) 对C 中保留的所有分类器,集成决策器为:H_all = α1 * H1 + …αi* Hi

7)使用H_all对所有数据点再次预测,如果 H_a11 预测的误差e为0 或小于某个阈值,终止 for 循环;否则继续 for 循环。

六、AdaBoost的优缺点

1、AdaBoost算法优点

  1. 在Adaboost的框架下,可以使用各种回归分类模型来构建弱学习器,非常灵活。
  2. AdaBoost具有很高的精度,训练误差以指数速率下降。
  3. 相对于bagging算法和Random Forest算法,AdaBoost充分考虑的每个分类器的权重。

2、Adaboost算法缺点

  1. AdaBoost迭代次数也就是弱分类器数目不太好设定,可以使用交叉验证来进行确定。
  2. 数据不平衡导致分类精度下降。
  3. 训练比较耗时,每次重新选择当前分类器最好切分点。
  4. 对异常样本敏感,异常样本在迭代中可能会获得较高的权重,影响最终的强学习器的预测准确性。

3、AdaBoost应用领域

  1. 模式识别、计算机视觉领域,用于二分类和多分类场景
  2.  

参考:

  • 《数据挖掘必备算法详解》
  • https://blog.csdn.net/u012258999/article/details/42457577

你可能感兴趣的:(机器学习,算法,Adaboost,机器学习)