提升树Boosting Tree算法实例详解_程大海的博客-CSDN博客
从提升树Boosting Tree过度到梯度提升Gradient Boosting_程大海的博客-CSDN博客
GBDT梯度提升之回归算法个人理解_程大海的博客-CSDN博客_梯度回归算法
GBDT梯度提升之二分类算法个人理解_程大海的博客-CSDN博客_gbdt二分类
GBDT梯度提升之多分类算法个人理解_程大海的博客-CSDN博客_gbdt可以多分类吗
XGBoost算法个人理解_程大海的博客-CSDN博客_xgboost 叶子节点权重
交叉熵损失与极大似然估计_程大海的博客-CSDN博客_极大似然估计和交叉熵
使用泰勒展开解释梯度下降方法参数更新过程_程大海的博客-CSDN博客
AdaBoost算法实例详解_程大海的博客-CSDN博客_adaboost算法实例
在前面一片文章中展示了AdaBoost算法实例详解,这篇文章中来大致看一下提升树Boosting Tree算法的主要计算过程。
提升树算法利用加法模型和前向分布算法实现迭代学习优化,当使用MSE或者指数损失函数时,通过计算第 K 轮迭代后的加法模型在训练集上的残差,优化损失函数在残差上的最小值,学习第 k + 1 轮新模型参数,并使用加法模型将新模型并入学习到的整个模型中。但是,当使用其他一般损失函数时,求解模型在训练集上的残差以及损失函数在残差的最优参数并不容易优化。然后提出梯度提升算法,这个在后面的文章中进行说明。
这里说一下加法模型和前向分布算法:
加法模型:所谓加法模型就是可以将学习到的多个小模型或者说弱模型通过直接相加,或者线性相加(也就是通过乘以不同的权重,然后相加)来得到最终模型
前向分布算法:所谓前向分布算法就是说可以将一个问题的求解分解为多步小问题的求解过程,通过进行1,2,...,M的逐步迭代逼近,然后结合加法模型逐渐接近真实目标
下面先来看一下提升树算法的主要流程,来自《统计机器学习》:
算法的思想很简单:
1、首先对于数据集初始化一个简单模型
2、计算 的预测结果与每个训练样本真实值的差值,也就是上面说的残差
3、然后使用残差继续训练新的模型,得到本轮在残差上学习的模型
4、更新学习到的整体模型
5、回到步骤2再次计算残差,步骤3再次学习得到一个新的,步骤4继续更新
提升树计算实例,以下实例来自于《统计机器学习》:
对于上述训练样本,设定基本模型为只有一个节点回归树模型(树桩)。x的取值范围为区间[0.5, 10.5],y的取值范围为区间[5.0, 10.0]。可能的切分点为1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 8.5, 9.5。
首先通过以下优化问题寻找回归树的最佳切分点:
最佳切分点确定以后,要使得模型的预测误差最小,则树的左右叶子节点的预测值为左右叶子节点样本目标值的均值。
第一轮训练:
对于上述各个切分点,模型误差如下:
当 s=6.5 时 , m(s) 达 到 最 小 值。而且,此时左右叶子节点上的输出(左右叶子节点上训练样本目标值的均值)如下:
因此得到的回归树模型如下:
用 拟合训练数据的平方损失误差为:
第二轮回归(在上一轮的残差表3上进行模型训练):类比第一轮训练。
将提升树方法中使用的残差替换成损失函数的负梯度在当前模型的值,就得到了梯度提升Gradient Boosting方法。