老饼讲解-机器学习 机器学习 神经网络 深度学习
集成方法

【训练】Adaboost的训练

作者 : 老饼 发表日期 : 2022-08-30 21:16:38 更新日期 : 2024-01-21 17:04:05
本站原创文章,转载请说明来自《老饼讲解-机器学习》www.bbbdata.com



本文讲解Adaboost的损失函数,以及Adaboost利用向前分步算法训练的思想与步骤

通过本文,可以掌握Adaboost是怎么进行训练的




  01.Adaboost的向前分步训练算法  



本节简单讲述Adaboost的向前分步训练方法的主流程



     Adaboost模型回顾     


Adaboost就是逐步增强式训练一系列的决策器进行共同决策
Adaboost的模型表达式为:

 

其中,                                                             
  : 第i决策器                                              
        : 决策器的权重系数,为正数                   




    Adaboost的分前向步训练算法-主流程    


Adaboost采用前向分步算法进行训练,
即逐个逐个决策器训练,先训练第一个,在第一个基础上,继续训练第二个....
每个决策器的训练目标都力求在当前最优,即把损失函数降到最低
直到新增决策器已无法减少误差,或达到最大决策器个数m
    
值得注意的是,Adaboost在训练第k个决策器  时
是把决策器 ​  和系数 拆开分别训练的,先训练  ​ ,后训练 系数  





  02.Adaboost的损失函数  




   Adaboost损失函数介绍   


由于Adaboost在训练时,是逐个决策器进行训练,
并且每个决策器的训练会拆分为决策器 ​  和系数 两部分分别训练
如果在训练 ​  和 时直接使用总损失函数,会过于臃肿,
所以Adaboost的损失函数共有三部分
 👉1. 整体的损失函数                                   
👉2. 单个决策器Dk的损失函数
           
👉3. 单个决策器系数
的损失函数      
 
 是整体的损失函数,代表最终所有决策器集成的模型的损失值                             
 是第k个决策器的损失函数,是整体损失函数 中关于 部分的独立导出       
 是第k个决策器系数的损失函数,是整体损失函数 中关于 部分的独立导出 




   Adaboost损失函数的具体表达式   


下面只展示Adaboost损失函数的表达式
各个损失函数的含义、推导,详见《Adaboost公式推导》,这里不再展开
 

整体损失函数表达式

整体损失函数 
采用的是指数损失函数:
 

其中是模型对第i个样本的预测值                         


Dk的损失函数表达式
Dk的损失函数表达式如下:
 

其中,代表前k-1 个决策器的决策值
可以理解为,就是Dk预测错误的样本的加权和(第i个样本的的权重为 

  的损失函数表达式
  的损失函数表达式如下:
 
其中:   

           

           
✍️老饼有话说:直接看这些公式是糊里糊涂的,必须看推导过程才能明白它们的含义






 03.Dk与αk的求解



本节讲述Dk和αk的求解方法,

这里仅展示方法,推导详情见《Adaboost公式推导》,

特别需要提醒的是,如果对公式感到迷惑,可以参考推导过程,自然明白



    Dk的求解    


Dk的求解思想
一般并不直接把作为决策器Dk的损失函数进行训练,
因为这样会入侵决策器原有的训练算法

留意到Dk的损失函数是错误样本的    累计和,
较友好的方法是决策仍用决策器自身的损失函数,
仅是将样本修改权重修改为:
 
这样既符合损失函数的目的,又不入侵决策器.
由于上式的计算量会随k的增大而增大,
一般的计算不用上式,而用如下迭代公式:
    
                                  
总的来说,的训练只需按决策器原有的训练方式进行训练就可以
只是需要在训练前使用以上公式更新样本的权重




    αk的求解    


第k个决策器的求解公式如下:
  
 
其中:  

  









 End 









联系老饼