梯度提升树#
术语解释#
梯度提升(Gradient Boosting, GB) 是一种基于 提升(Boosting) 策略的集成学习算法,由 Friedman 于 2001 年提出。它通过迭代地构建一系列弱学习器,利用梯度下降算法来最小化损失函数,从而提高模型的预测精度。
梯度提升的核心是将模型的优化过程看作是在损失函数上的梯度下降。
在AdaBoost算法中,通过赋予每个样本一个权重值,并且在上一个模型中误差越大的样本(分类问题中即被错分的样本)在下一个模型中将会被给予更高的权重,然后对于每个基模型来说其都有不同的策略来降低高权重样本的误差,以此来提高整个集成模型的预测精度,即在AdaBoost算法中它是通过赋予样本权重来提升模型的精度。对于梯度提升算法来说,它则是通过梯度来提升整个模型的预测精度。
如式(9-57)所示,便是梯度下降算法的核心公式
$$ w=w-\alpha\cdot\frac{\partial J}{\partial w}\tag{9-57} $$其中$w$表示待更新的参数对象,$J$表示关于参数$w$的目标函数,$\alpha$表示学习率。更多关于梯度下降算法的详细介绍可以参见「第2.5节 梯度下降推导:线性回归参数如何迭代求解」内容。
通过式(9-57)可知,对于参数$w$来说可以根据其梯度的方向来一步一步迭代计算得到(接近)其最优解。现在假定某个模型的预测输出为$\hat{y}=f(x)$,预测值与真实值之间的损失误差为$J(y,\hat{y})$,那么为了提高模型$f(x)$的预测结果,同样可以采用梯度下降算法来对预测结果进行迭代更新,即
$$ f(x)=f(x)-\alpha\cdot\frac{\partial J}{\partial f(x)}\tag{9-58} $$而式(9-58)便是梯度提升算法的核心思想。
更多相关内容原理可参见「9.6 Gradient Boost原理与实现:梯度提升回归与分类」 。
出现动机#
-
改进误差修正方式:在 AdaBoost 中,模型通过调整样本权重来关注错分样本;而梯度提升则直接通过梯度来修正前一个模型的残差,使预测结果逐步逼近真实值。
-
解决欠拟合(高偏差):提升算法的主要动机是解决模型容易出现的下拟合状态。通过串行地训练多个模型,后一个模型对前一个模型的结果进行修正,从而逐渐拟合复杂的规律。
-
统一优化框架:GB 提供了一个通用的框架,可以将不同的损失函数(如均方误差、多项式误差等)引入到提升算法中,通过梯度下降进行统一求解。
优点缺点#
-
优点:
-
预测精度高:由于采用了分步修正误差的策略,GB 通常能够获得比单一模型或某些 Bagging 模型(如随机森林)更好的预测效果。
-
灵活性强:它可以支持多种损失函数,适用于回归、分类等多种不同的任务场景。
-
特征表达能力强:尤其是 GBDT,能够自动处理特征间的非线性关系和交互作用。
-
-
缺点:
-
训练速度慢:由于基模型必须串行训练(每一个模型都依赖于前一个模型的结果),它无法像随机森林那样进行大规模并行计算,在大数据集上训练耗时较长。
-
调参复杂度高:模型性能高度依赖于超参数的设置,包括学习率 $\alpha$、提升次数 $M$ 以及基学习器(如决策树)自身的参数。
-
易受噪声影响:虽然通过梯度修正能提升精度,但如果损失函数选择不当或迭代次数过多,模型可能会过度拟合训练数据中的噪声。
-
工程限制:例如在某些实现(如
sklearn的GradientBoostingClassifier)中,基学习器被固定为决策树且不可更改。
-