本文是将文章《XGBoost算法的原理推导》中的公式单独拿出来做一个详细的解析,便于初学者更好的理解。
我们可以将公式 (12-7) 的损失函数经验损失项部分对照标准的二阶泰勒展开式的形式。
f
(
x
)
≈
f
(
a
)
+
f
′
(
a
)
(
x
−
a
)
+
f
′
′
(
a
)
2
(
x
−
a
)
2
f(x) \approx f(a) + f'(a) (x - a) + \frac{f''(a)}{2} (x - a)^2
f(x)≈f(a)+f′(a)(x−a)+2f′′(a)(x−a)2
回顾公式 (12-7) 的形式
在公式 (12-7) 中,我们的目标是对损失函数 l ( y i , y ^ i ( t − 1 ) + f t ( x i ) ) l(y_i, \hat{y}_i^{(t-1)} + f_t(x_i)) l(yi,y^i(t−1)+ft(xi)) 进行二阶泰勒展开,在点 y ^ i ( t − 1 ) \hat{y}_i^{(t-1)} y^i(t−1) 附近展开。公式 (12-7) 中的损失函数部分可以写为:
l ( y i , y ^ i ( t − 1 ) + f t ( x i ) ) ≈ l ( y i , y ^ i ( t − 1 ) ) + g i f t ( x i ) + 1 2 h i f t 2 ( x i ) l\left(y_i, \hat{y}_i^{(t-1)} + f_t(x_i)\right) \approx l\left(y_i, \hat{y}_i^{(t-1)}\right) + g_i f_t(x_i) + \frac{1}{2} h_i f_t^2(x_i) l(yi,y^i(t−1)+ft(xi))≈l(yi,y^i(t−1))+gift(xi)+21hift2(xi)
匹配二阶泰勒展开的标准形式
根据标准的二阶泰勒展开,我们可以逐项对应:
-
f ( a ) f(a) f(a):
- 在这里,相当于 l ( y i , y ^ i ( t − 1 ) ) l(y_i, \hat{y}_i^{(t-1)}) l(yi,y^i(t−1)),即在点 y ^ i ( t − 1 ) \hat{y}_i^{(t-1)} y^i(t−1) 处的损失函数值。
- 这相当于泰勒展开中的常数项 f ( a ) f(a) f(a)。
-
一阶导数项 f ′ ( a ) ( x − a ) f'(a)(x - a) f′(a)(x−a):
- 这里的一阶导数项是 g i f t ( x i ) g_i f_t(x_i) gift(xi),其中 g i = ∂ l ( y i , y ^ i ( t − 1 ) ) ∂ y ^ i ( t − 1 ) g_i = \frac{\partial l(y_i, \hat{y}_i^{(t-1)})}{\partial \hat{y}_i^{(t-1)}} gi=∂y^i(t−1)∂l(yi,y^i(t−1)) 是损失函数在点 y ^ i ( t − 1 ) \hat{y}_i^{(t-1)} y^i(t−1) 处的一阶导数。
- 对应的增量 ( x − a ) (x - a) (x−a) 相当于 f t ( x i ) f_t(x_i) ft(xi),表示第 t t t 轮新模型的预测值。
- 因此,一阶项可以表示为 g i f t ( x i ) g_i f_t(x_i) gift(xi)。
-
二阶导数项 f ′ ′ ( a ) 2 ( x − a ) 2 \frac{f''(a)}{2} (x - a)^2 2f′′(a)(x−a)2:
- 这里的二阶导数项是 1 2 h i f t 2 ( x i ) \frac{1}{2} h_i f_t^2(x_i) 21hift2(xi),其中 h i = ∂ 2 l ( y i , y ^ i ( t − 1 ) ) ∂ ( y ^ i ( t − 1 ) ) 2 h_i = \frac{\partial^2 l(y_i, \hat{y}_i^{(t-1)})}{\partial (\hat{y}_i^{(t-1)})^2} hi=∂(y^i(t−1))2∂2l(yi,y^i(t−1)) 是损失函数在点 y ^ i ( t − 1 ) \hat{y}_i^{(t-1)} y^i(t−1) 处的二阶导数。
- 二阶项的形式为 1 2 h i f t 2 ( x i ) \frac{1}{2} h_i f_t^2(x_i) 21hift2(xi),对应于二阶泰勒展开中的二阶导数项 f ′ ′ ( a ) 2 ( x − a ) 2 \frac{f''(a)}{2} (x - a)^2 2f′′(a)(x−a)2。
最终形式
将公式 (12-7) 的损失函数部分写成标准的二阶泰勒展开形式,我们得到:
l ( y i , y ^ i ( t − 1 ) + f t ( x i ) ) ≈ l ( y i , y ^ i ( t − 1 ) ) + g i f t ( x i ) + 1 2 h i f t 2 ( x i ) l\left(y_i, \hat{y}_i^{(t-1)} + f_t(x_i)\right) \approx l\left(y_i, \hat{y}_i^{(t-1)}\right) + g_i f_t(x_i) + \frac{1}{2} h_i f_t^2(x_i) l(yi,y^i(t−1)+ft(xi))≈l(yi,y^i(t−1))+gift(xi)+21hift2(xi)
其中:
- l ( y i , y ^ i ( t − 1 ) ) l(y_i, \hat{y}_i^{(t-1)}) l(yi,y^i(t−1)) 对应于常数项 f ( a ) f(a) f(a)。
- g i f t ( x i ) g_i f_t(x_i) gift(xi) 对应于一阶项 f ′ ( a ) ( x − a ) f'(a) (x - a) f′(a)(x−a)。
- 1 2 h i f t 2 ( x i ) \frac{1}{2} h_i f_t^2(x_i) 21hift2(xi) 对应于二阶项 f ′ ′ ( a ) 2 ( x − a ) 2 \frac{f''(a)}{2} (x - a)^2 2f′′(a)(x−a)2。
这个二阶泰勒展开的形式让我们可以用一阶和二阶导数的近似值来表达损失函数,使得优化过程更加简化。