欢迎来到Introzo百科
Introzo百科
当前位置:网站首页 > 技术 > 集成学习算法——adaboost

集成学习算法——adaboost

日期:2023-09-15 21:06

-->

  adaboost是boosting类集成学习方法中的一种算法,全称是adaptive boost,表示其是一种具有自适应性的算法,这个自适应性体现在何处,下面来详细说明。

1.adaboost算法原理

  在boosting算法框架中,新的弱学习器是基于已有的弱学习器的输出结果生成的,已有的弱学习器产生的损失(用损失函数来评估)是固定的,而新的弱学习器的作用就是使得当前模型(包含它自身)损失尽可能减小,达到局部最优。

  adboost算法关注的是样本的输出(这里有点废话了,每个模型关注的都是样本的输出结果),它通过赋予、调整每个样本的权重值,来调整样本在构建新弱学习器起到的作用,样本权重越大,则起到的作用越大。以二分类问题为例,若某个样本类别在当前预测错误,那么新的弱学习器将尽量保证它们的类别预测正确,下图

在弱学习器1中,样本s3被错误分类,那么在构造弱学习器2时,样本s3会被赋予较大的权重,样本s1、s2、s4被赋予较小的权重,也即是说弱学习器2将着力于将样本s3类别预测正确。 在弱学习器2中,样本s4的类别又被预测错误,同样的,样本s4权重提升。

  样本的最终输出结果是每个弱学习器输出结果的线性加权组合。在adboost算法中,除了对样本赋予权重并自适应调整,还会给每个弱学习器赋予权重,这样adboost的最终输出可以表达为如下形式

  

其中 

 2.目标函数

  损失函数定义了模型的损失,而损失最小化则是模型构建过程的目标。一般的损失函数包含代价损失与正则化(惩罚模型复杂度)两项,但是adboost算法中损失函数只包含代价损失项,即只考虑模型误差。adaboost算法的损失函数比表示如下:

其中 

使用adaboost算法构建分类二分类(-1,1)模型时,使用的是指数损失函数,形式如下

注意,这里的类别设为-1,1仅仅是为了简化计算,类别用什么表示并不影响结果。将公式(3)代入公式(2)中,得到目标损失为

在公式(4)中,

由于二分类的标签使用了(-1,1),因此根据样本预测类别与真实类别是否相同,公式(5)还可以简化为如下形式

由于目标函数中两项都含有

其中

   到这里为止,二分类模型的目标函数已经给出。我们再来关注一下

 3.弱学习器

   从公式(7)可以看到,对任意的

                                                               

最小的

这个怎么理解?首先,我们用一批样本训练出一个弱学习器出来,那么这个弱学习器对这批样本的预测误差自然是最小的,毕竟是在训练集上的预测,总不会说随便搞个弱学习器出来预测误差会更小;其次,我们会在某一个特征上分裂样本,选择哪个特征以及哪个分裂点能得到最小的分类误差(带权重的误差)?选定误差最小的结果作为

4.弱学习器

  首先,定义一下弱学习器

                                                              

  回到公式(6)所示的目标函数中,由于

                                                       

等式两边同乘

求得

由公式(11)可以看到,

5.样本权重

  构建弱学习器

其中,

至此,我们已经解决了第1节中提出的疑问,如何更新样本权重、如何计算弱学习器的权重。

6.使用adaboost算法建模的流程

  了解以上内容后,在分类任务中,使用adboost算法建模的流程大致如下:

  • 初始化样本权值
  • for m in M:

(a)使用带权重的样本训练出弱学习器

                                            

(b)计算

     (c)计算弱学习器

(d)更新样本权重,得到

  • 输出最终模型,得到

    7.多分类问题

      adaboost算法刚提出时,只用于处理二分类问题,不过后来又有了出现了许多基于adboost算法而改进的算法,可以处理多分类问题,例如adaboost.m1算法、adaboost.m2算法等,处理多分类问题时就需要改变样本权重更新的方式了,这个后面再单独写文章介绍。

    8.弱学习器的学习率问题

      在第2节中提到,adaboost算法并未考虑正则化,但在实际使用adaboost算法建模时,一般则需要考虑,采取的方式是每个弱学习器乘以一个学习率 

    9.Real adaboost算法

      前面讲到的adaboost算法每个弱学习器的输出只能为

    其中,

    1. 初始化样本权重
    2. Do For 

           (1)基于带

            a. 在某一特征上对 

            b. 统计

            c.定义

            d.调整步骤a中特征选择、特征上样本划分方式,使

          (2)调整样本权重

                

           3.得到强分类器

        

      -->