集成学习算法之提升树(Boosting Tree)

如大家所熟悉的,提升树(Boosting Tree)是一种常见的集成学习算法,它通过逐步迭代的方式训练多个决策树,每一棵树都试图纠正前面树的预测误差,从而得到一个更加准确的整体模型。

提升树的基本思路是,每一次训练新的决策树都会关注前面树的误差,让新树尽可能地纠正前面树的错误。在每一次训练中,提升树会根据当前模型的预测结果和真实标签之间的差异,构建一个新的树模型,并将其与前面的模型组合起来形成一个更加准确的模型。这个过程会重复多次,直到模型收敛或达到指定的迭代次数为止。

提升树其实就是一个加法模型,在每一轮迭代中,我们需要根据当前模型的预测结果,计算出样本的残差(即真实值与预测值之间的差值),并将残差作为下一轮迭代中的损失函数。

GBDT梯度提升决策树

GDBT , 即 Gradient Boosting Decision Tree ,梯度提升决策树。在提升树算法中,每一轮迭代并没有直接计算梯度值,而是根据损失函数的形式来构造残差,然后用基学习器去拟合这个残差。由于残差与负梯度的形式很相似,因此提升树算法也被视为一种近似梯度下降的方法。

而在梯度提升决策树算法中,每一轮迭代是直接计算损失函数的负梯度,来作为提升树里的残差。用一阶泰勒展开式可以推导出当取第 k - 1 个模型损失函数的负梯度的时候,能够保证每一轮迭代都能够在前一轮的迭代上减小损失值。因此,梯度提升决策树算法可以看作是一种真正的梯度下降方法。

GBDT 中,每一个基学习器用的是 CART 回归树,CART 回归树可以很好地计算负梯度,因为 CART 回归树的叶子节点中存储的是训练数据的平均值或者众数,这个平均值或者众数可以作为当前回归树的预测值。

GBDT框架

XGBoost 框架:采用了一系列的技术,包括 Gradient Boosting 、二阶泰勒展开、正则化、特征重要性评估、并行化等,从而在效果和速度上都有很好的表现。

LightGBM 框架:主要思想是在构建模型的过程中,通过使用梯度单边采样的方法来减少数据集的大小,同时使用直方图算法对特征进行离散化,从而减少了内存占用和运行时间。