XGboost原理介绍word
时间: 2025-01-27 13:21:53 浏览: 59
### XGBoost 原理详细介绍
#### 一、梯度提升决策树 (GBDT)
XGBoost 是基于 GBDT 的一种优化算法。GBDT 使用多个弱分类器组合成强分类器,这些弱分类器通常是决策树模型。每棵树都试图纠正前一棵树的错误预测,从而逐步提高整体性能[^1]。
#### 二、目标函数定义
为了使模型更加精确并防止过拟合,在训练过程中引入正则化项来控制复杂度。具体来说,XGBoost 定义了一个通用的目标函数:
\[ Obj(\theta)=\sum_{i=1}^{n}l(y_i,\hat{y}_i)+\sum_{k=1}^{K}\Omega(f_k) \]
其中 \( l() \) 表示损失函数;\( \Omega() \) 则用于衡量单棵回归树 f 的结构复杂程度。
#### 三、分裂节点的选择标准
当构建新的子树时,会考虑如何选择最佳分割点使得增益最大。对于每一个可能的切分方案 t ,计算其对应的 gain :
\[ Gain=\frac{1}{2}[\frac{G_L^2}{H_L+\lambda}+\frac{G_R^2}{H_R+\lambda}-\frac{(G_L+G_R)^2}{H_L+H_R+\lambda}]-\gamma \]
这里 GL 和 HL 分别代表左孩子结点的一阶导数平方和以及二阶导数求和; GR 和 HR 同理表示右孩子结点的相关统计量 ; λ 和 γ 都是用来调整惩罚力度的超参数。
```python
import xgboost as xgb
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
# 创建虚拟数据集
X, y = make_classification(n_samples=1000, n_features=20,
n_informative=2, n_redundant=10,
random_state=7)
data_dmatrix = xgb.DMatrix(data=X,label=y)
# 训练模型
params={'objective':'binary:logistic', 'colsample_bytree': 0.3,'learning_rate': 0.1,
'max_depth': 5, 'alpha': 10}
cv_results=xgb.cv(dtrain=data_dmatrix,params=params,nfold=3,num_boost_round=50,
early_stopping_rounds=10,metrics="auc",as_pandas=True,seed=123)
print((cv_results))
```
阅读全文
相关推荐

















