目录:
- 导言
- GBDT算法
2.1 GBDT回归树
2.2 GBDT分类树
2.2.1 二分类
2.2.2 多分类 - Bosting提升树
3.1 为什么Boosting能够降低偏差
1 导言
常见的集成学习算法一般可以分为两大类:Boosting和Bagging。Boosting类的核心思想在于训练多个弱分类器,最终的结果是这n个弱分类器的和,每一个弱分类器的目标是学习前m个弱分类器的和与样本label的残差,因此Boosting这类算法需要弱分类器足够简单,并且是低方差、高偏差的模型,因为训练的过程是通过降低偏差不断提高精度的。
Boosting的典型代表便是GBDT,在GBDT的基础上还延伸出XgBoost、LightGBM、CatBoost等算法。Bagging的代表是随机森林算法,这类算法的目标是学习多个弱分类器,最终的结果是这n个弱分类器的加权平均,其中每个弱分类器的目标都是直接对样本进行学习,他们之间没有强相关性。
2 GBDT算法
GBDT是一种由CART回归树构成的集成学习算法,可用做分类、回归任务。关于决策树的介绍,可见另一篇文章:深入理解决策树
GBDT算法的核心思想:通过多轮迭代学习,每次迭代产生一个弱分类器,每个分类器的目标是对上一轮分类器的残差,也就是弥补前n个分类器的不足。
2.1 GBDT回归树
模型可表示为: F m ( x ) = ∑ i = 1 m T ( x ; θ m ) F_m(x)=\sum_{i=1}^mT(x;{\theta}_m) Fm(x)=i=1∑mT(x;θm)
假设模型一共 m m m轮,每轮产生一个弱学习器 T ( x ; θ m ) T(x;{\theta}_m) T(x;θm),那么弱学习器的损失函数可表示为
θ m ^ = arg min θ m L ∑ i N L ( y i , F m ) \hat{
{\theta}_m}=\arg\underset{
{\theta}_m}{\min}L\sum_i^NL(y_i,F_m) θm^=argθmminLi∑NL(yi,Fm)
其中 F m = F m − 1 ( x i ) + T ( x i ; θ m ) F_m=F_{m-1}(x_i)+T(x_i;{\theta}_m) Fm=Fm−1(xi)+T(xi;θm), F m − 1 ( x ) F_{m-1}(x) Fm−1(x)为当前模型,GBDT通过经验风险极小化学习下一个弱学习器的参数。
损失函数 L L L可选择平方损失函数,我们让损失函数沿残差梯度方向下降。
在训练每个弱学习器时,利用损失函数的负梯度当作该弱学习器的目标去学习,也就是用残差去拟合一棵回归树。负梯度可表示为
r t i = − ∂ L ( y i , f ( x i ) ) ∂ f ( x i ) f ( x ) = f t − 1 ( x ) r_{ti}=-\frac{
{\partial}L(y_i,f(x_i))}{
{\partial}f(x_i)}_{f(x)=f_{t-1}(x)} rti=−∂f(xi)∂L(yi,f(xi))f(x)=ft−1(x)
利用 ( x i , r t i ) , ( i = 1 , 2 , . . . , m ) (x_i,r_{ti}),(i=1,2,...,m) (xi,rti),(i=1,2,...,m)去拟合一棵CART回归树。
当然,算法工程师的面试是少不了手推滴,下面来手推一下:
算法流程:
- 初始化弱学习器:
KaTeX parse error: Got function '\min' with no arguments as argument to '\underset' at position 29: …nderset{\gamma}\̲m̲i̲n̲\sum_{i=1}^NL(y… - 迭代 m = 1 , 2 , . . . , M m=1,2,...,M m=1,2,...,M,对每个样本,计算其负梯度:
γ t i = − ∂ L ( y i , f ( x i ) ) ∂ f ( x i ) f ( x ) = f t − 1 ( x ) \gamma_{ti}=-\frac{ {\partial}L(y_i,f(x_i))}{ {\partial}f(x_i)}_{f(x)=f_{t-1}(x)} γti=−∂f(

本文详细介绍了GBDT算法,包括GBDT回归树和分类树的原理及实现,探讨了GBDT如何通过Boosting降低偏差。内容涵盖了GBDT的损失函数、负梯度方向、shrinkage策略以及二元和多分类场景的应用。
最低0.47元/天 解锁文章
2600

被折叠的 条评论
为什么被折叠?



