GBDT-f_t(x_i)取值问题的个人理解

文章讨论了在平方误差损失函数下,f_t(x_i)的可能范围,并通过一阶泰勒展开分析了损失函数的最小值情况。通过等式推导得出f_t(x_i)=-g_t/4时,可使损失函数局部最小,但不等于0。这表明模型需要在减少损失的同时保持一定的泛化能力,因此引入学习率η和其他参数限制模型过拟合。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

f_t(x_i) 可能存在下限

个人理解,在 lll 为平方误差的时候,ft(x)f_{t}(x)ft(x) 是有范围的,我们对上面一阶泰勒展开的式子详细写开
l(Ht−1(xi)+ft(xi))≈l(Ht−1(xi))+∂l(Ht−1(xi))∂Ht−1(xi)×ft(xi)=[yi−Ht−1(xi)]2−2[yi−Ht−1(xi)]×ft(xi) \begin{aligned} l(H_{t-1}(x_i) + f_t(x_i) ) &\approx l(H_{t-1}(x_i)) + \frac{\partial{l(H_{t-1}(x_i))}}{\partial{H_{t-1}(x_i)}} \times f_t(x_i) \\ &= [y_{i}-H_{t-1}(x_{i})]^{2}-2[y_{i}-H_{t-1}(x_{i})]\times f_{t}(x_{i})\\ \end{aligned} l(Ht1(xi)+ft(xi))l(Ht1(xi))+Ht1(xi)l(Ht1(xi))×ft(xi)=[yiHt1(xi)]22[yiHt1(xi)]×ft(xi)
这里需要注意的是,等式左面是平方损失,本身就是平方项,因此必须要大于等于 0,因此其最小值就为 0
 [yi−Ht−1(xi)]2−2[yi−Ht−1(xi)]×ft(xi)=0ft(xi)=12[yi−Ht−1(xi)]ft(xi)=−14gt \begin{aligned} \ [y_{i}-H_{t-1}(x_{i})]^{2}-2[y_{i}-H_{t-1}(x_{i})]\times f_{t}(x_{i})&=0\\ f_{t}(x_{i})&=\frac{1}{2}[y_{i}-H_{t-1}(x_{i})]\\ f_{t}(x_{i})&=-\frac{1}{4}g_{t} \end{aligned}  [yiHt1(xi)]22[yiHt1(xi)]×ft(xi)ft(xi)ft(xi)=0=21[yiHt1(xi)]=41gt
当然如果 lll 使用其他的计算公式那么这个推导就不适用了

为什么取 f_t(x_i)=-g_t

从迭代的角度说,其实 ft(xi)f_{t}(x_{i})ft(xi) 也没必要很大,因为此时梯度为 ∂l(Ht−1(xi))∂Ht−1(xi)\begin{aligned} \frac{\partial{l(H_{t-1}(x_i))}}{\partial{H_{t-1}(x_i)}}\end{aligned}Ht1(xi)l(Ht1(xi)),但经过更新后,也就是 Ht(x)=Ht−1(x)+ηft(x)H_t(x) = H_{t-1}(x) + \eta f_t(x)Ht(x)=Ht1(x)+ηft(x),梯度的值也会重新变化,也就是损失函数下降最快的方向就会随之变化,因此我们需要不断更新梯度

对于一个凸函数,用泰勒展开并令其等于 0 得到的
ft(xi)=−14gtf_{t}(x_{i})=-\frac{1}{4}g_{t}ft(xi)=41gt
即使拟合的数完全符合这个规则,代入
Ht(x)=Ht−1(x)+ft(x)H_t(x) = H_{t-1}(x) + f_t(x)Ht(x)=Ht1(x)+ft(x)
并不会直接使得损失函数为 0,泰勒展开是约等于,只是使得在当前梯度情况下的损失函数最小值,也就是满足
l(Ht−1(xi))+∂l(Ht−1(xi))∂Ht−1(xi)×ft(xi)=0l(H_{t-1}(x_i)) + \frac{\partial{l(H_{t-1}(x_i))}}{\partial{H_{t-1}(x_i)}} \times f_t(x_i)=0l(Ht1(xi))+Ht1(xi)l(Ht1(xi))×ft(xi)=0

l(Ht−1(xi)+ft(xi))≠0l(H_{t-1}(x_i) + f_t(x_i) )\ne 0l(Ht1(xi)+ft(xi))=0
如果想要
l(Ht−1(xi)+ft(xi))=0l(H_{t-1}(x_i) + f_t(x_i) )= 0l(Ht1(xi)+ft(xi))=0
则需要拟合 ft(xi)=−gtf_{t}(x_{i})=-g_{t}ft(xi)=gt
感性的理解一下,也就是需要一步满足、
y=Ht−1(xi)+ft(xi)y=H_{t-1}(x_{i})+f_{t}(x_{i})y=Ht1(xi)+ft(xi)
这样损失函数就能直接为 0,但此时模型的泛化能力会很弱,整体模型偏差小,方差很大,也就是决策树模型,所以我们要在保证减小损失函数的前提下保证模型的泛化能力,因此就会有 η\etaη 以及参数 max_depth 等来限制模型一次性达到损失函数的最小值

03-25
### GBDT多目标优化(GBDT-MO)的解释与实现 Gradient Boosting Decision Trees (GBDT) 是一种强大的机器学习算法,广泛应用于回归和分类任务。当扩展到多目标场景时,即 Gradient Boosting Decision Tree Multi-Objective (GBDT-MO),其核心思想在于通过集成多个弱学习器来逼近复杂的多维目标函数。 #### 多目标优化背景 在传统的单目标优化中,模型的目标是最小化单一损失函数。然而,在实际应用中,许多问题涉及多个相互冲突或互补的目标。例如,在金融领域可能需要同时最大化收益并最小化风险;或者在工程设计中平衡性能、成本和可靠性等多个指标[^1]。 为了应对这些挑战,GBDT-MO 将标准 GBDT 的框架推广至能够处理多个目标的情况。具体来说,它试图找到一组 Pareto 最优解,使得任何进一步改进某个目标都会导致其他目标变差。 #### 实现细节 以下是构建 GBDT-MO 的几个关键技术要点: 1. **目标定义** 需要明确定义所有待优化的目标及其对应的度量方式。对于 k 个目标 \( f_1(x), f_2(x), ..., f_k(x) \),可以采用加权求和法或将它们转化为约束条件的形式。 2. **树结构更新机制** 在每一轮迭代过程中,基于当前残差计算新的决策树,并将其加入现有模型集合中。针对多目标情况下的残差估计方法有多种选择,比如利用梯度向量的方向信息作为指导信号[^2]。 3. **分裂准则调整** 原始 GBDT 使用的是单一目标导向的信息增益衡量节点划分质量。而在 MO 版本里,则需考虑综合各个子目标的表现差异来进行更合理的切分操作。 下面给出一段 Python 示例代码展示如何自定义一个多目标版本的 XGBoost 或 LightGBM 训练流程: ```python import numpy as np from sklearn.datasets import make_regression from lightgbm import LGBMRegressor def multi_objective_loss(y_true, y_pred): """Custom loss function combining multiple objectives.""" residuals = [] for i in range(len(objectives)): residual_i = objectives[i](y_true[:,i], y_pred[:,i]) residuals.append(residual_i) combined_residual = sum([w*r for w,r in zip(weights,residuals)]) grad = -np.sign(combined_residual) hess = np.ones_like(grad) return grad.flatten(), hess.flatten() # Example usage with synthetic data X, Y = make_regression(n_samples=1000, n_features=20, noise=0.1, random_state=42) objectives = [lambda yt, yp: abs(yp-yt)**2, lambda yt, yp: max((yt-yp)/abs(t),0)] # Define your own objective functions here. weights=[0.7, 0.3] model = LGBMRegressor(boosting_type='gbdt', num_leaves=31, learning_rate=0.05, n_estimators=100, reg_alpha=0., reg_lambda=0.) model.set_params(**{'objective':multi_objective_loss}) model.fit(X,Y.reshape(-1,len(objectives))) ``` 上述代码片段展示了如何定制适合特定应用场景的需求组合而成的新颖评价体系,并据此训练得到满足预期效果的最佳参数配置方案。 #### 总结 通过对传统 GBDT 方法稍作修改即可轻松支持多目标情形下复杂关系建模需求。这种方法不仅保留了原有技术优势特性——诸如高效性、鲁棒性和灵活性等优点外,还额外增加了适应多样化业务诉求的能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值