xgboost简单介绍_XGBOOST模型介绍

本文是机器学习系列的第三篇,主要介绍了XGBOOST模型。XGBOOST是一种监督学习模型,由一系列CART树组成。文章详细解释了XGBOOST的基本概念、参数设置,并提供了代码示例,包括模型训练、参数调优和特征选择。通过实例展示了XGBOOST在住房租金预测比赛中的应用,并讨论了特征丢弃和特征选择的影响。
摘要由CSDN通过智能技术生成

描述

前言

这是机器学习系列的第三篇文章,对于住房租金预测比赛的总结这将是最后一篇文章了,比赛持续一个月自己的总结竟然也用了一个月,牵强一点来说机器学习也将会是一个漫长的道路,后续机器学习的文章大多数以知识科普为主,毕竟自己在机器学习这个领域是个渣渣,自己学到的新知识点会分享给大家的。

前面的文章谈了谈这次比赛非技术方面的收获,对数据集的初步了解和特征工程的处理,今天主要介绍这次使用的模型--XGBOOST。

1ab990242e893413ca6fccb9264c15b9.png

XGBOOST模型介绍

关于xgboost的原理网络上的资源很少,大多数还停留在应用层面,自己也是仅仅学习了一点应用,关于原理可以参考陈天奇博士的这篇文章

https://xgboost.readthedocs.io/en/latest/tutorials/model.html。

简单介绍:

XGBOOST是一个监督模型,xgboost对应的模型本质是一堆CART树。用一堆树做预测,就是将每棵树的预测值加到一起作为最终的预测值。下图就是CART树和一堆CART树的示例,用来判断一个人是否会喜欢计算机游戏:

921b7d5cebbeec721ceb53649b464601.png

a4acb4f135d0bc07a3087e74e6acfbd7.png

第二张图明了如何用一堆CART树做预测,就是简单将各个树的预测分数相加。

参数介绍:

官方参数介绍看这里: https://xgboost.readthedocs.io/en/latest/parameter.html#general-parameters

比较重要的参数介绍:

“reg:linear” –线性回归。 “reg:logistic” –逻辑回归。 “binary:logistic” –二分类的逻辑回归问题,输出为概率。 “binary:logitraw” –二分类的逻辑回归问题,输出的结果为wTx。

“count:poisson”–计数问题的poisson回归,输出结果为poisson分布。在poisson回归中,max_delta_step的缺省值为0.7。(used to safeguard optimization)

“multi:softmax”–让XGBoost采用softmax目标函数处理多分类问题,同时需要设置参数num_class(类别个数)

“multi:softprob” –和softmax一样,但是输出的是ndata * nclass的向量,可以将该向量reshape成ndata行nclass列的矩阵。没行数据表示样本所属于每个类别的概率。

lambda [default=0] L2 正则的惩罚系数alpha [default=0] L1 正则的惩罚系数

lambda_bias 在偏置上的L2正则。缺省值为0(在L1上没有偏置项的正则,因为L1时偏置不重要)

eta [default=0.3] 为了防止过拟合,更新过程中用到的收缩步长。在每次提升计算之后,算法会直接获得新特征的权重。eta通过缩减特征的权重使提升计算过程更加保守。取值范围为:[0,1]

max_depth[default=6]数的最大深度。缺省值为6,取值范围为:[1,∞]

min_child_weight [default=1] 孩子节点中最小的样本权重和。如果一个叶子节点的样本权重和小于min_child_weight则拆分过程结束。在现行回归模型中,这个参数是指建立每个模型所需要的最小样本数。该成熟越大算法越conservative 取值范围为: [0,∞]

xgboost参数设置的代码示例:

1xgboost参数设置代码示例: 2 3# 划分数据集 4X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.01, random_state=1729) 5print(X_train.shape, X_test.shape) 6 7#模型参数设置 8xlf = xgb.XGBRegressor(max_depth=10,  9                        learning_rate=0.1, 10                        n_estimators=10, 11                        silent=True, 12                  

### XGBoost 模型图绘制与可视化解释 #### 使用 Graphviz 进行模型图绘制 为了实现XGBoost模型的可视化,`graphviz`库是一个非常有效的工具。通过安装并导入此库,可以方便地将训练好的XGBoost模型转换成易于理解的图形表示形式[^1]。 ```python import xgboost as xgb from graphviz import Source # 假设已经有一个训练完成的booster对象bst # bst = xgb.train(params, dtrain) # 将模型导出为Graphviz源码字符串 graph_data = xgb.to_graphviz(bst, num_trees=0) # 显示图像 Source(graph_data.source).view() ``` 这段代码展示了如何利用`to_graphviz()`函数来创建指定编号树(此处选择了第0棵树)对应的DOT语言描述,并借助`Source().view()`方法将其渲染为可视化的图片文件显示出来。 #### 理解XGBoost模型结构及其工作原理 XGBoost是一种基于梯度提升框架下的机器学习算法,在处理回归、分类等问题上表现出色。它内部采用加法模型(additive model),即多棵弱决策树组合而成强预测器的方式运作。每一轮迭代过程中都会新增一棵新的树去拟合之前所有树残差误差最小化方向上的负梯度值作为目标变量继续建模直到满足停止条件为止[^2]。 因此当观察到具体的某一层级节点时: - 如果是根结点,则代表整个数据集; - 对于非叶节点而言,会依据某个特征属性设定阈值来进行样本划分操作;而叶子节点则保存着最终输出的结果——对于二元分类问题来说就是正类别的概率估计值。 #### 可视化模型决策过程 除了上述提到的基础绘图功能外,还可以进一步探索更深入的信息展示方式比如路径高亮等特性帮助我们更好地解读复杂模型背后的逻辑关系。例如可以通过自定义样式参数突出显示特定实例经过哪些分支到达终点位置从而直观呈现个体案例在整个流程中的走向变化情况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值