简单易懂的人工智能系列:Boosting(AdaBoost篇)

Boosting是一种与Bagging很类似的技术。Boosting的思路则是采用重赋权(re-weighting)法迭代地训练基分类器,主要思想:

  • 每一轮的训练数据样本赋予一个权重,并且每一轮样本的权值分布依赖上一轮的分类结果。
  • 基分类器之间采用序列式的线性加权方式进行组合。

从上图我们可以看出boosting的流程,首先使用一个机器学习算法,可以得到一个模型,将这个模型作用域训练样本,通过对预测错误的样本权重增大的方式,更加关注那些错误的样本数据,然后再使用机器学习算法作用到这个存在加权的样本上,获得新的模型,一直重复这个过程(不断改变增加错误样本的权重),获得N个模型,最后把N个模型加权线性叠加起来,得到最终的模型:

                                           

这就很想我们平时做习题,不断加重对错题的训练,最终使得错误率下降。

与Bagging的区别

  • 样本选择上:每一轮的训练集不变,只是训练集中每个样例在分类器中的权重发生变化。而权值是根据上一轮的分类结果进行调整。
  • 样例权重:Boosting:根据错误率不断调整样例的权值,错误率越大则权重越大。
  • 预测函数:Boosting:每个弱分类器都有相应的权重,对于分类误差小的分类器会有更大的权重。
  • 并行计算:各个预测函数只能顺序生成,因为后一个模型参数需要前一轮模型的结果。

将不同的分类算法套入到此类算法框架中一定程度上会提高了原单一分类器的分类效果,但是也增大了计算量。

下面是将决策树与这些算法框架进行结合所得到的新的算法:

  • Bagging + 决策树 = 随机森林
  • AdaBoost + 决策树 = 提升树
  • Gradient Boosting + 决策树 = GBDT

本文主要的主角是即AdaBoost。

AdaBoost

说明性的栗子

首先看第一行,我们有一个最左侧的这样一个数据集1(二分类,正例+,负例 -),通过算法生成一个分类器1,将结果分成两部分(左边正,右边负),可以看到有三个正例被错分,我们加大他们的权重,于是我们得到一个分类模型1和基于这个模型增大权重的训练集2

然后看第二行,我们接着用训练集2来训练,同样生成了一个分类器2(左侧正,右侧负),和基于分类器2的增大错误记录权重的训练集3

最后看第三行,然后以同样的方法,训练集3继续训练,得到分类器3。这是我们可以发现,将分类器1,2,3叠加起来的结果为分类准确率提高的分类器模型。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章