机器学习:XGBoost

本文深入探讨了XGBoost的核心原理,包括目标函数的二阶泰勒展开、正则项定义、决策树结构以及XGBoost与GBDT的区别。通过引入二阶导数信息和正则项,XGBoost有效地防止过拟合,提高模型泛化能力。同时,XGBoost的优化算法和并行计算特性使其在效率和性能上超越传统GBDT。

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


机器学习 深度学习 NLP 搜索推荐 等 索引目录


上一篇博文提到XGBoost是GBDT的扩展和改进,在GBDT中只用了一阶导信息,XGBoost中考虑了二阶导信息,对Loss Function做了二阶泰勒展开,并在目标函数上加入了正则项,用以权衡目标函数的下降和模型的复杂度,避免过拟合。

1、目标函数

J ( f t ) = ∑ i = 1 n L ( y i , y ^ i ( t − 1 ) + f t ( x i ) ) + Ω ( f t ) + C ( 式 1 ) J(f_{t})=\sum_{i=1}^{n}L(y_{i},\hat{y}_{i}^{(t-1)}+f_{t}(x_{i}))+\Omega (f_{t})+C (式1) J(ft)=i=1nL(yi,y^i(t1)+ft(xi))+Ω(ft)+

### XGBoost 机器学习算法详解 #### 算法概述 XGBoost是一种基于梯度提升决策树(Gradient Boosting Decision Tree, GBDT)框架的优化版本。该算法通过一系列弱预测模型(通常是决策树),以迭代方式逐步改进整体模型的表现。 #### 回归树构建方法 在XGBoost中,回归树的创建不仅依赖于样本权重调整机制,还引入了正则项来惩罚复杂的结构。具体来说,在计算分裂增益时会加入两个超参数:`γ`用于控制新分支产生的代价;而`λ`则是用来调节L2范数的影响程度[^2]。 #### 和GBDT的主要区别 - **复杂度考量** 不同于传统的GBDT仅在后期阶段实施剪枝操作以简化过拟合的风险,XGBoost自始至终都将树形结构的成本纳入到目标函数之中。 - **泰勒展开阶数差异** 当更新叶子节点分数时,XGBoost采用了更为精确的二次近似形式——即利用了一阶和二阶偏导数值来进行局部最优解搜索过程中的逼近处理,这使得其收敛速度更快且精度更高[^1]。 - **并行化支持** 另外一个重要特性就是能够有效利用现代计算机硬件资源实现高效运算的能力。特别是在寻找最佳分割点的过程中允许并发执行多个线程的任务分配策略极大地提升了训练效率。 #### 参数设置建议 为了防止模型过度适应训练集而导致泛化能力下降的问题,可以通过适当降低`subsample`的比例让每次迭代只使用部分数据参与建模工作,从而达到增强鲁棒性的目的[^3]。 ```python import xgboost as xgb from sklearn.datasets import make_regression from sklearn.model_selection import train_test_split # 创建模拟数据集 X, y = make_regression(n_samples=1000, n_features=20, noise=0.1) # 划分训练集与测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # 定义DMatrix对象 dtrain = xgb.DMatrix(X_train, label=y_train) dtest = xgb.DMatrix(X_test, label=y_test) # 设置参数字典 params = { 'objective': 'reg:squarederror', # 对于回归问题采用平方误差作为损失函数 'eval_metric': ['rmse'], # 使用均方根误差评估指标 'eta': 0.1, # 学习率,默认值为0.3 'max_depth': 6, # 树的最大深度 'lambda': 1, # L2正则化系数 'gamma': 0 # 控制是否进行进一步划分所需最小减少的loss } # 训练模型 bst = xgb.train(params=params, dtrain=dtrain, num_boost_round=100, evals=[(dtest,'eval')], verbose_eval=True) # 预测结果 preds = bst.predict(dtest) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值