梯度提升(可选单元)

在回归问题中,合理的做法是将带符号的误差定义为预测值和标签之间的差值。然而,在其他类型的问题中,此策略通常会导致不良结果。梯度提升中的更好策略是:

  • 定义一个与神经网络中使用的损失函数类似的损失函数。例如,分类问题的熵(也称为对数损失)。
  • 训练弱模型,以根据强模型输出预测损失的梯度

正式地,给定损失函数 $L(y,p)$,其中 $y$ 是一个标签,$p$ 是一个预测项,则在第 $i$ 步用于训练弱模型的伪响应 $z_i$ 为:

$$ z_i = \frac {\partial L(y, F_i)} {\partial F_i} $$

其中:

  • $F_i$ 为强模型的预测。

上面的示例是一个回归问题:目标是预测数值。对于回归,平方误差是一个常见的损失函数:

$$ L(y,p) = (y - p)^2 $$

在本例中,梯度为:

$$ z = \frac {\partial L(y, F_i)} {\partial F_i} = \frac {\partial(y-p)^2} {\partial p} = -2(y - p) = 2 \ \text{signed error} $$

简单来说,梯度就是我们示例中的因数为 2 的有符号误差。请注意,由于存在收缩,常数因素无关紧要。请注意,这种等效性仅适用于具有平方误差损失的回归问题。对于其他监督式学习问题(例如分类、排名、百分位损失回归),梯度和带符号误差之间没有等效性。

利用牛顿方法步骤优化叶片和结构

牛顿是一种优化方法,与梯度下降法类似。不过,与仅使用函数梯度进行优化的梯度下降法不同,牛顿的方法同时使用梯度(一阶导数)和二导数进行优化。

梯度下降法的一个步骤如下:

$$ x_{i+1} = x_i - \frac {df}{dx}(x_i) = x_i - f'(x_i) $$

和牛顿方法,如下所示:

$$ x_{i+1} = x_i - \frac {\frac {df}{dx} (x_i)} {\frac {d^2f}{d^2x} (x_i)} = x_i - \frac{f'(x_i)}{f''(x_i)}$$

(可选)牛顿的方法可以通过两种方式集成到梯度提升树的训练中:

  1. 一树训练完成后,每片叶片都会应用一个牛顿步并替换其值。树形结构保持不变;只有叶值会发生变化。
  2. 在树生长过程中,系统会根据一个得分(其中包含牛顿公式的组成部分)来选择条件。树木的结构会受到影响。
YDF 代码
在 YDF 中:
  • YDF 始终在叶片上应用牛顿步(选项 1)。
  • 您可以通过 use_hessian_gain=True 启用选项 2。