提升树
在介绍梯度提升模型之前, 首先引入提升树模型. 顾名思义, 提升树模型就是以分类树或回归树为基本分类器的提升方法.
具体来说, 采用加法模型(即基函数的线性组合)与前向分步算法作为提升手段, 以决策树为基函数的提升方法称为提升树.
加法模型
加法模型(Additive Model)即基函数的线性组合, 假设b(x;γm)为基函数, γm为基函数的参数, βm为基函数的加权系数, 加法模型表达如下:
f(x)=∑m=1Mβmb(x;γm)
前向分布算法
给定训练数据和损失函数L(Y,f(x)), 学习加法模型f(x), 就是一个损失函数极小化的问题:
min(βm,γm)∑i=1NL(yi,∑m=1Mβmb(xi;γm))
使用前向分布算法求解这一优化问题. 思路是: 由于学习的是加法模型, 如果能够从前向后, 每步只学习一个基函数及其系数, 逐步减小损失函数的大小, 解决优化问题. 即每步只需要优化如下的损失函数:
min(β,γ)∑i=1NL(yi,βb(xi;γ))
给定训练集T={(x1,y1),(x2,y2),…,(xN,yN)},xi∈X⊆Rn,yi∈Y={−1,+1}, 损失函数为L(Y,f(x)), 基函数的集合为{b(X;γ)}, 学习加法模型f(x)的前向分布算法步骤如下:
初始化加法模型f0(x)
依次生成M个基函数, 对m=1,2,⋯,M
极小化损失函数: (βm,γm)=argminβ,γ∑i=1NL(yi,fm−1(xi)+βb(xi;γ)), 得到参数βm和γm
更新加法模型: fm(x)=fm−1(x)+βmb(x;γm)
得到最终的加法模型: f(x)=fM(x)=∑m=1Mβmb(x;γm)
因此, 前向分布算法, 将寻找整体的加法模型, 拆分为依次寻找每个基模型参数γm和其加权参数βm的问题. 而前向分布算法的关键点在于如何极小化损失函数, 从而得到一个新的基函数这一步.
提升树模型
以决策树为基函数加法模型称为提升树. 记决策树为T(x;Θm), 提升树记为:
fM(x)=∑m=1MT(x;Θm)
在前向分布算法的第m步, 给定当前模型fm−1(x), 需求解第m棵树的参数Θ^m:
Θ^m=argmin(Θm)∑i=1NL(yi,fm−1(xi)+T(xi;Θm))
对于回归问题:
如果使用的损失函数是平方误差函数L(y,f(x))=(y−f(x))2时, 损失函数变为:
L(y,fm−1(x)+T(x;Θm))=[y−fm−1(x)−T(x;Θm)]2=[r−T(x;Θm)]2
其中的r=y−fm−1(x), 是当前模型拟合结果的残差(residual). 因此, 当前基模型只需要拟合之前累积得到的加法模型预测的残差, 就可以最小化损失函数.
对于分类问题
如果使用的损失函数是指数损失函数L(y,f(x))=e−yf(x). 那么损失函数就变为:
Θm=argΘmmini=1∑Ne−yi(fm−1(xi)+T(xi;Θm)))=argΘmmini=1∑Nwmie−yiT(xi;Θm) 在求最小对应的参数过程中, 将常数部分化为wmi=e−yifm−1(xi).
在∑i=1Nwmie−yiT(xi;Θm)中, T(xi;Θm)此时是分类树, 因此有yi与T(xi;Θm)的值域都为{−1,+1}, 只要两者同号相等, 损失就越小.
因此根据上式, 第m步的基函数, 就是以wmi为每个样本的权重, 拟合一个分类决策树.
而如果给这里的分类提升树中, 每个基函数都加上一个系数αm, 这就是Adaboost算法. 因此可以说Adaboost算法就是以指数损失函数为目标损失函数的提升树.
参考资料