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

【训练】GBDT的训练方法

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



GBDT是基是梯度提升而设计的集成式算法,

本文讲解GBDT是怎么训练的,包括GBDT的损失函数,GBDT的训练顺序和具体每棵树是怎么训练的




    01.GBDT模型与损失函数   




本节回顾GBDT的模型数学表达式及展示GBDT的损失函数




     GBDT的模型表达式回顾    


GBDT的模型数学表达式如下
                                         
  
 其中 
  
是 回归决策树 ,是学习率    




    GBDT的损失函数    


  GBDT的损失函数采用的是对数似然损失函数
如下:

 
 
 其中
 
是第i个样本的真实值    
          
是第i个样本的树预测值           





    02.GBDT的训练顺序与训练思路    




本节讲解GBDT的训练顺序,和每棵回归树的训练思路




     GBDT的训练顺序    


GBDT的训练顺序如下:
  
GBDT采用分步向前法训练,先训练阈值b,然后再逐棵树进行训练,直到满足终止条件




  GBDT中回归树的训练思路   


GBDT采用boosting逐棵树训练的方式,那么每棵回归树是如何训练的呢?
观察到损失函数是关于每个样本的树集合预测值gi的函数,
如果gi往负梯度方向移动,损失函数将下降
基于此思路,GBDT在训练一棵新的树时,
将当前树集合预测值gi在损失函数的负梯度,作为新树的拟合目标值

也就是说,每加一棵树,所有样本的树预测值就往损失函数的负梯度方向挪一下,
这就是梯度提升树GBDT,非常形象
事实上,GBDT-“梯度提升决策树”这个命名,就非常形象地解析了GBDT算法的特性:
1、使用一组决策树进行综合决策             
2、训练时使用提升方式,逐棵逐棵训练       
3、每棵树拟合值为树集合预测值的负梯度方向 






  03.GBDT的训练要点  




本节讲解GBDT的训练中的三个核心要点




   GBDT训练的三个核心要点   


GBDT的训练过程中共涉及三个要点,如下:
 👉1. 阈值b的求解  
👉2. 树的训练目标
👉3. 树节点的取值

   




   GBDT训练的三个要点详解   


下面我们解析三个要点的意义与思路,
相关公式的详细推导见《GBDT-公式推导》
   1. 阈值b   
阈值b是第一个需要求解的参数,它代表模型对所有样本的一个base评估
它的求解较为简单,由于它是第一个参数,此时g(x)=b,
于是损失函数就只是一个与b相关的函数,
  
令损失函数关于b的导数为0,并求解即可得到:
 
    2、回归树的训练目标    
回归树的训练是逐棵逐棵进行的,
每棵新树的训练,只需把新树的拟合值改为当前树预测值gi在损失函数的负梯度即可
最终每个样本的拟合值为:
  
✍️补充:关于回归树的训练
回归树的训练方法仍按一般回归树的方法进行训练
 需要注意的是,GBDT训练的每棵树是弱回归树
在训练回归树时,参数需调为训练一棵弱树,例如把最大分裂深度<=3等等
    3、树的节点取值    
 在回归树训练完成后,为了进一步降低损失函数,可以对树的节点取值进行优化
一般回归树的训练,节点的取值是节点上所有样本的均值,但我们可以针对损失函数进一步优化该值
记节点k的取值为,损失函数值与的关系为,只要令 的导数为0,进行求解即可
 最终确定的最优取值如下:
                                      
 其中                   
                                                 

 
  : 指回归树第k个节点上的所有样本






  参考资料  


● 《sklearn决策树训练结果参数解释 》:https://www.jianshu.com/p/02c8a6190ca2
● 《如何解释sklearn决策树树中的children_left属性_》 
     https://stackoverflow.com/questions/42075630/how-to-interpret-the-children-left-attributes-in-sklearn-decision-tree-tree
● 《深入理解GBDT二分类算法》:  https://zhuanlan.zhihu.com/p/89549390  (比较靠谱的推导)



联系老饼