043.GBDT 简要梳理

GBDT

Gradient Boost Decision Tree 是一种学习策略,用Gradient Boosting的策略训练出来决策树模型。模型的结果是一组回归分类树的线性组合(CART Tree Ensemble)。

从第二棵树开始,学习的是前面一颗树预测结果的残差,就像是不断地做题并挑选之前的错题。模型最后的输出,是一个样本在各个树中输出的结果的和。
在这里插入图片描述

在这里插入图片描述

GBDT对弱分类器的要求一般是足够简单,并且是低方差和高偏差的。因为训练的过程是通过降低偏差来不断提高最终分类器的精度,(此处是可以证明的)。也正因此,每个分类回归树的深度不会很深。

因为采用了残差,GBDT最后的输出,是样本在各个树中输出的结果的和。

在这里插入图片描述

GBDT最大的好处在于,每一次残差运算也可视为,增大那些与预测值差距较大样本的权重,而差别较小的权重则趋于0。

示例:

在这里插入图片描述
在这里插入图片描述

区分:AdaBoost是分类树,其中通过权重 u “放大错误"

示例:GBDT解决回归问题

在这里插入图片描述
在这里插入图片描述
解析:
(1)中,初始化只是简单地选择一个常数,相当于一颗只有根节点的树

(2)中,m为迭代次数,每一次迭代,利用boosting生成一颗新的树

(2)a中,N为样本数目,r一般是残差的近似值,仅当损失函数等于平方损失函数时,求导得到的r才是正常情况下的残差。对于一般损失函数,r作为残差的近似。

(2)b中,对残差近似值 r 拟合,即根据损失函数拟合,最终相当于得到叶子节点的各划分区间。(划分)

(2)c中,根据前面一步得到的这些区域,线性搜索能估计这些叶子结点区间的值c使损失函数最小化。(划分后求代表值)

(2)d中,前面得到的cm作为一次迭代的学习结果,每一次迭代得到的cm的组合构成了最终经m次迭代得到的预测器。

关于梯度

在训练过程中,我们希望损失函数能不断减小,同时以尽可能快的速度及进行。所以,可以让损失函数沿着梯度方向的下降。这就是gbdt 的 gb的核心。 利用损失函数的负梯度在当前模型的值作为回归问题提升树算法中的残差的近似值去拟合一个回归树。gbdt 每轮迭代的时候,都去拟合损失函数在当前模型下的负梯度。

在这里插入图片描述

GBDT 如何选择特征和切分点

首先明确下,GBDT 如何选择特征和切分点这个问题,相当于问每一颗boosting tree的构建过程中,非叶子结点怎么选择特征和划分。

原始的GBDT的做法非常直接。首先遍历每个特征,然后对每个特征遍历它所有可能的切分点(一般是遍历特征值),找到最优特征 m 的最优切分点 j。

以回归为例,在第二层遍历中,模拟切分后,将左右子树结点数据的均值作为预测值。再加入第三层遍历(能否向量化?),左右分别计算平方误差,取左右都算在内的最小值。最后,得到第一层下 Loss Function 的最小值及对应的特征和切分点。

在这里插入图片描述

GBDT 如何构建特征(可以加上LR应用)

实际上应该说,GBDT 能产生特征的组合。

组合后,例如在点击通过率(CTR)预估中,工业界一般会采用逻辑回归去进行处理。我们知道,想让逻辑回归处理非线性的数据,其中一种方式便是组合不同特征,增强逻辑回归对非线性分布的拟合能力。

在这里插入图片描述
如上图,GBDT根据特征和切分,最终得到两棵树和五个叶子节点。我们可以依次构建一个五纬的特征向量,每一个纬度代表了一个叶子节点。

假设一个样本落在了左二和右一两个叶子节点,我们可以得到一个向量[0,1,0,1,0] 作为该样本的组合特征,和原来的特征一起输入到逻辑回归当中进行训练。实验证明这样会得到比较显著的效果提升。

此外,单独的使用GBDT模型,容易出现过拟合,因而在实际应用中往往使用 GBDT+LR的方式。

GBDT 如何用于分类

要说明,GBDT 无论用于分类还是回归,一直都是使用的CART 回归树。

如果选用的弱分类器是分类树,类别线性组合是没有意义的。而采用了残差(模型的负梯度值),这样做才有意义。

待理解

针对样本有 k 类的情况,我们实质上是在每轮的训练的时候是同时训练 k 颗树。对于k棵树中的每一颗树,如果一个样本属于该树对应的类,则标签为1,否则为0。

分为k棵树,又将标签转换为0/1后,则可根据前面回归树的方法继续训练。

每一轮学习的大致流程:初始化k棵树的残差y为0——每棵树进行训练——根据训练得到的预测值,利用 softmax 产生概率p——更新残差,y = y-p

在这里插入图片描述

概率公式:
在这里插入图片描述
全部训练完后,输入一个新样本,同样可以根据上述公式得出该样本属于某个类别 y’ 的概率。


参考资料:

  1. 机器不学习:机器学习时代三大神器
  2. 机器学习算法GBDT
  3. 《统计学习方法》——李航

猜你喜欢

转载自blog.csdn.net/u013598957/article/details/109697290