XGBoost 参数
在运行 XGBoost 之前,我们必须设置三类参数:通用参数、Booster 参数和任务参数。
通用参数涉及我们用于进行 Boosting 的 Booster 类型,通常是树模型或线性模型。
Booster 参数取决于您选择的 Booster 类型。
学习任务参数决定学习场景。例如,回归任务可能与排名任务使用不同的参数。
命令行参数涉及 XGBoost CLI 版本的行为。
注意
R 包中的参数
在 R 包中,您可以使用 .(点)来替换参数中的下划线,例如,您可以使用 max.depth 来表示 max_depth。下划线参数在 R 中也有效。
全局配置
以下参数可以在全局范围内设置,使用 xgboost.config_context() (Python) 或 xgb.set.config() (R)。
verbosity: 打印消息的详细程度。有效值为 0(静默)、1(警告)、2(信息)和 3(调试)。use_rmm: 是否使用 RAPIDS 内存管理器 (RMM) 分配缓存 GPU 内存。当 XGBoost 在启用 RMM 插件的情况下构建(编译)时,主内存始终在 RMM 池上分配。有效值为true和false。有关详细信息,请参阅将 XGBoost 与 RAPIDS 内存管理器 (RMM) 插件结合使用。nthread: 设置 OpenMP 的全局线程数。仅当您需要覆盖某些与 OpenMP 相关的环境变量(如OMP_NUM_THREADS)时才使用此参数。否则,应优先使用 Booster 和 DMatrix 的nthread参数,因为前者设置全局变量可能会与其他库冲突。
通用参数
booster[默认值=gbtree]要使用的 Booster。可以是
gbtree、gblinear或dart;gbtree和dart使用基于树的模型,而gblinear使用线性函数。
device[默认值=cpu]2.0.0 版本新增。
XGBoost 运行的设备。用户可以将其设置为以下值之一:
cpu: 使用 CPU。cuda: 使用 GPU (CUDA 设备)。cuda:<ordinal>:<ordinal>是一个整数,指定 GPU 的序号(如果您有多个设备,则指定要使用的 GPU)。gpu: 从可用和支持的设备列表中选择默认 GPU 设备。目前仅支持cuda设备。gpu:<ordinal>: 从可用和支持的设备列表中选择默认 GPU 设备。目前仅支持cuda设备。
有关 GPU 加速的更多信息,请参阅XGBoost GPU 支持。在分布式环境中,序号选择由分布式框架而不是 XGBoost 处理。因此,使用
cuda:<ordinal>将导致错误。请改用cuda。
verbosity[默认值=1]打印消息的详细程度。有效值为 0(静默)、1(警告)、2(信息)、3(调试)。有时 XGBoost 会尝试根据启发式方法更改配置,这会显示为警告消息。如果出现意外行为,请尝试增加 verbose 的值。
validate_parameters[默认值为false,Python、R 和 CLI 接口除外]当设置为 True 时,XGBoost 将对输入参数执行验证,以检查参数是否被使用。当存在未知参数时,会发出警告。
nthread[默认值为如果未设置则为最大可用线程数]运行 XGBoost 所用的并行线程数。选择时,请注意线程争用和超线程。
disable_default_eval_metric[默认值=false]禁用默认度量的标志。设置为 1 或
true禁用。
树 Booster 参数
eta[默认值=0.3,别名:learning_rate]更新中使用的步长收缩,以防止过拟合。在每个 Boosting 步骤之后,我们可以直接获得新特征的权重,
eta收缩特征权重,使 Boosting 过程更加保守。范围:[0,1]
gamma[默认值=0,别名:min_split_loss]在树的叶节点上进行进一步划分所需的最小损失减少量。
gamma越大,算法就越保守。请注意,即使没有进行任何分裂的树仍然可能包含一个具有非零分数的单个终端节点。范围:[0,∞]
max_depth[默认值=6,类型=int32]树的最大深度。增加此值将使模型更复杂,更容易过拟合。0 表示深度无限制。请注意,XGBoost 在训练深层树时会大量消耗内存。
exact树方法需要非零值。范围:[0,∞]
min_child_weight[默认值=1]子节点中所需的实例权重(Hessian)的最小和。如果树划分步骤导致叶节点的实例权重和小于
min_child_weight,则构建过程将放弃进一步划分。在线性回归任务中,这简单地对应于每个节点中所需的最小实例数。min_child_weight越大,算法就越保守。范围:[0,∞]
max_delta_step[默认值=0]我们允许每个叶输出的最大 delta 步长。如果该值设置为 0,则表示没有约束。如果设置为正值,它可以帮助使更新步骤更保守。通常不需要此参数,但在类极度不平衡的逻辑回归中可能会有所帮助。将其设置为 1-10 可能会有助于控制更新。
范围:[0,∞]
subsample[默认值=1]训练实例的子样本比例。将其设置为 0.5 意味着 XGBoost 将在构建树之前随机采样一半的训练数据,这将防止过拟合。子采样将在每个 Boosting 迭代中发生一次。
范围:(0,1]
sampling_method[默认值=uniform]用于采样训练实例的方法。
uniform: 每个训练实例被选中的概率相等。通常设置subsample>= 0.5 可获得良好结果。gradient_based: 每个训练实例的选择概率与梯度(更具体地说,\(\sqrt{g^2+\lambda h^2}\))的 *正则化绝对值* 成比例。subsample可以设置低至 0.1 而不损失模型精度。请注意,此采样方法仅在tree_method设置为hist且设备为cuda时才受支持;其他树方法仅支持uniform采样。
colsample_bytree,colsample_bylevel,colsample_bynode[默认值=1]这是一系列用于列子采样的参数。
所有
colsample_by*参数的范围为 (0, 1],默认值为 1,并指定要子采样的列的比例。colsample_bytree是构建每棵树时列的子样本比例。每次构建树时都会发生一次子采样。colsample_bylevel是每个级别的列的子样本比例。每次树达到新的深度级别时都会发生一次子采样。列从当前树选择的列集中进行子采样。colsample_bynode是每个节点(分裂)的列的子样本比例。每次评估新分裂时都会发生一次子采样。列从当前级别选择的列集中进行子采样。这不支持精确树方法。colsample_by*参数是累积起作用的。例如,组合{'colsample_bytree':0.5, 'colsample_bylevel':0.5, 'colsample_bynode':0.5}对于 64 个特征将导致在每个分裂处有 8 个特征可供选择。使用 Python 或 R 包时,可以为 DMatrix 设置
feature_weights以定义使用列采样时每个特征被选中的概率。在 sklearn 接口的fit方法中有一个类似的参数。
lambda[默认值=1,别名:reg_lambda]权重的 L2 正则化项。增加此值将使模型更保守。
范围:[0, \(\infty\)]
alpha[默认值=0,别名:reg_alpha]权重的 L1 正则化项。增加此值将使模型更保守。
范围:[0, \(\infty\)]
tree_method字符串 [默认值=auto]scale_pos_weight[默认值=1]updater一个逗号分隔的字符串,定义要运行的树更新器序列,提供一种模块化方式来构建和修改树。这是一个高级参数,通常根据其他一些参数自动设置。但是,用户也可以显式设置它。存在以下更新器:
grow_colmaker: 非分布式、基于列的树构建。grow_histmaker: 基于直方图计数的全局提议的分布式树构建,使用基于行的数据分割。grow_quantile_histmaker: 使用量化直方图构建树。grow_gpu_hist: 当tree_method设置为hist且device=cuda时启用。grow_gpu_approx: 当tree_method设置为approx且device=cuda时启用。sync: 同步所有分布式节点中的树。refresh: 根据当前数据刷新树的统计信息和/或叶值。请注意,不执行数据行的随机子采样。prune: 修剪损失 < min_split_loss (或 gamma) 的分裂以及深度大于max_depth的节点。
refresh_leaf[默认值=1]这是
refresh更新器的一个参数。当此标志为 1 时,树的叶节点以及树节点的统计信息都会更新。当它为 0 时,只更新节点统计信息。
process_type[默认值=default]要运行的 Boosting 过程类型。
选项:
default,updatedefault: 创建新树的正常 Boosting 过程。update: 从现有模型开始,只更新其树。在每个 Boosting 迭代中,从初始模型中取出一棵树,对该树运行指定序列的更新器,然后将修改后的树添加到新模型中。新模型的树数量将相同或更少,具体取决于执行的 Boosting 迭代次数。目前,以下内置更新器可有意义地与此过程类型一起使用:refresh,prune。使用process_type=update时,不能使用创建新树的更新器。
grow_policy[默认值=depthwise]控制向树添加新节点的方式。
目前仅在
tree_method设置为hist或approx时支持。选项:
depthwise,lossguidedepthwise: 在最接近根节点的节点处分裂。lossguide: 在损失变化最大的节点处分裂。
max_leaves[默认值=0,类型=int32]要添加的最大节点数。不被
exact树方法使用。
max_bin, [默认值=256,类型=int32]仅当
tree_method设置为hist或approx时使用。对连续特征进行分桶的最大离散 bin 数。
增加此数量会提高分裂的最优性,但会增加计算时间。
num_parallel_tree, [默认值=1]每次迭代中构建的并行树的数量。此选项用于支持增强随机森林。
monotone_constraints变量单调性约束。有关更多信息,请参阅单调约束。
interaction_constraints表示允许交互的交互约束。约束必须以嵌套列表的形式指定,例如
[[0, 1], [2, 3, 4]],其中每个内部列表是允许彼此交互的特征索引组。有关更多信息,请参阅特征交互约束。
multi_strategy, [默认值 =one_output_per_tree]2.0.0 版本新增。
注意
此参数正在开发中。
用于训练多目标模型的策略,包括多目标回归和多类分类。有关更多信息,请参阅多输出。
one_output_per_tree: 每个目标一个模型。multi_output_tree: 使用多目标树。
非精确树方法参数
max_cached_hist_node, [默认值 = 65536]直方图的最大缓存节点数。这可以与
hist和approx树方法一起使用。2.0.0 版本新增。
大多数情况下,除了生长深层树,不应设置此参数。3.0 版本后,此参数也影响 GPU 算法。
extmem_single_page, [默认值 =false]此参数仅用于
hist树方法,当device=cuda和subsample != 1.0时。在 3.0 之前,页面总是被连接。3.0.0 版本新增。
当使用外部内存时,基于 GPU 的
hist树方法是否应将训练数据连接成单个批次,而不是按需获取数据。对于不支持地址转换服务的 GPU 设备,外部内存训练成本很高。此参数可以与子采样结合使用,以在不显著增加开销的情况下减少整体内存使用。有关更多信息,请参阅使用 XGBoost 外部内存版本。
分类特征参数
这些参数仅用于分类数据训练。有关更多信息,请参阅分类数据。
注意
这些参数是实验性的。exact 树方法尚未支持。
max_cat_to_onehot在版本 1.6.0 中添加。
一个用于决定 XGBoost 是否应使用基于独热编码的分裂处理分类数据的阈值。当类别数量小于阈值时,选择独热编码,否则类别将被划分为子节点。
max_cat_threshold在 1.7.0 版本中添加。
每个分裂考虑的最大类别数。仅用于基于分区的分裂以防止过拟合。
Dart Booster 的附加参数 (booster=dart)
注意
使用 DART Booster 的 predict()
如果 Booster 对象是 DART 类型,predict() 将执行 dropout,即只评估部分树。如果 data 不是训练数据,这将产生不正确的结果。要在测试集上获得正确的结果,请将 iteration_range 设置为非零值,例如:
preds = bst.predict(dtest, iteration_range=(0, num_round))
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]Dropout 率(在 dropout 期间丢弃的先前树的比例)。
范围:[0.0, 1.0]
one_drop[默认值=0]当此标志启用时,在 dropout 期间总是至少丢弃一棵树(允许原始 DART 论文中的 Binomial-plus-one 或 epsilon-dropout)。
skip_drop[默认值=0.0]在 Boosting 迭代期间跳过 dropout 过程的概率。
如果跳过 dropout,则新树的添加方式与
gbtree相同。请注意,非零
skip_drop具有比rate_drop或one_drop更高的优先级。
范围:[0.0, 1.0]
线性 Booster 参数 (booster=gblinear)
lambda[默认值=0,别名:reg_lambda]权重的 L2 正则化项。增加此值将使模型更保守。根据训练样本数进行归一化。
alpha[默认值=0,别名:reg_alpha]权重的 L1 正则化项。增加此值将使模型更保守。根据训练样本数进行归一化。
eta[默认值=0.5,别名:learning_rate]更新中使用的步长收缩,以防止过拟合。在每个 Boosting 步骤之后,我们可以直接获得新特征的权重,
eta收缩特征权重,使 Boosting 过程更加保守。范围:[0,1]
updater[默认值=shotgun]拟合线性模型的算法选择
shotgun: 基于 shotgun 算法的并行坐标下降算法。使用 'hogwild' 并行化,因此在每次运行中产生非确定性解决方案。coord_descent: 普通坐标下降算法。也是多线程的,但仍然产生确定性解决方案。当device参数设置为cuda或gpu时,将使用 GPU 变体。
feature_selector[默认值=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 表示使用所有特征。
学习任务参数
指定学习任务和相应的学习目标。目标选项如下:
objective[默认值=reg:squarederror]reg:squarederror: 均方误差回归。reg:squaredlogerror: 平方对数损失回归 \(\frac{1}{2}[log(pred + 1) - log(label + 1)]^2\)。所有输入标签都要求大于 -1。另外,请参阅度量rmsle以了解此目标可能存在的问题。reg:logistic: 逻辑回归,输出概率reg:pseudohubererror: 伪 Huber 损失回归,是绝对损失的二次可微替代。reg:absoluteerror: L1 误差回归。当使用树模型时,叶值在树构建后刷新。如果在分布式训练中使用,叶值计算为所有 worker 的平均值,这不能保证是最优的。在 1.7.0 版本中添加。
reg:quantileerror: 分位数损失,也称为pinball loss。有关其参数和工作示例,请参见后续章节和分位数回归。2.0.0 版本新增。
binary:logistic: 二元分类的逻辑回归,输出概率binary:logitraw: 二元分类的逻辑回归,输出逻辑转换前的分数binary:hinge: 二元分类的 Hinge 损失。这会产生 0 或 1 的预测,而不是产生概率。count:poisson: 计数数据的泊松回归,输出泊松分布的均值。max_delta_step在泊松回归中默认设置为 0.7(用于保护优化)
survival:cox: 针对右截尾生存时间数据(负值视为右截尾)的 Cox 回归。请注意,预测以风险比尺度返回(即,在比例风险函数h(t) = h0(t) * HR中,HR = exp(边际预测))。survival:aft: 截尾生存时间数据的加速失效时间模型。有关详细信息,请参阅使用加速失效时间的生存分析。multi:softmax: 将 XGBoost 设置为使用 softmax 目标进行多类分类,您还需要设置 num_class(类别数)multi:softprob: 与 softmax 相同,但输出ndata * nclass的向量,可以进一步重塑为ndata * nclass矩阵。结果包含每个数据点属于每个类别的预测概率。rank:ndcg: 使用 LambdaMART 执行配对排名,以最大化归一化折损累积增益 (NDCG)。此目标支持点击数据的位置去偏。rank:map: 使用 LambdaMART 执行配对排名,以最大化平均精度 (MAP)。rank:pairwise: 使用 LambdaRank 执行配对排名,使用 ranknet 目标。reg:gamma: 对数链接的伽马回归。输出是伽马分布的均值。例如,它可能对保险索赔严重程度建模或任何可能服从伽马分布的结果有用。reg:tweedie: 对数链接的 Tweedie 回归。例如,它可能对保险总损失建模或任何可能服从Tweedie 分布的结果有用。
base_score所有实例的初始预测分数,也称为全局偏差或截距。
版本 3.1.0 中的变更: XGBoost 默认使用向量值截距。
该参数在训练前针对选定的目标自动估计。要禁用估计,请指定一个实数参数,例如
base_score = 0.5。如果提供了
base_margin,则不使用base_score。如果我们使用足够的迭代次数训练模型,更改此值不会带来显著的好处。
有关更多信息,包括不同的用例,请参阅截距。
eval_metric[默认值取决于目标]验证数据的评估指标,将根据目标分配默认指标(回归为 rmse,分类为 logloss,
rank:map为 平均精度 等)。用户可以添加多个评估指标。Python 用户:请记住将指标作为参数对列表而不是映射传递,以便后续的
eval_metric不会覆盖之前的。选项如下:
rmse: 均方根误差rmsle: 均方根对数误差: \(\sqrt{\frac{1}{N}[log(pred + 1) - log(label + 1)]^2}\)。reg:squaredlogerror目标的默认指标。此指标减少数据集中异常值产生的误差。但由于使用了log函数,当预测值小于 -1 时,rmsle可能会输出nan。请参阅reg:squaredlogerror以了解其他要求。mae: 平均绝对误差mape: 平均绝对百分比误差mphe: 平均伪 Huber 误差。reg:pseudohubererror目标的默认指标。logloss: 负对数似然error: 二元分类错误率。计算方法为#(错误案例)/#(所有案例)。对于预测,评估会将预测值大于 0.5 的实例视为正实例,其他实例视为负实例。error@t: 可以通过提供数值 't' 来指定不同于 0.5 的二元分类阈值。merror: 多类分类错误率。计算方法为#(错误案例)/#(所有案例)。mlogloss: 多类对数损失。auc: 受试者工作特征曲线下面积。适用于分类和学习排名任务。当用于二元分类时,目标应该是
binary:logistic或类似作用于概率的函数。当用于多类分类时,目标应该是
multi:softprob而不是multi:softmax,因为后者不输出概率。此外,AUC 是通过 1 对其余类别的计算,参考类别按类别流行度加权。当用于 LTR 任务时,AUC 通过比较文档对来计算正确排序的对数。这对应于成对学习排名。该实现存在一些问题,即组和分布式工作者之间的平均 AUC 定义不清。
在单机上,AUC 计算是精确的。在分布式环境中,AUC 是每个节点上训练行 AUC 的加权平均值——因此,分布式 AUC 是对数据在工作者之间分布敏感的近似值。如果精度和可重现性很重要,请在分布式环境中使用其他指标。
当输入数据集只包含负样本或正样本时,输出为 NaN。行为是实现定义的,例如,
scikit-learn返回 \(0.5\)。
aucpr: PR 曲线下面积。适用于分类和学习排名任务。XGBoost 1.6 之后,在分类问题中使用
aucpr的要求和限制与auc相似。对于排名任务,仅支持二元相关性标签 \(y \in [0, 1]\)。与map (mean average precision)不同,aucpr使用连续插值计算 *插值* 精度召回曲线下面积。pre: \(k\) 处的精度。仅支持学习排名任务。ndcg: 归一化折损累积增益map: 平均精度平均精度 定义为
\[AP@l = \frac{1}{min{(l, N)}}\sum^l_{k=1}P@k \cdot I_{(k)}\]其中 \(I_{(k)}\) 是一个指示函数,当位置 \(k\) 处的文档相关时等于 \(1\),否则等于 \(0\)。\(P@k\) 是位置 \(k\) 处的精度,\(N\) 是相关文档的总数。最后,平均精度 定义为所有查询的加权平均值。
ndcg@n,map@n,pre@n: \(n\) 可以指定为整数,以截断列表中的前 N 个位置进行评估。ndcg-,map-,ndcg@n-,map@n-: 在 XGBoost 中,NDCG 和 MAP 将不包含任何正样本的列表的分数评估为 \(1\)。通过在评估指标名称后附加“ - ”,我们可以要求 XGBoost 将这些分数评估为 \(0\),以便在某些条件下保持一致。poisson-nloglik: 泊松回归的负对数似然gamma-nloglik: 伽马回归的负对数似然cox-nloglik: Cox 比例风险回归的负偏对数似然gamma-deviance: 伽马回归的残差离差tweedie-nloglik: Tweedie 回归的负对数似然(在指定tweedie_variance_power参数值时)aft-nloglik: 加速失效时间模型的负对数似然。有关详细信息,请参阅使用加速失效时间的生存分析。interval-regression-accuracy: 预测标签落在区间截尾标签内的数据点比例。仅适用于区间截尾数据。有关详细信息,请参阅使用加速失效时间的生存分析。
seed[默认值=0]随机数种子。在 R 包中,如果未指定,则不会默认为种子“零”,而是通过 R 自己的 RNG 引擎获取随机种子。
seed_per_iteration[默认值=false]通过迭代器编号确定性地设置 PRNG 种子。
Tweedie 回归参数 (objective=reg:tweedie)
tweedie_variance_power[默认值=1.5]控制 Tweedie 分布方差的参数
var(y) ~ E(y)^tweedie_variance_power范围:(1,2)
设置接近 2 以偏向伽马分布
设置接近 1 以偏向泊松分布。
使用 Pseudo-Huber 的参数 (reg:pseudohubererror)
huber_slope: 用于伪 Huber 损失的参数,用于定义 \(\delta\) 项。[默认值 = 1.0]
使用分位数损失的参数 (reg:quantileerror)
quantile_alpha: 标量或目标分位数列表。2.0.0 版本新增。
使用 AFT 生存损失 (survival:aft) 和 AFT 度量的负对数似然 (aft-nloglik) 的参数
aft_loss_distribution: 概率密度函数,normal、logistic或extreme。
学习排名参数 (rank:ndcg, rank:map, rank:pairwise)
这些是学习排名任务特有的参数。有关深入解释,请参阅学习排名。
lambdarank_pair_method[默认值 =topk]如何构建配对以进行配对学习。
mean: 为查询列表中的每个文档采样lambdarank_num_pair_per_sample对。topk: 关注前lambdarank_num_pair_per_sample个文档。为模型排名前lambdarank_num_pair_per_sample的每个文档构建 \(|query|\) 对。
lambdarank_num_pair_per_sample[范围 = \([1, \infty]\)]它指定当配对方法为
mean时,为每个文档采样的配对数量,或当配对方法为topk时,查询的截断级别。例如,要使用ndcg@6进行训练,将lambdarank_num_pair_per_sample设置为 \(6\),将lambdarank_pair_method设置为topk。lambdarank_normalization[默认值 =true]在版本 2.1.0 中添加。
是否通过 lambda 梯度归一化叶值。这有时会阻碍训练进程。
在版本 3.0.0 中更改。
当使用
mean方法时,它由lambdarank_num_pair_per_sample而不是梯度进行归一化。lambdarank_score_normalization[默认值 =true]3.0.0 版本新增。
是否通过预测分数差异归一化 delta 度量。这有时会阻碍训练进程。通过配对排名,我们可以使用每对中两个样本之间的差异归一化梯度,以减少排名分数差异较大的配对的影响。这有助于我们对模型进行正则化,以减少偏差并防止过拟合。与其他正则化技术类似,这可能会阻止训练收敛。
2.0 版本之前没有归一化。在 2.0 及更高版本中默认使用此功能。在 3.0 版本中,我们将其设置为用户可以禁用的选项。
lambdarank_unbiased[默认值 =false]
指定是否需要对输入点击数据进行去偏。
lambdarank_bias_norm[默认值 = 2.0]用于位置去偏的 \(L_p\) 归一化,默认值为 \(L_2\)。仅当
lambdarank_unbiased设置为 true 时相关。ndcg_exp_gain[默认值 =true]我们是否应该对
NDCG使用指数增益函数。NDCG有两种形式的增益函数,一种是直接使用相关性值,另一种是使用 \(2^{rel} - 1\) 来强调检索相关文档。当ndcg_exp_gain为 true(默认值)时,相关性程度不能大于 31。
命令行参数
以下参数仅用于 XGBoost 的控制台版本。CLI 已弃用,并将在未来版本中移除。
num_roundBoosting 的轮数
数据训练数据路径
test:data用于预测的测试数据路径
save_period[默认值=0]保存模型的周期。设置
save_period=10意味着每 10 轮 XGBoost 将保存模型。将其设置为 0 意味着在训练期间不保存任何模型。
task[默认值=train] 选项:train,pred,eval,dumptrain: 使用数据进行训练pred: 对 test:data 进行预测eval: 用于评估由eval[name]=filename指定的统计信息dump: 用于将学习到的模型转储为文本格式
model_in[默认值=NULL]输入模型的路径,
test、eval、dump任务需要。如果在训练中指定,XGBoost 将从输入模型继续训练。
model_out[默认值=NULL]训练结束后输出模型的路径。如果未指定,XGBoost 将输出名为
0003.model的文件,其中0003是 Boosting 轮数。
model_dir[默认值=models/]训练期间保存模型的输出目录
fmap特征映射,用于转储模型
dump_format[默认值=text] 选项:text,json模型转储文件格式
name_dump[默认值=dump.txt]模型转储文件名
name_pred[默认值=pred.txt]预测文件名,在 pred 模式下使用
pred_margin[默认值=0]预测边距而不是转换后的概率