机器学习训练营——机器学习爱好者的自由交流空间(入群联系qq:2279055353)

介绍

梯度提升(Gradient Boosting)是一种用于回归和分类问题的机器学习技术。它集成弱预测模型,典型的是决策树,产生一个强预测模型。该方法分阶段建立弱模型,在每个阶段通过优化一个任意可微的损失函数建立弱模型。下面,我们以简单的最小二乘回归解释梯度提升法的原理。

最小二乘法的目标是,通过最小化均方误差 1ni=1n(yiy^i)2\dfrac{1}{n}\sum\limits_{i=1}^n (y_i-\hat{y}_i)^2, “教”一个模型 FF 预测 y^=F(x)\hat{y}=F(x).

在梯度提升的每一个阶段 m, 1mMm,\,1\le m\le M, 假设有一个不完美的模型 FmF_m, 然后在 FmF_m 上增加一个估计量 hh 改善它。即,Fm+1(x)=Fm(x)+h(x)F_{m+1}(x)=F_m(x)+h(x). 一个完美的 hh 应该满足
Fm+1(x)=Fm(x)+h(x)=yF_{m+1}(x)=F_m(x)+h(x)=y, 或者,等价地,h(x)=yFm(x)h(x)=y-F_m(x). 因此,梯度提升将在残差
yFm(x)y-F_m(x) 上拟合 hh. 将这种统计思想从均方误差推广到损失函数,残差是均方误差损失函数
12(yF(x))2\dfrac{1}{2}(y-F(x))^2 关于 F(x)F(x) 的负梯度(negative gradients). 因此,梯度提升实际上是一种梯度下降算法。

算法

在很多有监督学习的问题里,假设输出变量 yy, 由输入变量组成的向量 xx, 对应的分布 P(x,y)\mathcal{P}(x, y). 训练集 {(x1,y1),(x2,y2),,(xn,yn)}\{(x_1, y_1), (x_2, y_2), \dots, (x_n, y_n)\}.
假设损失函数 L(y,F(x))L(y, F(x)), 我们的目标是找到 F(x)F(x) 的近似 F^(x)\hat{F}(x), 使得
F^=argminFEx,y[L(y,F(x))]\hat{F}=\arg\min_{F}\mathbb{E}_{x, y}[L(y, F(x))]

梯度提升方法寻找的近似 F^(x)\hat{F}(x)hi(x)h_i(x) 的加权和:
F^(x)=i=1Mγihi(x)+const\hat{F}(x)=\sum\limits_{i=1}^M \gamma_i h_i(x) + const

称这些 hi(x)Hh_i(x)\in \mathcal{H} 为基学习器或弱学习器(weak learns)。

根据经验风险最小化原则,该方法试图找到 F^(x)\hat{F}(x), 使得在训练集上最小化损失函数的平均值,即,最小化经验风险。具体上说,从一个常函数 F0(x)F_0(x) 开始,逐渐优化:

F0(x)=argminγi=1nL(yi,γ),F_0(x)=\arg\min_{\gamma}\sum\limits_{i=1}^n L(y_i, \gamma),

Fm(x)=Fm1(x)+argminhmH[i=1nL(yi,Fm1(xi)+hm(xi)]F_m(x)=F_{m-1}(x)+\arg\min_{h_m\in\mathcal{H}}[\sum\limits_{i=1}^n L(y_i, F_{m-1}(x_i)+h_m(x_i)]

对任意损失函数 LL, 在每一步选择出最优的 hh 是计算上不可行的优化问题。因此,我们给出一个简化的过程。它的思想是使用梯度下降法(gradient descent)解决这个最小化的问题。

如果考虑连续的情况,即,H\mathcal{H}R\mathbb{R} 上的可微函数集,我们根据下面的方程优化模型:

Fm(x)=Fm1(x)γmi=1nFm1L(yi,Fm1(xi)),F_m(x)=F_{m-1}(x)-\gamma_m\sum\limits_{i=1}^n\triangledown_{F_{m-1}}L(y_i, F_{m-1}(x_i)),
γm=argminγi=1nL(yi,Fm1(xi)γFm1L(yi,Fm1(xi)))\gamma_m=\arg\min_{\gamma}\sum\limits_{i=1}^n L(y_i, F_{m-1}(x_i)-\gamma\triangledown_{F_{m-1}}L(y_i, F_{m-1}(x_i)))

注意到,该方法是一个启发式的(heuristic), 因此不能产生一个精确解,而是一个近似解。下面,我们把该方法写成伪代码:

Gradient Boosting算法理论

梯度提升树

梯度提升算法普遍使用决策树(特别是分类与回归树)作为基学习器。具体上说,在算法的第 mm 步,在伪残差上拟合一棵决策树 hm(x)h_m(x). 令 JmJ_m 是树的叶子节点数量,树将输入空间分割成
JmJ_m 个不交的区域 R1m,R2m,,RJm,mR_{1m}, R_{2m}, \dots, R_{J_m,m}, 在每个区域预测一个常数值,输出

hm(x)=j=1Jmbjm1Rjm(x)h_m(x)=\sum\limits_{j=1}^{J_m}b_{jm}\mathbf{1}_{R_{jm}}(x)

其中,bjmb_{jm} 是在区域 RjmR_{jm} 上的预测值。

树的规模

树的叶子节点数 JJ, 作为模型的参数可以随数据调整。它控制模型里的变量的最大可容许交互水平。J=2J=2时,不允许变量之间交互;J=3J=3 时,模型可以包括的交互效应至多两个变量,以此类推。

相关文章: