资讯

梯度提升是什么?让一棵棵小树接力改正错误

2026-11-052 分钟阅读百科
TL;DR梯度提升(Gradient Boosting)是 Jerome Friedman 在 1999 年前后提出的集成学习算法,通过依次训练多个弱模型(通常是决策树),每个新模型都去拟合前面模型的残差,沿损失函数的梯度方向逐步提升预测精度,XGBoost 和 LightGBM 是其代表实现。

梯度提升(Gradient Boosting)是一种强大的集成学习算法,它把多个较弱的预测模型,通常是比较浅的决策树,组合成一个强大的预测模型。这个方法由斯坦福大学的统计学家 Jerome H. Friedman 在 1999 年前后系统提出,论文《贪心函数逼近:一种梯度提升机》于 2001 年发表。它可以用于回归和分类问题,在处理表格数据时至今仍是效果出色的方法之一。

核心思想:接力改错

梯度提升的思路可以理解为一群人接力解题,后面的人专门改正前面的人犯的错误。

首先,用一个很简单的模型做初步预测,比如直接用所有房价的平均值来预测每套房子的价格。这个预测当然很粗糙,和真实值之间存在误差,也就是“残差”。然后,训练第一棵小决策树,它的任务不是直接预测房价,而是预测上一步的残差:哪些房子被低估了、低估了多少。把这棵树的预测(乘以一个较小的系数,称为学习率)加到原来的预测上,误差就变小了一些。接着,计算新的残差,再训练第二棵树去拟合它,如此反复,一棵接一棵地添加。每棵树都在修正前面所有树加起来之后还剩下的错误,最终的预测是所有树的预测之和。

为什么叫“梯度”

Friedman 的关键洞见是:上述“拟合残差”的过程,本质上是在函数空间中做梯度下降。对于均方误差损失,残差恰好就是损失函数的负梯度。把这个思想推广开来:对于任意可微的损失函数,每一步都让新的树去拟合损失函数的负梯度,就相当于沿着让损失下降最快的方向前进一步。这让梯度提升可以灵活地用于各种不同的任务和损失函数,比如分类用的对数损失、对异常值不敏感的损失等。

代表实现和应用

梯度提升的思想催生了一系列非常成功的工具:XGBoost(2014 年,陈天奇)在梯度提升中加入了正则化和大量工程优化,曾经横扫各种数据科学竞赛;微软的 LightGBM 和 Yandex 的 CatBoost 在训练速度和处理类别特征方面做了进一步的改进。它们被广泛用于金融风控、广告点击率预测、搜索排序、推荐系统、保险定价等领域。在结构化的表格数据上,梯度提升树往往比深度学习更准确、更快、更容易使用,是数据科学家最常用的工具之一。