公式 14-5 的详细解释
公式 14-5 是 CatBoost 排序提升算法中的一个关键公式,用于找到一个增量函数 h h h 来优化残差目标。它具体描述了如何在给定的残差目标下选择最优的增量函数。以下是对公式的详细解析:
公式 14-5
h t = arg min h 1 n ∑ i = 1 n [ g t ( y i , M t − 1 ( x i ) ) − h ( x i ) ] 2 h_t = \arg \min_h \frac{1}{n} \sum_{i=1}^n \left[ g_t(y_i, M_{t-1}(x_i)) - h(x_i) \right]^2 ht=arghminn1i=1∑n[gt(yi,Mt−1(xi))−h(xi)]2
公式的意义
这个公式是对公式 14-4 的具体实现。在第 t t t 次迭代中,CatBoost 寻找一个增量函数 h t ( x ) h_t(x) ht(x),使得它能够最小化所有样本的残差平方误差的平均值。
公式中的符号解释
-
h t ( x ) h_t(x) ht(x):
- 第 t t t 次迭代中学到的增量函数,通常由一棵决策树表示。
- 增量函数的目标是拟合残差 g t g_t gt。
-
arg min h \arg \min_h argminh:
- 表示通过优化找到使目标函数值最小的函数 h h h。
-
n n n:
- 训练数据的样本总数。
-
g t ( y i , M t − 1 ( x i ) ) g_t(y_i, M_{t-1}(x_i)) gt(yi,Mt−1(xi)):
- 表示第 i i i 个样本在第 t t t 次迭代中的残差。
- 残差通常由当前模型预测值 M t − 1 ( x i ) M_{t-1}(x_i) Mt−1(xi) 和目标值 y i y_i yi 计算得到:
g t ( y i , M t − 1 ( x i ) ) = − ∂ L ( y i , M t − 1 ( x i ) ) ∂ M t − 1 ( x i ) g_t(y_i, M_{t-1}(x_i)) = -\frac{\partial L(y_i, M_{t-1}(x_i))}{\partial M_{t-1}(x_i)} gt(yi,Mt−1(xi))=−∂Mt−1(xi)∂L(yi,Mt−1(xi)) - L L L 是损失函数。
-
h ( x i ) h(x_i) h(xi):
- 增量函数 h h h 在样本 x i x_i xi 上的输出值。
-
[ g t ( y i , M t − 1 ( x i ) ) − h ( x i ) ] 2 \left[ g_t(y_i, M_{t-1}(x_i)) - h(x_i) \right]^2 [gt(yi,Mt−1(xi))−h(xi)]2:
- 表示残差 g t g_t gt 和增量函数 h h h 之间的平方误差。
-
1 n ∑ i = 1 n \frac{1}{n} \sum_{i=1}^n n1∑i=1n:
- 表示对所有训练样本的平均平方误差。
公式的目标
公式 14-5 的核心目标是最小化残差的平方误差。
- 当前模型 M t − 1 M_{t-1} Mt−1 的预测值可能与目标值 y y y 存在误差。
- 残差 g t g_t gt 是模型在当前阶段的误差表示。
- 通过学习一个增量函数 h t h_t ht,将其加入到当前模型中,减少残差 g t g_t gt,从而提升模型的整体预测精度。
具体来说:
- g t ( y i , M t − 1 ( x i ) ) g_t(y_i, M_{t-1}(x_i)) gt(yi,Mt−1(xi)) 是目标变量 y i y_i yi 与当前模型预测值的误差表示。
- 增量函数 h t ( x ) h_t(x) ht(x) 是对该误差的拟合。
- 公式通过最小化所有样本的平方误差,找到最优的 h t h_t ht。
梯度提升的背景
在梯度提升框架中,模型的迭代过程是逐步优化的:
-
模型预测值更新公式:
M t ( x ) = M t − 1 ( x ) + η h t ( x ) M_t(x) = M_{t-1}(x) + \eta h_t(x) Mt(x)=Mt−1(x)+ηht(x)- M t ( x ) M_t(x) Mt(x):第 t t t 次迭代后模型的预测值。
- M t − 1 ( x ) M_{t-1}(x) Mt−1(x):第 t − 1 t-1 t−1 次迭代后模型的预测值。
- η \eta η:学习率,用于控制增量函数 h t ( x ) h_t(x) ht(x) 的影响。
- h t ( x ) h_t(x) ht(x):本轮迭代学到的增量函数。
-
残差的作用:
- 当前模型 M t − 1 ( x ) M_{t-1}(x) Mt−1(x) 的误差由残差 g t g_t gt 表示。
- 通过最小化残差的平方误差,学习增量函数 h t ( x ) h_t(x) ht(x),从而修正模型的预测。
公式 14-5 的实现过程
-
输入:
- 当前模型 M t − 1 ( x ) M_{t-1}(x) Mt−1(x)。
- 训练样本 ( x i , y i ) (x_i, y_i) (xi,yi)。
- 损失函数 L ( y , M ( x ) ) L(y, M(x)) L(y,M(x))。
-
计算残差 g t g_t gt:
- 对每个样本 ( x i , y i ) (x_i, y_i) (xi,yi),根据损失函数计算残差:
g t ( y i , M t − 1 ( x i ) ) = − ∂ L ( y i , M t − 1 ( x i ) ) ∂ M t − 1 ( x i ) g_t(y_i, M_{t-1}(x_i)) = -\frac{\partial L(y_i, M_{t-1}(x_i))}{\partial M_{t-1}(x_i)} gt(yi,Mt−1(xi))=−∂Mt−1(xi)∂L(yi,Mt−1(xi)) - 常见损失函数及其残差计算:
- 均方误差(MSE):
g t = M t − 1 ( x i ) − y i g_t = M_{t-1}(x_i) - y_i gt=Mt−1(xi)−yi - 对数损失(LogLoss,用于二分类):
g t = p i − y i g_t = p_i - y_i gt=pi−yi
其中 p i = σ ( M t − 1 ( x i ) ) p_i = \sigma(M_{t-1}(x_i)) pi=σ(Mt−1(xi)), σ \sigma σ 是 sigmoid 函数。
- 均方误差(MSE):
- 对每个样本 ( x i , y i ) (x_i, y_i) (xi,yi),根据损失函数计算残差:
-
拟合增量函数 h t h_t ht:
- 使用当前残差 g t g_t gt 作为目标值,拟合一个增量函数 h t ( x ) h_t(x) ht(x)。
- 增量函数通常由一棵决策树表示。
-
更新模型:
- 将学到的增量函数加入模型:
M t ( x ) = M t − 1 ( x ) + η h t ( x ) M_t(x) = M_{t-1}(x) + \eta h_t(x) Mt(x)=Mt−1(x)+ηht(x)
- 将学到的增量函数加入模型:
公式 14-5 的意义
公式 14-5 的意义在于,通过逐步拟合残差来优化模型的预测性能:
-
逐步优化目标函数:
- 每一轮迭代中,模型通过学习残差 g t g_t gt 的最优拟合,逐步减小模型的误差。
-
动态调整模型:
- 随着每次迭代的进行,模型会越来越接近目标值 y y y,从而提升预测性能。
-
提高模型的鲁棒性:
- 通过逐步更新模型,而非一次性拟合目标值,减少了过拟合风险。
CatBoost 中的特殊之处
-
排序提升(Ordered Boosting):
- 在计算公式 14-5 时,CatBoost 使用排序提升(Ordered Boosting),确保增量函数的学习仅使用当前样本之前的数据,避免信息泄漏。
-
对称树(Symmetric Trees):
- CatBoost 中的增量函数 h t ( x ) h_t(x) ht(x) 由对称树表示,这种树结构能够更高效地拟合残差,同时提高训练速度。
例子:计算公式 14-5 的过程
假设我们有以下训练数据:
样本 i i i | 特征 x i x_i xi | 目标值 y i y_i yi | 当前预测值 M t − 1 ( x i ) M_{t-1}(x_i) Mt−1(xi) |
---|---|---|---|
1 | 1.0 | 1.0 | 0.8 |
2 | 2.0 | 0.0 | 0.3 |
3 | 3.0 | 1.0 | 0.6 |
-
计算残差 g t g_t gt:
- 使用均方误差(MSE)作为损失函数:
g t = M t − 1 ( x i ) − y i g_t = M_{t-1}(x_i) - y_i gt=Mt−1(xi)−yi - 对每个样本:
- g t ( y 1 ) = 0.8 − 1.0 = − 0.2 g_t(y_1) = 0.8 - 1.0 = -0.2 gt(y1)=0.8−1.0=−0.2
- g t ( y 2 ) = 0.3 − 0.0 = 0.3 g_t(y_2) = 0.3 - 0.0 = 0.3 gt(y2)=0.3−0.0=0.3
- g t ( y 3 ) = 0.6 − 1.0 = − 0.4 g_t(y_3) = 0.6 - 1.0 = -0.4 gt(y3)=0.6−1.0=−0.4
- 使用均方误差(MSE)作为损失函数:
-
拟合增量函数 h t ( x ) h_t(x) ht(x):
- 将残差 g t g_t gt 作为目标值,使用决策树拟合:
- 输入:特征 x i x_i xi 和目标残差 g t g_t gt。
- 输出:决策树 h t ( x ) h_t(x) ht(x)。
- 将残差 g t g_t gt 作为目标值,使用决策树拟合:
-
更新模型:
- 计算新的预测值:
M t ( x ) = M t − 1 ( x ) + η h t ( x ) M_t(x) = M_{t-1}(x) + \eta h_t(x) Mt(x)=Mt−1(x)+ηht(x)
- 计算新的预测值:
总结
公式 14-5 是 CatBoost 排序提升的核心,用于通过拟合残差优化模型预测性能。关键点包括:
- 最小化残差平方误差。
- 逐步优化模型预测值。
- 避免信息泄漏(通过排序提升)。