机器学习训练营——机器学习爱好者的自由交流空间(入群联系qq:2279055353)
介绍
梯度提升(Gradient Boosting)是一种用于回归和分类问题的机器学习技术。它集成弱预测模型,典型的是决策树,产生一个强预测模型。该方法分阶段建立弱模型,在每个阶段通过优化一个任意可微的损失函数建立弱模型。下面,我们以简单的最小二乘回归解释梯度提升法的原理。
最小二乘法的目标是,通过最小化均方误差 n1i=1∑n(yi−y^i)2, “教”一个模型 F 预测 y^=F(x).
在梯度提升的每一个阶段 m,1≤m≤M, 假设有一个不完美的模型 Fm, 然后在 Fm 上增加一个估计量 h 改善它。即,Fm+1(x)=Fm(x)+h(x). 一个完美的 h 应该满足
Fm+1(x)=Fm(x)+h(x)=y, 或者,等价地,h(x)=y−Fm(x). 因此,梯度提升将在残差
y−Fm(x) 上拟合 h. 将这种统计思想从均方误差推广到损失函数,残差是均方误差损失函数
21(y−F(x))2 关于 F(x) 的负梯度(negative gradients). 因此,梯度提升实际上是一种梯度下降算法。
算法
在很多有监督学习的问题里,假设输出变量 y, 由输入变量组成的向量 x, 对应的分布 P(x,y). 训练集 {(x1,y1),(x2,y2),…,(xn,yn)}.
假设损失函数 L(y,F(x)), 我们的目标是找到 F(x) 的近似 F^(x), 使得
F^=argFminEx,y[L(y,F(x))]
梯度提升方法寻找的近似 F^(x) 是 hi(x) 的加权和:
F^(x)=i=1∑Mγihi(x)+const
称这些 hi(x)∈H 为基学习器或弱学习器(weak learns)。
根据经验风险最小化原则,该方法试图找到 F^(x), 使得在训练集上最小化损失函数的平均值,即,最小化经验风险。具体上说,从一个常函数 F0(x) 开始,逐渐优化:
F0(x)=argγmini=1∑nL(yi,γ),
Fm(x)=Fm−1(x)+arghm∈Hmin[i=1∑nL(yi,Fm−1(xi)+hm(xi)]
对任意损失函数 L, 在每一步选择出最优的 h 是计算上不可行的优化问题。因此,我们给出一个简化的过程。它的思想是使用梯度下降法(gradient descent)解决这个最小化的问题。
如果考虑连续的情况,即,H 是 R 上的可微函数集,我们根据下面的方程优化模型:
Fm(x)=Fm−1(x)−γmi=1∑n▽Fm−1L(yi,Fm−1(xi)),
γm=argγmini=1∑nL(yi,Fm−1(xi)−γ▽Fm−1L(yi,Fm−1(xi)))
注意到,该方法是一个启发式的(heuristic), 因此不能产生一个精确解,而是一个近似解。下面,我们把该方法写成伪代码:

梯度提升树
梯度提升算法普遍使用决策树(特别是分类与回归树)作为基学习器。具体上说,在算法的第 m 步,在伪残差上拟合一棵决策树 hm(x). 令 Jm 是树的叶子节点数量,树将输入空间分割成
Jm 个不交的区域 R1m,R2m,…,RJm,m, 在每个区域预测一个常数值,输出
hm(x)=j=1∑Jmbjm1Rjm(x)
其中,bjm 是在区域 Rjm 上的预测值。
树的规模
树的叶子节点数 J, 作为模型的参数可以随数据调整。它控制模型里的变量的最大可容许交互水平。J=2时,不允许变量之间交互;J=3 时,模型可以包括的交互效应至多两个变量,以此类推。