XGBClassifier的主要参数及意义
XGBoost参数地址:XGBoost Parameters — xgboost 1.6.0-dev documentation
在运行 XGBoost 之前,我们必须设置三种类型的参数:常规参数、提升器参数和任务参数。
常规参数与我们用于提升的提升器有关,通常是树模型或线性模型;
提升器参数取决于你所选择的提升器;
学习任务参数决定了学习场景,例如回归任务可以使用不同的参数进行排序相关的任务;
命令行参数的行为与 xgboost 的 CLI 版本相关;
General Parameters | booster | 默认: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 Booster | eta | 默认:0.3。别名:learning_rate。 用于防止过拟合。在每个提升步骤之后,我们可以直接获得新特征的权重,并且eta缩小特征权重以使提升过程更加健壮。 范围:[0,1] |
gamma | 默认:0。别名:min_split_loss。 在树的叶节点上进行进一步分区所需的最小loss减少。gamma越大,算法越健壮。 范围:[0,∞] |
|
max_depth | 默认:6。树的最大深度。 增加此值将使模型更复杂,更容易过拟合。 0表示没有限制。请注意,当grow_policy设置为depthwise时,需要限制。 |
|
min_child_weight | 默认:1。叶节点所需的实例权重(hessian)的最小总和。 如果树分区步骤导致叶节点的实例权重之和小于min_child_weight,则构建过程将放弃进一步的分区。在线性回归任务中,这仅对应于每个节点中需要的最小实例数。 min_child_weight越大,算法越健壮。 |
|
max_delta_step | 默认:0。允许每个叶子输出的最大增量步长。 如果该值设置为0,则表示没有约束。如果将其设置为正值,则可以帮助使更新步骤更加健壮。通常不需要此参数,但是当类非常不平衡时,它可能有助于逻辑回归。将其设置为值1-10可能有助于控制更新。 |
|
subsample | 默认:1。训练集的子样本比例。 将其设置为0.5意味着XGBoost会在生长树之前随机抽取一半训练数据。这样可以防止过度拟合。下采样将在每次增强迭代中发生一次。 范围: (0,1] |
|
colsample_bytree, colsample_bylevel, colsample_bynode | colsample_bylevel, colsample_bynode 默认:1。这是一组用于列的下采样的参数。 范围: (0,1] colsample_bytree:构造每个树时列的下采样比例。对于构造的每个树,下采样发生一次。 这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)因为旧行为总是在单个机器中使用精确贪婪,所以当选择近似算法来通知该选择时,用户将得到消息。 |
|
scale_pos_weight | 默认:1。控制正负权重的平衡,对不平衡的类有用。 要考虑的典型值:sum(负实例)/ sum(正实例)。 |
参考资料
这里只摘录了部分个人认为比较常用的参数,其他可调参数还有很多,
具体可以参考这两篇文章:
【机器学习算法总结】XGBoost_yyy430的博客-CSDN博客
xgboost具体如何调参,可以参考这两篇文章:
https://segmentfault.com/a/1190000014040317
sklearn中的XGBClassifier参数详解_lyy的博客-CSDN博客_xgbclassifier参数