使用xgboost训练模型时,为什么把max_depth调越高f1_score评分越高?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用xgboost训练模型时,为什么把max_depth调越高f1_score评分越高?相关的知识,希望对你有一定的参考价值。

参考技术A

XGBoost是一种基于树的模型,其中包含许多决策树。在进行训练时,max_depth参数表示树的最大深度。当max_depth值较高时,树的深度更深,这意味着树能够更好地捕捉到数据集中的细微差异,因此可以更好地预测。但是,如果max_depth值过高,树就可能会过度拟合数据,这可能会导致训练集上的较高准确性,但在测试集上的表现较差。因此,需要找到一个平衡点,使得树能够足够地捕捉到数据集中的差异,但不会过度拟合数据。在这种情况下, 通过调整max_depth来增加f1_score评分是一种可能的方法。

Xgboost原理精读

储备知识: 提升树

首先要明确一点,xgboost 是基于提升树的。

什么是提升树,简单说,就是一个模型表现不好,我继续按照原来模型表现不好的那部分训练第二个模型,依次类推。来几个形象的比喻就是:

做题的时候,第一个人做一遍得到一个分数,第二个人去做第一个人做错的题目,第三个人去做第二个人做错的题目,以此类推,不停的去拟合从而可以使整张试卷分数可以得到100分(极端情况)。

把这个比喻替换到模型来说,就是真实值为100,第一个模型预测为90,差10分,第二个模型以10为目标值去训练并预测,预测值为7,差三分,第三个模型以3为目标值去训练并预测,以此类推。

XGBoost VS GBDT

XGBoost (eXtreme Gradient Boosting)是GradientBoosting算法的一个优化的版本,针对传统GBDT算法做了很多细节改进,包括损失函数、正则化、切分点查找算法优化等。


相对于传统的GBM,XGBoost增加了正则化步骤。正则化的作用是减少过拟合现象。
xgboost可以使用随机抽取特征,这个方法借鉴了随机森林的建模特点,可以防止过拟合。

速度上有很好的优化,主要体现在以下方面:
1、分裂点寻找近似算法,先通过直方图算法获得候选分割点的分布情况,然后根据候选分割点将连续的特征信息映射到不同的bucke

以上是关于使用xgboost训练模型时,为什么把max_depth调越高f1_score评分越高?的主要内容,如果未能解决你的问题,请参考以下文章

LightGBM算法 & XGBoost算法对比分析

R语言构建xgboost模型:使用xgboost模型训练tweedie回归模型,特征工程(dataframe转化到data.table独热编码缺失值删除DMatrix结构生成)

R语言构建xgboost模型:交叉验证(cross validation)训练xgboost模型

Xgboost原理精读

R语言构建xgboost模型:控制训练信息输出级别verbose参数

R语言使用caret包构建xgboost模型(xgbTree算法)构建回归模型通过method参数指定算法名称通过trainControl函数控制训练过程