XGBoost参数详解(API⽂档)
**
XGBoost参数
**
在运⾏XGBoost之前,我们必须设置三种类型的参数:常规参数,增强器参数和任务参数。
⼀般参数与我们⽤来进⾏增强的助推器有关,通常是树状模型或线性模型
增压器参数取决于您选择的增压器
学习任务参数决定学习场景。例如,回归任务可以对排名任务使⽤不同的参数。planta
命令⾏参数与XGBoost的CLI版本的⾏为有关。
常规参数
booster[默认= gbtree]
使⽤哪个助推器。可以gbtree,gblinear或者dart; gbtree并dart使⽤基于树的模型,同时gblinear使⽤线性函数。
silent [默认值= 0] [不推荐使⽤]
不推荐使⽤。请verbosity改⽤。
verbosity [默认值= 1]
打印消息的详细程度。有效值为0(静默),1(警告),2(信息),3(调试)。有时,XGBoost会尝试根据启发式来更改配置,该显⽰为警告消息。如果出现意外⾏为,请尝试增加详细程度的值。
nthread [如果未设置,默认为最⼤可⽤线程数]
⽤于运⾏XGBoost的并⾏线程数
disable_default_eval_metric [默认= 0]
标记以禁⽤默认指标。设置为> 0禁⽤。
num_pbuffer [由XGBoost⾃动设置,⽆需由⽤户设置]
预测缓冲区的⼤⼩,通常设置为训练实例数。缓冲区⽤于保存最后提升步骤的预测结果。
num_feature [由XGBoost⾃动设置,⽆需由⽤户设置]
⽤于增强的特征尺⼨,设置为特征的最⼤尺⼨
Tree Booster的参数
eta[默认= 0.3,别名:learning_rate]
更新中使⽤的步长收缩,以防⽌过度拟合。在每个增强步骤之后,我们都可以直接获得新特征的权重,并eta缩⼩特征权重以使增强过程更加保守。
范围:[0,1]
gamma[默认= 0,别名:min_split_loss]
在树的叶节点上进⾏进⼀步分区所需的最⼩损失减少。越⼤gamma,算法将越保守。
范围:[0,∞]
max_depth [默认= 6]
⼀棵树的最⼤深度。增加此值将使模型更复杂,并且更可能过度拟合。仅lossguided当tree_method设置为hist并且表⽰深度没有限制时,才在增长策略中接受0 。注意,训练⼀棵深树时,XGBoost会⼤量消耗内存。
范围:[0,∞](仅lossguided当tree_method设置为时,增长策略才接受0 hist)
⼦级中实例重量的最⼩总和(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[默认= 1]
tasks
这是⽤于列⼆次采样的⼀组参数。
所有colsample_by参数的范围为(0,1],默认值为1,并指定要进⾏⼆次采样的列的分数。
colsample_bytree是构造每棵树时列的⼦采样率。对每⼀个构造的树进⾏⼀次⼆次采样。
colsample_bylevel是每个级别的列的⼦样本⽐率。对于树中达到的每个新深度级别,都会进⾏⼀次⼆次采样。从为当前树选择的⼀组列中对列进⾏⼦采样。
colsample_bynode是每个节点(拆分)的列的⼦样本⽐率。每次评估新的分割时,都会进⾏⼀次⼆次采样。列是从为当前级别选择的⼀组列中进⾏⼦采样的。
colsample_by参数累积⼯作。例如,具有64个功能的组合将在每个拆分中保留8个功能供您选择。{‘colsample_bytree’:0.5,
‘colsample_bylevel’:0.5, ‘colsample_bynode’:0.5}
lambda[默认= 1,别名:reg_lambda]
youproxyL2正则化权重项。增加此值将使模型更加保守。
alpha[默认= 0,别名:reg_alpha]
权重的L1正则化项。增加此值将使模型更加保守。
tree_method字符串[default = auto]
XGBoost中使⽤的树构建算法。请参阅参考⽂件中的描述。
XGBoost⽀持hist和approx分布式训练和唯⼀⽀持approx外部存储器的版本。
选择:auto,exact,approx,hist,gpu_hist
auto:使⽤启发式选择最快的⽅法。
确保英文对于中⼩型数据集,exact将使⽤精确贪婪()。
对于⾮常⼤的数据集,approx将选择近似算法()。
由于旧⾏为总是在单个计算机上使⽤完全贪婪,因此,当选择近似算法来通知该选择时,⽤户将收到⼀条消息。
无能为力英文
exact:精确的贪婪算法。
approx:使⽤分位数草图和梯度直⽅图的近似贪婪算法。
hist:快速直⽅图优化的近似贪婪算法。它使⽤了⼀些性能改进,例如垃圾箱缓存。
gpu_hist:GPU hist算法的实现。
sketch_eps [默认值= 0.03]
仅⽤于tree_method=approx。
这⼤致转化为箱数。与直接选择垃圾箱数量相⽐,这具有草图准确性的理论保证。O(1 / sketch_eps)
通常,⽤户不必对此进⾏调整。但是,请考虑设置较低的数字,以更精确地枚举拆分后的候选⼈。
制定英文范围:(0,1)
控制正负权重的平衡,这对于不平衡的班级很有⽤。需要考虑的典型值:。有关更多讨论,请参见参数调整。另外,请参见Higgs Kaggle 竞赛演⽰,例如:R,py1,py2,py3。sum(negative instances) / sum(positive instances)
updater[默认= grow_colmaker,prune]
逗号分隔的字符串定义要运⾏的树更新程序的顺序,从⽽提供了⼀种构造和修改树的模块化⽅法。这是⼀个⾼级参数,通常会根据其他⼀些参数⾃动设置。但是,它也可以由⽤户显式设置。存在以下更新程序:
grow_colmaker:基于树的⾮分布式列结构。
distcol:具有基于列的数据拆分模式的分布式树结构。
grow_histmaker:基于直⽅图计数全局提议的基于⾏的数据拆分的分布式树结构。
grow_local_histmaker:基于本地直⽅图计数。
grow_skmaker:使⽤近似草图算法。
sync:同步所有分布式节点中的树。
refresh:根据当前数据刷新树的统计信息和/或叶值。注意,不对数据⾏进⾏随机⼦采样。
prune:修剪损失<min_split_loss(或gamma)的分割。
在分布式设置中,grow_histmaker,prune默认情况下会将隐式更新程序序列值调整为,您可以将其设置tree_method为hist使⽤
grow_histmaker。
refresh_leaf [默认值= 1]
这是refresh更新程序的参数。当此标志为1时,将更新树叶以及树节点的统计信息。当它为0时,仅更新节点统计信息。
process_type[默认= default]
⼀种运⾏的加速过程。
选择:default,update
default:创建新树的常规增强过程。
心烦意乱
update:从现有模型开始,仅更新其树。在每次增强迭代中,都会从初始模型中提取⼀棵树,为该树运⾏指定的更新程序序列,然后将修改后的树添加到新模型中。新模型将具有相同或更少数量的树,具体取决于执⾏的增强迭代次数。当前,以下内置更新程序可与此进程类型有意义地使⽤:refresh,prune。使⽤process_type=update,不能使⽤创建新树的更新程序。
grow_policy[默认= depthwi]
控制将新节点添加到树的⽅式。
当前仅在tree_method设置为时受⽀持hist。
选择:depthwi,lossguide
depthwi:在最靠近根的节点处拆分。
lossguide:在损耗变化最⼤的节点处拆分。
max_leaves [默认= 0]
湖南四六级报名要添加的最⼤节点数。仅在grow_policy=lossguide设置时相关。
max_bin,[默认值= 256]
仅在tree_method设置为时使⽤hist。
⽤于存储连续特征的最⼤不连续回收箱数。
增加此数⽬可提⾼拆分的最佳性,但需要增加计算时间。
predictor,[default =’'cpu_predictor``]
要使⽤的预测器算法的类型。提供相同的结果,但允许使⽤GPU或CPU。
cpu_predictor:多核CPU预测算法。
gpu_predictor:使⽤GPU进⾏预测。默认tree_method值为gpu_hist。
num_parallel_tree,[default = 1]-
每次迭代期间构造的并⾏树的数量。此选项⽤于⽀持增强型随机森林。
Dart Booster的其他参数(booster=dart)
注意
使⽤predict()与DART助推器
如果booster对象是DART类型,predict()将执⾏删除操作,即,仅对某些树进⾏评估。如果data不是训练数据,将会产⽣不正确的结果。为了获得正确的测试结果,请设置ntree_limit为⾮零值,例如
preds = bst.predict(dtest, ntree_limit=num_round)scoot
sample_type[默认= uniform]
采样算法的类型。
uniform:统⼀选择掉落的树⽊。
weighted:按重量选择掉落的树⽊。
normalize_type[默认= tree]
归⼀化算法的类型。
tree:新树的重量与每棵掉落的树相同。
新树的重量是。1 / (k + learning_rate)
掉落的树⽊的缩放⽐例为。k / (k + learning_rate)
forest:新树的权重等于被丢弃树(森林)的总和。
新树的重量是。1 / (1 + learning_rate)
掉落的树⽊的缩放⽐例为。1 / (1 + learning_rate)
rate_drop [默认值= 0.0]
退出率(在退出过程中要丢弃的先前树的⼀部分)。
范围:[0.0,1.0]
one_drop [默认= 0]
启⽤此标志后,在删除过程中始终⾄少要丢弃⼀棵树(允许从原始DART纸张进⾏⼆项式加⼀或epsilon删除)。
skip_drop [默认值= 0.0]
在增强迭代过程中跳过退出过程的可能性。
如果跳过了退出,则以与相同的⽅式添加新树gbtree。
请注意,⾮零的skip_drop优先级⾼于rate_drop或one_drop。
范围:[0.0,1.0]
Linear Booster的参数(booster=gblinear)
lambda[默认= 0,别名:reg_lambda]
L2正则化权重项。增加此值将使模型更加保守。归⼀化为训练⽰例数。
alpha[默认= 0,别名:reg_alpha]
权重的L1正则化项。增加此值将使模型更加保守。归⼀化为训练⽰例数。
updater[默认= shotgun]
选择适合线性模型的算法
shotgun:基于shot弹枪算法的平⾏坐标下降算法。使⽤“ hogwild”并⾏性,因此每次运⾏都产⽣不确定的解决⽅案。
coord_descent:普通坐标下降算法。同样是多线程的,但仍会产⽣确定性的解决⽅案。
feature_lector[默认= cyclic]中日翻译在线
特征选择和排序⽅法
cyclic:通过⼀次循环浏览功能来进⾏确定性选择。
shuffle:类似于,cyclic但在每次更新前都会随机进⾏改组。
random:随机(带替换)坐标选择器。
greedy:选择梯度最⼤的坐标。它具有O(num_feature^2)复杂性。这是完全确定的。top_k通过设置top_k参数,它可以将选择限制为每组具有最⼤单变量权重变化的特征。这样做将降低复杂度O(num_feature*top_k)。
thrifty:节俭的近似贪婪的特征选择器。在循环更新之前,对特征的重排序以其单变量权重变化的降序
进⾏。此操作是多线程的,是⼆次贪婪选择的线性复杂度近似值。top_k通过设置top_k参数,它可以将选择限制为每组具有最⼤单变量权重变化的特征。
top_k [默认= 0]
要选择的最重要特征数greedy和thrifty特征选择器。值0表⽰使⽤所有功能。
Tweedie回归参数
(objective=reg:tweedie)
tweedie_variance_power [默认值= 1.5]
控制Tweedie分布⽅差的参数 var(y) ~ E(y)^tweedie_variance_power
范围:(1,2)
设置为接近2即可转向伽玛分布
设置为接近1即可转变为泊松分布。
学习任务参数
指定学习任务和相应的学习⽬标。⽬标选项如下:
objective [default = reg:squarederror]
reg:squarederror:损失平⽅回归。
reg:squaredlogerror:对数损失平⽅回归 12[log(pred+1)−log(label+1)]212[log(pred+1)−log(label+1)]2。所有输⼊标签都必须⼤于-1。另外,请参阅指标rmsle以了解此⽬标可能存在的问题。
reg:logistic:逻辑回归
binary:logistic:⼆元分类的逻辑回归,输出概率
binary:logitraw:⽤于⼆进制分类的逻辑回归,逻辑转换之前的输出得分
binary:hinge:⼆进制分类的铰链损失。这使预测为0或1,⽽不是产⽣概率。
count:poisson –计数数据的泊松回归,泊松分布的输出平均值
max_delta_step
在泊松回归中默认设置为0.7(⽤于维护优化)