XGBoost 参数

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

  • 通用参数 与我们在提升过程中使用的提升器相关,通常是树模型或线性模型

  • 助推器参数 取决于你选择的助推器

  • 学习任务参数 决定了学习场景。例如,回归任务可能使用与排序任务不同的参数。

  • 命令行参数 与 XGBoost 的 CLI 版本的行为相关。

备注

R 包中的参数

在R包中,你可以使用 . (点) 来替代参数中的下划线,例如,你可以使用 max.depth 来表示 max_depth。下划线参数在R中也是有效的。

全局配置

以下参数可以在全局范围内设置,使用 :py:func:`xgboost.config_context()`(Python)或 ``xgb.set.config()``(R)。

  • verbosity: 打印消息的详细程度。有效值为 0(静默)、1(警告)、2(信息)和 3(调试)。

  • use_rmm: 是否使用 RAPIDS 内存管理器 (RMM) 来分配 GPU 内存。此选项仅在 XGBoost 构建(编译)时启用了 RMM 插件的情况下适用。有效值为 truefalse

通用参数

  • booster [默认= gbtree ]

    • 使用哪个助推器。可以是 gbtreegblineardartgbtreedart 使用基于树的模型,而 gblinear 使用线性函数。

  • device [默认= cpu]

    Added in version 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 会根据启发式方法尝试更改配置,这会显示为警告消息。如果有意外行为,请尝试增加详细程度的值。

  • validate_parameters [默认值为 false,除了 Python、R 和 CLI 接口]

    • 当设置为 True 时,XGBoost 将执行输入参数的验证,以检查是否使用了某个参数。当存在未知参数时,会发出警告。

  • nthread [如果未设置,默认为可用线程的最大数量]

    • 用于运行 XGBoost 的并行线程数。在选择时,请注意线程争用和超线程。

  • disable_default_eval_metric [默认= false]

    • 禁用默认指标的标志。设置为 1 或 true 以禁用。

树提升器的参数

  • eta [默认值=0.3, 别名: learning_rate]

    • 在更新中使用的步长收缩,以防止过拟合。在每次增强步骤后,我们可以直接获得新特征的权重,而 eta 会缩小特征权重,使增强过程更加保守。

    • 范围: [0,1]

  • gamma [默认值=0, 别名: min_split_loss]

    • 在树的叶节点上进行进一步分区的最小损失减少量。gamma 越大,算法将越保守。请注意,即使没有进行任何分割的树,仍可能包含一个得分非零的单个终端节点。

    • 范围: [0,∞]

  • max_depth [默认=6]

    • 树的最大深度。增加此值将使模型更复杂,更容易过拟合。0 表示深度没有限制。请注意,XGBoost 在训练深度树时会积极消耗内存。exact 树方法需要非零值。

    • 范围: [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]

  • 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]

    • XGBoost 中使用的树构建算法。参见 参考论文树方法 中的描述。

    • 选择:autoexactapproxhist,这是常用更新器的组合。对于其他更新器如``refresh``,直接设置参数``updater``。

      • auto: 与 hist 树方法相同。

      • exact: 精确贪婪算法。枚举所有分割候选。

      • approx: 使用分位数草图和梯度直方图的近似贪婪算法。

      • hist: 更快的直方图优化近似贪婪算法。

  • scale_pos_weight [默认=1]

    • 控制正负权重的平衡,对于不平衡的类别很有用。一个典型的考虑值是:sum(负实例) / sum(正实例)。更多讨论请参见 参数调优。此外,请参阅Higgs Kaggle竞赛示例:Rpy1py2py3

  • 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]

    • 要运行的一种提升过程。

    • 选项:defaultupdate

      • default: 创建新树的正常提升过程。

      • update: 从现有模型开始,仅更新其树。在每次提升迭代中,从初始模型中取出一棵树,对该树运行指定的更新序列,并将修改后的树添加到新模型中。新模型的树数量将取决于执行的提升迭代次数,可能与原模型相同或更少。目前,以下内置更新器可以与此过程类型有意义地使用:refreshprune。使用 process_type=update 时,不能使用创建新树的更新器。

  • grow_policy [默认= depthwise]

    • 控制新节点如何添加到树中。

    • 目前仅在 tree_method 设置为 histapprox 时支持。

    • 选择:depthwiselossguide

      • depthwise: 在离根最近的节点处进行分割。

      • lossguide: 在损失变化最大的节点进行分割。

  • max_leaves [默认=0]

    • 要添加的节点最大数量。exact 树方法不使用此项。

  • max_bin, [默认值=256]

    • 仅在 tree_method 设置为 histapprox 时使用。

    • 连续特征分桶的最大离散区间数。

    • 增加这个数值可以提高分割的最优性,但会增加计算时间。

  • num_parallel_tree, [默认值=1]

    • 在每次迭代中构建的并行树的数量。此选项用于支持增强随机森林。

  • monotone_constraints

    • 变量单调性的约束。更多信息请参见 单调约束

  • interaction_constraints

    • 表示允许交互的约束条件。约束条件必须以嵌套列表的形式指定,例如 [[0, 1], [2, 3, 4]],其中每个内部列表是一组允许相互交互的特征索引。更多信息请参见 功能交互约束

  • multi_strategy,[默认 = one_output_per_tree]

    Added in version 2.0.0.

    备注

    此参数正在开发中。

    • 用于训练多目标模型的策略,包括多目标回归和多类分类。更多信息请参见 多重输出

      • one_output_per_tree: 每个目标一个模型。

      • multi_output_tree: 使用多目标树。

  • max_cached_hist_node,[默认值 = 65536]

    CPU 直方图缓存节点的最大数量。

    Added in version 2.0.0.

    • 在大多数情况下,除非需要在CPU上增长深度树,否则不应设置此参数。

分类特征的参数

这些参数仅用于分类数据的训练。更多信息请参阅 分类数据

备注

这些参数是实验性的。exact 树方法尚未支持。

  • max_cat_to_onehot

    Added in version 1.6.0.

    • 决定XGBoost是否应使用独热编码进行分类数据分割的阈值。当类别数量小于阈值时,选择独热编码,否则类别将被分割到子节点中。

  • max_cat_threshold

    Added in version 1.7.0.

    • 每个分割考虑的最大类别数。仅用于基于分割的方法,以防止过拟合。

Dart Booster 的附加参数 (booster=dart)

备注

使用 predict() 与 DART 增强器

如果助推器对象是DART类型,predict() 将执行dropouts,即只有部分树将被评估。如果 data 不是训练数据,这将产生不正确的结果。要在测试集上获得正确的结果,请将 iteration_range 设置为非零值,例如

preds = bst.predict(dtest, iteration_range=(0, num_round))
  • sample_type [默认= uniform]

    • 采样算法的类型。

      • uniform: 掉落的树木是均匀选择的。

      • weighted: 丢弃的树按权重比例选择。

  • normalize_type [默认= tree]

    • 归一化算法的类型。

      • tree: 新树的重量与每棵被砍伐的树相同。

        • 新树的权重为 1 / (k + 学习率)

        • 倒下的树按 k / (k + learning_rate) 的因子进行缩放。

      • forest: 新树的权重等于被砍伐树的总和(森林)。

        • 新树的权重为 1 / (1 + 学习率)

        • 被丢弃的树按 1 / (1 + 学习率) 的因子进行缩放。

  • rate_drop [默认=0.0]

    • Dropout 率(在 dropout 期间要丢弃的前几棵树的分数)。

    • 范围: [0.0, 1.0]

  • one_drop [默认=0]

    • 当此标志启用时,在dropout期间至少会丢弃一个树(允许从原始DART论文中进行二项式加一或epsilon-dropout)。

  • skip_drop [默认=0.0]

    • 在提升迭代过程中跳过dropout程序的概率。

      • 如果跳过dropout,新树将以与``gbtree``相同的方式添加。

      • 请注意,非零的 skip_droprate_dropone_drop 具有更高的优先级。

    • 范围: [0.0, 1.0]

线性提升器的参数 (booster=gblinear)

  • lambda [默认=0, 别名: reg_lambda]

    • 权重上的L2正则化项。增加此值将使模型更加保守。按训练样本数量进行归一化。

  • alpha [默认=0, 别名: reg_alpha]

    • 权重上的L1正则化项。增加此值将使模型更加保守。按训练样本数量归一化。

  • updater [默认= shotgun]

    • 选择拟合线性模型的算法

      • shotgun: 基于shotgun算法的并行坐标下降算法。使用’hogwild’并行性,因此在每次运行时产生一个不确定的解决方案。

      • coord_descent: 普通坐标下降算法。也是多线程的,但仍然产生确定性的解。当 device 参数设置为 cudagpu 时,将使用 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]

    • greedythrifty 特征选择器中选择的前几个特征的数量。值为 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误差的回归。当使用树模型时,叶子值在树构建后刷新。如果在分布式训练中使用,叶子值计算为所有工作者的平均值,这不能保证是最优的。

      Added in version 1.7.0.

    • reg:quantileerror: 分位数损失,也称为 pinball loss。有关其参数和示例,请参见后面的部分和 分位数回归

      Added in version 2.0.0.

    • binary:logistic: 用于二分类的逻辑回归,输出概率

    • binary:logitraw: 用于二分类的逻辑回归,输出逻辑变换前的分数

    • binary:hinge: 二元分类的铰链损失。这使得预测结果为0或1,而不是生成概率。

    • count:poisson: 用于计数数据的泊松回归,输出泊松分布的均值。

      • max_delta_step 在泊松回归中默认设置为0.7(用于保护优化过程)

    • survival:cox: 用于右删失生存时间数据的Cox回归(负值被视为右删失)。请注意,预测结果以风险比尺度返回(即,在比例风险函数 h(t) = h0(t) * HR 中,HR = exp(marginal_prediction))。

    • 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

    • 所有实例的初始预测分数,全局偏差

    • 在训练前,参数会自动为选定的目标进行估计。要禁用估计,请指定一个实数参数。

    • 如果提供了 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-vs-rest 计算的,参考类按类别的流行度加权。

        • 在使用LTR任务时,AUC是通过比较文档对来计算的,以统计正确排序的对数。这对应于成对学习排序。该实现存在一些问题,即围绕组和分布式工作者的平均AUC定义不明确。

        • 在一台机器上,AUC 计算是精确的。在分布式环境中,AUC 是每个节点上训练行 AUC 的加权平均值 - 因此,分布式 AUC 是对数据在各工作节点上分布敏感的近似值。如果在分布式环境中精度和可重复性很重要,请使用其他指标。

        • 当输入数据集仅包含负样本或正样本时,输出为 NaN。该行为是实现定义的,例如,scikit-learn 返回 \(0.5\)

      • aucpr: PR 曲线下面积。适用于分类和学习排序任务。

        在XGBoost 1.6之后,使用``aucpr``进行分类问题的要求和限制与``auc``相似。对于排序任务,仅支持二进制相关性标签 \(y \in [0, 1]\)。与``map(平均精度均值)``不同,``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\) 可以被赋值为一个整数,以截断列表中用于评估的前几个位置。

      • 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 自己的随机数生成引擎获取一个随机种子。

  • 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: 一个标量或目标分位数的列表。

    Added in version 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]

    Added in version 2.1.0.

    是否通过lambda梯度来归一化叶值。这有时可能会使训练进度停滞。

  • 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 为真(默认)时,相关性程度不能大于31。

命令行参数

以下参数仅在 XGBoost 的控制台版本中使用

  • num_round

    • 提升的轮数

  • data

    • 训练数据的路径

  • test:data

    • 用于进行预测的测试数据路径

  • save_period [默认=0]

    • 保存模型的周期。设置 save_period=10 意味着每10轮XGBoost将保存一次模型。设置为0意味着在训练期间不保存任何模型。

  • task [默认= train] 选项: train, pred, eval, dump

    • train: 使用数据进行训练

    • pred: 对测试数据进行预测

    • eval: 用于评估由 eval[name]=filename 指定的统计数据

    • dump: 用于将学习到的模型转储为文本格式

  • model_in [默认=NULL]

    • 输入模型的路径,对于 testevaldump 任务是必需的。如果在训练中指定了它,XGBoost 将继续从输入模型进行训练。

  • model_out [默认=NULL]

    • 训练完成后输出模型的路径。如果未指定,XGBoost 将输出类似 0003.model 的文件,其中 0003 是提升轮数。

  • model_dir [默认= models/]

    • 训练期间保存模型的输出目录

  • fmap

    • 特征图,用于导出模型

  • dump_format [默认= text] 选项: text, json

    • 模型转储文件的格式

  • name_dump [默认= dump.txt]

    • 模型转储文件的名称

  • name_pred [默认= pred.txt]

    • 预测文件的名称,用于预测模式

  • pred_margin [默认=0]

    • 预测边际而不是转换后的概率