XGBoost数据科学竞赛调参实战(系列文章一)

西财“新网银行杯”数据科学竞赛记录

最近在做之前西财“新网银行杯”数据科学竞赛的题目
比赛地址:
http://www.dcjingsai.com/common/cmpt/%E8%A5%BF%E5%8D%97%E8%B4%A2%E7%BB%8F%E5%A4%A7%E5%AD%A6%E2%80%9C%E6%96%B0%E7%BD%91%E9%93%B6%E8%A1%8C%E6%9D%AF%E2%80%9D%E6%95%B0%E6%8D%AE%E7%A7%91%E5%AD%A6%E7%AB%9E%E8%B5%9B_%E7%AB%9E%E8%B5%9B%E4%BF%A1%E6%81%AF.html

总共用了三个模型来预测客户违约风险,包括传统逻辑回归、lightGBM还有XGBoost,最后采用的是XGBoost,做了三天排名到了12名,A榜线上评分0.75576,记录一下XGBoost的一些调参,希望能够向各位大佬多多学习

1.XGBoost是什么

它是Gradient Boosting算法的一个优化的版本,在各大类数据科学竞赛中除了图像和文本领域,它基本上是霸占了超过一半的比例,所以我觉得学好它还是很有优势的,因为我也是第一次用xgboost来打比赛,所以写的不对或者不足的地方希望和各位多多交流。
比赛环境:lightgbm、xgboost、statesmodel、sklearn、numpy、pandas、matplotlib

2.XGBoost的参数包括三类(这里只是具体说一下我进行调参的参数)

详细的参数大家可以去xgboost官方文档中查看

2.1 通用参数

通用参数包括:

2.1.1 booster(默认gbtree)

这个参数一般都会选择gbtree,毕竟我觉得你如果不用树模型作为提升算法的话也没必要用xgboost。。。

2.1.2 silent(默认0)

0表示模型会输出整个建模的流程,如果不想看起来内容特别多的话就选1就行啦,1表示开启静默模式

2.1.3 nthread

一般不需要输入这个参数,模型会自动检测从而调用所有的CPU进行训练

2.2 Booster 参数
2.2.1 eta(默认0.3)

类似于学习率,减少每一步的权重来提高模型的鲁棒性,一般取值从0.01~0.2

2.2.2 max_depth(默认6)

表示树模型的最大深度,可以避免过拟合,一般用gridsearchCV来自动选择就行

2.2.3 min_child_weight[默认1]

表示最小的子节点的权重的和,这个参数建议大家还是直接用CV来选择吧

2.2.4 gamma(默认0)

这个参数和损失函数息息相关,也建议直接用CV来选择

2.2.5 subsample(默认1)

减小这个参数的值,算法会更加保守,避免过拟合。但是,如果这个值设置得过小,它可能会导致欠拟合。一般取值范围为0.5~1

2.2.6 colsample_bytree(默认1)

用来控制每棵随机采样的列数的占比(每一列是一个特征),一般取值范围为0.5~1

2.2.7 lambda(默认1)

表示l2正则项,减少过拟合,这次调节这个参数使得模型效果提升了0.0003

2.2.8 alpha(默认0)

表示l1正则项,同样用来避免过拟合,比赛中调节这个参数没有提升,所以没有用到

2.3 学习目标参数
2.3.1 objective(默认reg:linear)

因为新网这个比赛是要返回预测的概率,所以这里的参数设置为binary:logistic,表示用二分类的逻辑回归来做

2.3.2 eval_metric(默认值取决于objective参数的取值)

新网这个比赛直接要求用AUC来评估,当然一般也是auc用的多

3.调参方法

3.1 sklearn中的GridSearchCV函数

初始化所有参数

n_estimators参数:这个参数调节的作用很小
max_depth参数:最终取4
min_child_weight参数:最终取6

gamma参数:本次比赛中这个参数调节的作用很小,最终取0
subsample参数:最终取0.67
colsample_bytree参数:最终取0.7

lambda参数:最终取2.22
alpha参数:没有使用

eta参数:学习率参数一般放到最后调试

4.小结

调参对于模型的性能提升还是有较大帮助的,虽然数据预处理和特征工程占到了很大的地位,但是调参的过程也能够帮助我们更好的理解模型和比赛的目的

之后还会写关于逻辑回归做评分卡建模和lightGBM建模的文章,那两个会详细一些,这里只是记录一下,最后再将整理的三个模型的代码放GitHub上面

比赛还提供了无标签的数据集,之后会考虑采用集成模型或者无监督学习看能不能够继续提升效果

新手刚刚开始做数据科学的比赛,希望大家多多指教~

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
调参是优化模型性能的重要步骤之一,对于XGBoost回归预测模型来说,常见的调参方法包括以下几个方面: 1. 学习率(learning rate):学习率决定了每次迭代时参数更新的步长,较小的学习率可以使模型更加稳定,但会增加训练时间。一般起始值可以设定为0.1,根据实际情况进行调整。 2. 树的数量和深度:XGBoost是一种基于树的集成方法,树的数量和深度会影响模型的复杂度和泛化能力。通常情况下,增加树的数量可以提高模型性能,但同时也会增加计算开销。树的深度过大可能导致过拟合,需要根据数据集大小和特征维度进行调整。 3. 正则化参数:正则化可以防止模型过拟合。XGBoost提供了两种正则化参数:L1正则化(alpha)和L2正则化(lambda)。增加这两个参数的值可以控制树的复杂度,从而防止过拟合。 4. 子采样率(subsample)和列采样率(colsample_bytree):子采样率指定了每个树使用的训练样本的比例,列采样率指定了每个树使用的特征的比例。这两个参数可以用来减少模型的方差,增强模型的泛化能力。 5. 其他参数:XGBoost还有其他一些参数可以调整,如最大深度(max_depth)、最小样本数(min_child_weight)等,根据具体情况进行调整。 调参的方法可以通过网格搜索、随机搜索或者贝叶斯优化等方式进行。在调参过程中,可以使用交叉验证来评估不同参数组合下模型的性能,并选择表现最好的参数组合。 需要注意的是,调参是一个耗时且需要经验的过程,需要根据具体问题和数据集进行调整。建议在实际应用中进行多次尝试和验证,以得到最优的模型性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值