前言
在面试中,经常会遇到面试官说,你这个项目用到了GBDT,那你能不能介绍一下GBDT的原理?
对于很多同学,其实对GBDT很熟悉,但是很难系统性的把它讲清楚,讲完之后自己都觉得很凌乱,面试官也觉得不够满意。
本文主要参考了好友Freeman_zxp的博客文章和Wepon的文章,并结合了一些自己的思考和理解,欢迎各路大佬来指点和讨论。
正文
首先对GBDT有一个宽泛而全面的介绍
GBDT全称是梯度提升决策树,是监督学习中,一种常见的集成树模型,可以用于处理分类和回归问题。
其中,梯度提升(Grandient Boosting)是Boosting家族中的一种优化算法,决策树使用的是CART回归树作为GBDT的基学习器。
什么是梯度提升?
首先,梯度提升是一种基于函数梯度信息的Boosting方法,与梯度下降有异曲同工之妙。
在每一轮迭代时,我们生成一个基学习器,基学习器的拟合目标是当前模型Loss的负梯度。
当训练完成后,我们将该基学习器加入至模型。
重复上述,继续训练基学习器,直至迭代次数达到目标。
梯度提升的优化原理伪代码如下(图中Loss的负梯度使用了残差,即MSE的负梯度):