最后更新于
最后更新于
在介绍梯度提升模型之前, 首先引入提升树模型. 顾名思义, 提升树模型就是以分类树或回归树为基本分类器的提升方法.
具体来说, 采用加法模型(即基函数的线性组合)与前向分步算法作为提升手段, 以决策树为基函数的提升方法称为提升树.
加法模型(Additive Model)即基函数的线性组合, 假设为基函数, 为基函数的参数, 为基函数的加权系数, 加法模型表达如下:
给定训练数据和损失函数, 学习加法模型, 就是一个损失函数极小化的问题:
使用前向分布算法求解这一优化问题. 思路是: 由于学习的是加法模型, 如果能够从前向后, 每步只学习一个基函数及其系数, 逐步减小损失函数的大小, 解决优化问题. 即每步只需要优化如下的损失函数:
给定训练集, 损失函数为, 基函数的集合为, 学习加法模型的前向分布算法步骤如下:
初始化加法模型
依次生成个基函数, 对
极小化损失函数: , 得到参数和
更新加法模型:
得到最终的加法模型:
对于回归问题:
对于分类问题
因此, 前向分布算法, 将寻找整体的加法模型, 拆分为依次寻找每个基模型参数和其加权参数的问题. 而前向分布算法的关键点在于如何极小化损失函数, 从而得到一个新的基函数这一步.
以决策树为基函数加法模型称为提升树. 记决策树为, 提升树记为:
在前向分布算法的第步, 给定当前模型, 需求解第棵树的参数:
如果使用的损失函数是平方误差函数时, 损失函数变为:
其中的, 是当前模型拟合结果的残差(residual). 因此, 当前基模型只需要拟合之前累积得到的加法模型预测的残差, 就可以最小化损失函数.
如果使用的损失函数是指数损失函数. 那么损失函数就变为:
在求最小对应的参数过程中, 将常数部分化为.
在中, 此时是分类树, 因此有与的值域都为, 只要两者同号相等, 损失就越小.
因此根据上式, 第步的基函数, 就是以为每个样本的权重, 拟合一个分类决策树.
而如果给这里的分类提升树中, 每个基函数都加上一个系数, 这就是Adaboost算法. 因此可以说Adaboost算法就是以指数损失函数为目标损失函数的提升树.