深入理解GBDT回归算法

本文深入探讨了GBDT回归算法,包括算法简介、推导过程、实例解析、Python3和sklearn实现、常用损失函数及正则化方法。通过实例展示了GBDT如何通过梯度提升和决策树结合来逐步优化模型,同时讨论了GBDT与AdaBoost、随机森林的区别,并提出了关于GBDT若干问题的思考。
摘要由CSDN通过智能技术生成

本文的主要内容概览:
在这里插入图片描述

1. GBDT简介

Boosting、Bagging和Stacking是集成学习(Ensemble Learning)的三种主要方法。Boosting是一族可将弱学习器提升为强学习器的算法,不同于Bagging、Stacking方法,Boosting训练过程为串联方式,弱学习器的训练是有顺序的,每个弱学习器都会在前一个学习器的基础上进行学习,最终综合所有学习器的预测值产生最终的预测结果。

梯度提升(Gradient boosting)算法是一种用于回归、分类和排序任务的机器学习技术,属于Boosting算法族的一部分。之前我们介绍过Gradient Boosting算法在迭代的每一步构建一个能够沿着梯度最陡的方向降低损失的学习器来弥补已有模型的不足。经典的AdaBoost算法只能处理采用指数损失函数的二分类学习任务,而梯度提升方法通过设置不同的可微损失函数可以处理各类学习任务(多分类、回归、Ranking等),应用范围大大扩展。梯度提升算法利用损失函数的负梯度作为残差拟合的方式,如果其中的基函数采用决策树的话,就得到了梯度提升决策树 (Gradient Boosting Decision Tree, GBDT)。

基于梯度提升算法的学习器叫做GBM(Gradient Boosting Machine)。理论上,GBM可以选择各种不同的学习算法作为基学习器。现实中,用得最多的基学习器是决策树。

决策树有以下优点:

  • 决策树可以认为是if-then规则的集合,易于理解,可解释性强,预测速度快。
  • 决策树算法相比于其他的算法需要更少的特征工程,比如可以不用做特征标准化。
  • 决策树可以很好的处理字段缺失的数据。
  • 决策树能够自动组合多个特征,也有特征选择的作用。
  • 对异常点鲁棒
  • 可扩展性强,容易并行。

决策树有以下缺点:

  • 缺乏平滑性(回归预测时输出值只能输出有限的若干种数值)。
  • 不适合处理高维稀疏数据。
  • 单独使用决策树算法时容易过拟合。

我们可以通过抑制决策树的复杂性,降低单棵决策树的拟合能力,再通过梯度提升的方法集成多个决策树,最终能够很好的解决过拟合的问题。由此可见,梯度提升方法和决策树学习算法可以互相取长补短,是一对完美的搭档。

2. GBDT回归算法

2.1 GBDT回归算法推导

当我们采用的基学习器是决策树时,那么梯度提升算法就具体到了梯度提升决策树。GBDT算法又叫MART(Multiple Additive Regression),是一种迭代的决策树算法。GBDT算法可以看成是 M M M棵树组成的加法模型,其对应的公式如下:
F ( x , w ) = ∑ m = 0 M α m h m ( x , w m ) = ∑ m = 0 M f m ( x , w m ) F(x,w) = \sum_{m=0}^{M}{\alpha_{m}h_{m}(x,w_{m})} = \sum_{m=0}^{M}{f_{m}(x,w_{m})} F(x,w)=m=0Mαmhm(x,wm)=m=0Mfm(x,wm)
其中, x x x 为输入样本; w w w 为模型参数; h h h 为分类回归树; α \alpha α 为每棵树的权重。GBDT算法的实现过程如下:

给定训练数据集: T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x N , y N ) } T = \left\{ (x_{1}, y_{1}),(x_{2}, y_{2}),...,(x_{N},y_{N}) \right\} T={ (x1,y1),(x2,y2),...,(xN,yN)} 其中, x i ∈ χ ⊆ R n x_{i}\in \chi \subseteq R^n xiχRn χ \chi χ 为输入空间, y i ∈ Y ⊆ R y_{i}\in Y \subseteq R yiYR Y Y Y 为输出空间,损失函数为 L ( y , f ( x ) ) L(y,f(x)) L(y,f(x)) ,我们的目标是得到最终的回归树 F M F_{M} FM

(1)初始化第一个弱学习器 F 0 ( x ) F_{0}(x) F0(x)
F 0 ( x ) = arg ⁡ min ⁡ c ∑ i = 1 N L ( y i , c ) F_ { 0 } ( x ) = \underset{ c }{ \arg \min } \sum _ { i = 1 } ^ { N } L \left( y _ { i } ,c \right) F0(x)=cargmini=1NL(yi,c)
(2)对于建立M棵分类回归树 m = 1,2 , \dots , M :

a) i = 1 , 2 , … , N i = 1,2 , \dots , N i=1,2,,N ,计算第 m m m 棵树对应的响应值(损失函数的负梯度,即伪残差):
r m , i = − [ ∂ L ( y i , F ( x i ) ) ∂ F ( x ) ] F ( x ) = F m − 1 ( x ) r_{m, i}=-\left[\frac{\partial L\left(y_{i}, F\left(x_{i}\right)\right) }{\partial F(x)}\right]_{F(x)=F_{m-1}(x)} rm,i=[F(x)L(yi,F(xi))]F(x)=Fm1(x)

b) 对于 i = 1 , 2 , … , N i = 1,2 , \dots , N i=1,2,,N ,利用CART回归树拟合数据 ( x i , r m , i ) \left(x_{i}, r_{m, i}\right) (xi,rm,i) ,得到第 m m m 棵回归树,其对应的叶子节点区域为 R m , j R_{m, j} Rm,j ,其中 j = 1 , 2 , … , J m j=1,2, \dots, J_{m} j=1,2,,Jm ,且 J m J_{m} Jm 为第 m m m棵回归树叶子节点的个数。

c) 对于 J m J_{m} Jm 个叶子节点区域 j = 1 , 2 , … , J m j=1,2, \dots, J_{m} j=1,2,,Jm,计算出最佳拟合值:
c m , j = arg ⁡ min ⁡ c ∑ x

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值