【XGBoost】xgb模型调参

本文详细介绍了如何使用XGBoost进行模型评估,重点关注特征重要性分析和参数调优。通过调整max_depth、min_child_weight、gamma、subsample和colsample_bytree等关键参数,以提升模型的泛化能力。作者分享了手动调整参数的方法和优化过程,以找到最佳参数组合来避免过拟合和欠拟合。
摘要由CSDN通过智能技术生成

1.模型评估(重点看一下)
主要评估指标包括:
开发的模型评估模块:支持输出ROC曲线,AP曲线以及特征重要度柱状图等.
生成的特征重要度柱状图,可以看到不同特征的权重,排名越高说明该特征对决策影响越大。此外,评估特征好坏还有一个小trick,即观察该柱状图的边界是否平滑,这个弧线越平滑,说明特征选取的越准确越丰满。如下图所示,根据排名,可以相应找到对应的特征,评估后结果比较合理。但边界还是不够平滑,说明特征还可以继续丰满。
2.模型调参
2.1常用的可调参数
eta[default=0.3]——和GBM中的 learning rate 参数类似。通过减少每一步的权重,可以提高模型的鲁棒性。典型值为0.01-0.2

min_child_weight[default=1]——决定最小叶子节点样本权重和。和GBM的 min_child_leaf参数类似,但不完全一样。XGBoost的这个参数是最小样本权重的和,而GBM参数是最小样本总数。这个参数用于避免过拟合。当它的值较大时,可以避免模型学习到局部的特殊样本。但是如果这个值过高,会导致欠拟合。

max_depth[default=6]——树的最大深度。这个值也是用来避免过拟合的。max_depth越大,模型会学到更具体更局部的样本。这个参数的取值最好在3-10之间。我选的起始值为6,但是你也可以选择其它的值。起始值在4-6之间都是不错的选择。

gamma[default=0]——在节点分裂时,只有分裂后损失函数的值下降了,才会分裂这个节点。Gamma指定了节点分裂所需的最小损失函数下降值。这个参数的值越大,算法越保守。这个参数的值和损失函数息息相关,所以是需要调整的。

subsample[default=1]——和GBM中的subsample参数一模一样。这个参数控制对于每棵树,随机采样的比例。减小这个参数的值,算法会更加保守,避免过拟合。但是,如果这个值设置得过小,它可能会导致欠拟合。典型值:0.5-1。

colsample_bytree[default=1]——和GBM里面的max_features参数类似。用来控制每棵随机采样的列数的占比(每一列是一个特征)。典型值:0.5-1。

lambda [default=1]——L2权重的正则化项(类似于岭回归)。这用于处理XGBoost的正则化部分。虽然许多数据科学家不经常使用它,但可以通过调整该项来减少过度拟合。

alpha[default=1]——L1正则化项的权重(类似于Lasso回归)。可以在非常高维度的情况下使用,以便算法在实施时运行得更快。

scale_pos_weight[default=1]——在各类别样本十分不平衡时,把这个参数设定为一个正值,可以使算法更快收敛。

2.2参数调整的过程
比较通用的是使用GridSearchCV来对每个参数区间自动搜索返回最优匹配参数,但是由于数据量较大,尝试过程中耗时严重,所以决定手工来调。

两种方式:

手动
GridSearchCV
方法就是控制变量,每次仅调整1-2个参数,其他参数保持不变,在模型训练过程中,观察训练auc以及测试auc,寻找测试auc的最高值并记录下来。接着变换参数值,再按此方法找到新参数情况下测试auc以及测试loss最优结果,对比之后即可确定最优参数。

Step1:初始化基本参数,如booster=gbtree,因为是做二分类则objective=binary:logistic,然后把训练轮数调高方便找到最优解。
-Step2:调整max_depth和min_child_weight 。
首先,让我们设置更宽的范围,然后我们将为更小的范围执行另一次迭代。
从max_depth=6,之后尝试了max_depth=3,接着尝试了5和4,最终结果表明max_depth=4得到的结果最优。
接着固定max_depth=4,分别尝试min_child_weight={10,8,6,4}后发现min_child_weight=6结果最优。
(source:http://rongzijing.win/index.php/archives/133/)

Step3:调整gamma[default=0] 分别尝试了0.1-0.6,可以采用二分的方式,会比较快,最终在0.1的时候取得最优解。
Step4:为了防止过拟合:调整subsample[default=1]和colsample_bytree[default=1]。
一般来讲,可以在0.6、0.7、0.8、0.9这四种情况中尝试,对于本次模型来说,subsample=0.8和colsample_bytree=0.8的时候取得最优解。

Step5:调整alpha[default=1]和lambda[default=1]
这一步是通过调整正则化系数来减少过度拟合。alpha是L1正则化的系数,lambda是L2正则化系数,虽然许多人不使用这些参数,因为gamma提供了控制模型复杂性的实质方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值