【xgboost】XGBClassifier的参数设置

 XGBClassifier的主要参数及意义

XGBoost参数地址:XGBoost Parameters — xgboost 1.6.0-dev documentation

在运行 XGBoost 之前,我们必须设置三种类型的参数:常规参数、提升器参数和任务参数。

    常规参数与我们用于提升的提升器有关,通常是树模型或线性模型;
    提升器参数取决于你所选择的提升器;
    学习任务参数决定了学习场景,例如回归任务可以使用不同的参数进行排序相关的任务;
    命令行参数的行为与 xgboost 的 CLI 版本相关;

General Parametersbooster

默认:gbtree。使用哪种提升器。可以是gbtree、gblinear或dart。gbtree和dart使用基于树的模型;gblinear使用线性函数。

silent(已弃用)默认:0。已弃用,请使用verbosity。
verbosity 

默认:1。

0 (silent), 1 (warning), 2 (info), 3 (debug)。

nthread默认:最大线程数。用于运行XGBoost的并行线程数。
Parameters for Tree Boostereta

默认:0.3。别名:learning_rate。

用于防止过拟合。在每个提升步骤之后,我们可以直接获得新特征的权重,并且eta缩小特征权重以使提升过程更加健壮。

范围:[0,1]

gamma

默认:0。别名:min_split_loss。

在树的叶节点上进行进一步分区所需的最小loss减少。gamma越大,算法越健壮。

范围:[0,∞]

max_depth

默认:6。树的最大深度。

增加此值将使模型更复杂,更容易过拟合。 0表示没有限制。请注意,当grow_policy设置为depthwise时,需要限制。
范围:[0,∞]

min_child_weight

  默认:1。叶节点所需的实例权重(hessian)的最小总和。

如果树分区步骤导致叶节点的实例权重之和小于min_child_weight,则构建过程将放弃进一步的分区。在线性回归任务中,这仅对应于每个节点中需要的最小实例数。 min_child_weight越大,算法越健壮。
范围:[0,∞]

max_delta_step

默认:0。允许每个叶子输出的最大增量步长。

如果该值设置为0,则表示没有约束。如果将其设置为正值,则可以帮助使更新步骤更加健壮。通常不需要此参数,但是当类非常不平衡时,它可能有助于逻辑回归。将其设置为值1-10可能有助于控制更新。
范围:[0,∞]

subsample

默认:1。训练集的子样本比例。

将其设置为0.5意味着XGBoost会在生长树之前随机抽取一半训练数据。这样可以防止过度拟合。下采样将在每次增强迭代中发生一次。

范围: (0,1]

colsample_bytree, colsample_bylevel, colsample_bynode

colsample_bylevel, colsample_bynode    

默认:1。这是一组用于列的下采样的参数。

范围: (0,1]

    colsample_bytree:构造每个树时列的下采样比例。对于构造的每个树,下采样发生一次。
    colsample_bylevel:每个级别的列的下采样比例。对于树中达到的每个新深度级别,下采样都会发生一次。列是从为当前树选择的列集合进行下采样的。
    colsample_bynode:每个节点(拆分)的列的下采样比例。每次评估新的拆分时,都会进行一次下采样。列是从为当前级别选择的列集合进行下采样的。

这3个参数的作用会累积。例如,具有64个特征的组合{'colsample_bytree':0.5,'colsample_bylevel':0.5,'colsample_bynode':0.5}将在每次拆分时留下4个特征供您选择?

lambda

默认:1。别名:reg_lambda。L2正则化项。

增加此值将使模型更加健壮。

alpha

默认:0。别名:reg_alpha。L1正则化项。

增加此值将使模型更加健壮。

tree_method

默认:auto。XGBoost中使用的树构造算法。

可选项:auto,exact,approx,hist,gpu_exact,gpu_hist。

分布式和外部存储器版本仅支持tree_method = approx。

    auto:使用启发式方法选择最快的方法。(1)对于中小型数据集,将使用精确的贪婪(exact)。(2)对于非常大的数据集,将选择近似算法(approx)。(3)因为旧行为总是在单个机器中使用精确贪婪,所以当选择近似算法来通知该选择时,用户将得到消息。
    exact:精确贪心算法。
    approx:使用分位数草图和梯度直方图的近似贪婪算法。
    hist:快速直方图优化近似贪心算法。 它使用了一些性能改进,例如垃圾箱缓存。
    gpu_exact:精确算法的GPU实现。
    gpu_hist:hist算法的GPU实现。

scale_pos_weight

默认:1。控制正负权重的平衡,对不平衡的类有用。

要考虑的典型值:sum(负实例)/ sum(正实例)。

参考资料

这里只摘录了部分个人认为比较常用的参数,其他可调参数还有很多,

具体可以参考这两篇文章:

XGBoost调参详解 - 知乎

【机器学习算法总结】XGBoost_yyy430的博客-CSDN博客

xgboost具体如何调参,可以参考这两篇文章:

https://segmentfault.com/a/1190000014040317
sklearn中的XGBClassifier参数详解_lyy的博客-CSDN博客_xgbclassifier参数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值