Xgboost 图解
时间: 2025-03-08 12:07:28 浏览: 45
### XGBoost 算法原理及其图解
XGBoost 是一种基于梯度提升决策树 (Gradient Boosting Decision Tree, GBDT) 的机器学习算法,其通过构建一系列弱预测模型来形成强预测器。该方法不仅继承了传统 GBDT 的优点,还引入了许多创新性的改进措施。
#### 目标函数与优化求解
为了提高泛化能力和训练速度,XGBoost 设计了一个更加通用的目标函数,它由两部分组成:一是用于衡量模型预测值与真实标签之间差异的损失项;二是正则化项,用来控制模型复杂度以防止过拟合现象的发生[^2]。
对于目标函数的具体形式以及如何对其进行高效的优化求解,在文献中有详细的推导过程。值得注意的是,XGBoost 利用了泰勒展开近似技术简化计算,并采用列块结构存储数据以便于并行处理和内存访问优化。
#### 图解 XGBoost 工作流程

上图为典型的 XGBoost 训练过程中的一轮迭代示意图:
- **输入样本集**:给定一组带有特征向量 \( \mathbf{x}_i \in R^n \) 和相应标记 y_i 的实例;
- **初始化基础评分 T_0(x)** :通常设置为常数 c 或者其他简单估计方式得到的结果;
- **循环执行 t=1,...,T 次**:
- 对当前残差 r_{it} 进行加权采样获得新的子样本集合 D_t ;
- 基于这些新选中的样本建立一棵回归树 f_t ,使得加入此棵树后的整体误差最小化;
- 更新累计分数 F_t=F_(t−1)+f_t;
最终输出累加所有基分类器得分作为最后预测结果\[F_T(\mathbf{x})=\sum\limits^{T}_{t=1}{f_t}\][^1].
```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_train, data_test, label_train, label_test = train_test_split(
X, y, test_size=0.25, random_state=7)
dtrain = xgb.DMatrix(data_train, label=label_train)
param = {'max_depth': 6, 'eta': 0.3}
num_round = 10
bst = xgb.train(param, dtrain, num_round)
```
阅读全文
相关推荐
















