GBDT-2

该博客深入探讨了GBDT(梯度提升决策树)中的CART树构造过程,包括在回归和分类问题中的应用。对于回归问题,GBDT通过拟合残差来构建树;而在分类问题中,利用Softmax处理概率映射,迭代拟合概率差值。内容涉及特征选择、损失函数最小化和树的构建策略,并阐述了预测阶段的实现。

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

多分类实例

在这里插入图片描述
[1,0,0] 表示样本属于山鸢尾,[0,1,0] 表示样本属于杂色鸢尾,[0,0,1] 表示属于维吉尼亚鸢尾。
在这里插入图片描述
Cart Tree1生成过程
遍历所有样本对应的所有特征,找其最好的切分条件给其分成树
考虑问题:
1.是哪个特征最合适? 2.是这个特征的什么特征值作为切分点?
举例:
构建第一棵树时,首先遍历到花萼长度,遍历到5.1,假如以5.1作为切分点,小于5.1为一类,大于等于5.1为一类
在这里插入图片描述y1 为 R1 所有样本的label 的均值 1/1=1。y2 为 R2 所有样本的label 的均值(1+0+0+0+0)/5=0.2

随后,遍历到花萼长度特征的第二个样本的值4.9
在这里插入图片描述
显然,以4.9切分,其损失值大于特征一的第一个特征值的损失值-舍弃;之后依次遍历,找出最小的损失值对应的切分方式来构建cart tree1,cart tree2、cart tree3 类同
Cart Tree的预测函数
GBDT累加时累加的是f(x),因此需要对每个树进行表达f(x) 举例
在这里插入图片描述
有了类别概率后即可进行迭代
在这里插入图片描述

GBDT用于回归时使用CART回归树,每次对残差(负梯度)进行拟合。而分类问题要怎么每次对残差拟合?
分类问题:类别相减没有意义。因此,可以用Softmax进行概率的映射,然后每轮拟合概率的残差,不断迭代。
如实际是A类,但构建树预测其是A类的概率为0.8,故下次要拟合概率差值0.2

回归案例

数据
在这里插入图片描述
训练
在这里插入图片描述
1.初始化弱学习器
在这里插入图片描述
2.迭代轮数m=1,2…,M n_trees=5 所以M=5
在这里插入图片描述
在这里插入图片描述
将残差作为样本的标签值来训练弱学习器f1(x)
在这里插入图片描述
寻找回归树的最佳划分节点,遍历每个特征的每个可能取值,从年龄特征的5开始,到体重特征的70结束,分别计算分裂后两组数据的平方损失。
在这里插入图片描述
寻找总平方损失最小为0.025有两个划分点:年龄21和体重60,所以随机选一个作为划分点
在这里插入图片描述
设置的参数中树的深度max_depth=3,现在树的深度只有2,需要再进行一次划分。这次划分要对左右两个节点分别进行划分:
即重复上述过程,对左节点中样本0,1继续划分;对右节点中样本2,3继续划分
在这里插入图片描述
在这里插入图片描述
从而构造第一棵树
在这里插入图片描述
在这里插入图片描述
设置学习率-防止过拟合
迭代建树
在这里插入图片描述
预测阶段
在这里插入图片描述
利用上面样本建立好的树来进行预测
在这里插入图片描述

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、付费专栏及课程。

余额充值