GBDT是集成学习中的一员,想要理解梯度提升,必须先理解什么是提升树,想理解提升树要了解什么是提升方法。
提升方法本身是采用了加法模型(基函数的线性组合)和前向分步算法,从弱学习算法出发,反复学习,得到一系列弱学习器,然后通过组合弱学习器得到强学习器。当每个弱学习器是CART树的时候,就是提升树。对于回归问题一般采用平方误差作为损失函数,分类问题采用指数损失函数,一般问题用一般的损失函数。
一、提升树
每一步生成一棵树,不断优化当前的学习器,用优化后的学习器学习到的值,和原始标签数据计算残差,继续将残差作为下一棵树的初始数据进行拟合,每一棵树都是CART回归树,因为每次迭代拟合的目标是残差,是连续值。
回归问题中提升树的生成方法: 二、梯度提升那么为什么要用负梯度呢?对于损失函数是平方误差的回归问题,我们可以简单优化,但是对于一般的损失函数用损失函数的负梯度来拟合本轮损失的近似值,利用最速下降法的近似方法来起到和回归问题中的残差近似的效果。
三、梯度提升实例 四、梯度提升实例用一个稍微复杂一点点的例子来说明一下,上个例子中只有一个特征,不易理解。要求最大深度为3,树5棵。
调用sklearn跑出来的5棵树如下图,初始值,f0(x)=1.475
第一棵树:
第二棵树: 第三棵树: 第四棵树: 第五棵树:详细解答过程:(感谢大神) mp.weixin.qq.com/s/ljC2dYfUz…