gbdt心得

训练过程

伪代码如下:

初始化,f_m = f_0= label均值
每新建一个树,
   更新残差 res_m = label - f_m
   更新叶子节点预测值 f_m = f_prev + lr * res_m
   每做一次特征划分,计算SE = (残差res_m-残差均值)**2

预测过程

预测结果 = 训练数据label均值 + lr*每棵树对应叶子节点的残差之和

参考博客
参考代码

### GBDT算法原理 GBDT,全称为Gradient Boosting Decision Tree(梯度提升决策树),是一种高效的集成学习方法[^1]。该算法通过迭代地添加决策树以逐步降低预测误差,在回归和分类问题上表现出色。 #### 基础理论 GBDT的基础在于梯度提升算法。此过程涉及构建一系列弱学习器——通常为决策树,并将其组合成一个强学习器。每棵树都试图纠正前一棵树的错误,具体来说就是拟合之前模型产生的残差或负梯度[^3]。 对于二元分类任务,GBDT采用对数似然损失函数作为目标函数的一部分,其中标签\( y \)可以取值为1或-1。为了最小化这个损失函数,计算当前预测值相对于真实值的负梯度,并利用新生成的一棵或多棵树来逼近这些负梯度[^4]。 ```python import numpy as np from sklearn.datasets import make_classification from sklearn.model_selection import train_test_split from sklearn.ensemble import GradientBoostingClassifier X, y = make_classification(n_samples=1000, n_features=20, n_informative=2, n_redundant=10, random_state=42) X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=42) gbdt_model = GradientBoostingClassifier() gbdt_model.fit(X_train, y_train) predictions = gbdt_model.predict(X_test) ``` 这段Python代码展示了如何使用`scikit-learn`库中的`GradientBoostingClassifier`类创建并训练一个简单的GBDT模型用于解决二分类问题。 ### 关键参数调整策略 当应用GBDT时,有几个重要的超参数需要调优: - **n_estimators**: 控制要建立多少颗树; - **learning_rate**: 影响每次更新权重的比例大小; - **max_depth**: 设置单个估计量的最大深度; - **subsample**: 定义子样本比例,有助于防止过拟合; 合理设置上述参数能够显著影响最终模型的表现效果。 ### 实际应用场景 由于其优秀的泛化能力和处理复杂模式的能力,GBDT广泛应用于金融风险评估、广告点击率预估等领域。特别是在面对具有大量特征的数据集时,GBDT往往能提供更精确的结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值