跳至内容

用于生成命名 XGBoost 参数列表的便捷函数,该列表可作为 params 参数传递给 xgb.train()。有关更多详细信息,请参阅在线文档

此函数的目的是启用 IDE 自动补全并为 XGBoost 接受的所有可能参数提供包内文档。此函数的输出只是一个普通的 R 列表,其中包含设置为非默认值的参数。请注意,此函数不会对提供的参数执行任何验证。

如果为给定参数传递 NULL (所有参数的默认值),则将使用该参数的默认值。默认值由 XGBoost 核心库在调用 xgb.train()xgb.cv() 时自动确定,并且会随着 XGBoost 库版本的变化而变化。其中一些默认值可能因 booster 类型而异 (例如,线性 booster 和基于树的 booster 的正则化默认值不同)。

用法

xgb.params(
  objective = NULL,
  verbosity = NULL,
  nthread = NULL,
  seed = NULL,
  booster = NULL,
  eta = NULL,
  learning_rate = NULL,
  gamma = NULL,
  min_split_loss = NULL,
  max_depth = NULL,
  min_child_weight = NULL,
  max_delta_step = NULL,
  subsample = NULL,
  sampling_method = NULL,
  colsample_bytree = NULL,
  colsample_bylevel = NULL,
  colsample_bynode = NULL,
  lambda = NULL,
  reg_lambda = NULL,
  alpha = NULL,
  reg_alpha = NULL,
  tree_method = NULL,
  scale_pos_weight = NULL,
  updater = NULL,
  refresh_leaf = NULL,
  grow_policy = NULL,
  max_leaves = NULL,
  max_bin = NULL,
  num_parallel_tree = NULL,
  monotone_constraints = NULL,
  interaction_constraints = NULL,
  multi_strategy = NULL,
  base_score = NULL,
  eval_metric = NULL,
  seed_per_iteration = NULL,
  device = NULL,
  disable_default_eval_metric = NULL,
  use_rmm = NULL,
  max_cached_hist_node = NULL,
  extmem_single_page = NULL,
  max_cat_to_onehot = NULL,
  max_cat_threshold = NULL,
  sample_type = NULL,
  normalize_type = NULL,
  rate_drop = NULL,
  one_drop = NULL,
  skip_drop = NULL,
  feature_selector = NULL,
  top_k = NULL,
  num_class = NULL,
  tweedie_variance_power = NULL,
  huber_slope = NULL,
  quantile_alpha = NULL,
  aft_loss_distribution = NULL,
  lambdarank_pair_method = NULL,
  lambdarank_num_pair_per_sample = NULL,
  lambdarank_normalization = NULL,
  lambdarank_score_normalization = NULL,
  lambdarank_unbiased = NULL,
  lambdarank_bias_norm = NULL,
  ndcg_exp_gain = NULL
)

参数

objective

(默认="reg:squarederror") 指定学习任务和相应的学习目标或要使用的自定义目标函数。

对于自定义目标,请参阅自定义目标和评估指标以及自定义目标和指标以获取更多信息,以及函数签名的末尾注释。

支持的值为

  • "reg:squarederror": 具有平方损失的回归。

  • "reg:squaredlogerror": 具有平方对数损失 \(\frac{1}{2}[log(pred + 1) - log(label + 1)]^2\) 的回归。所有输入标签都必须大于 -1。此外,对于此目标可能存在的问题,请参阅指标 rmsle

  • "reg:logistic": logistic 回归,输出概率

  • "reg:pseudohubererror": 具有 Pseudo Huber 损失的回归,这是绝对损失的二次可微替代方法。

  • "reg:absoluteerror": 具有 L1 误差的回归。当使用树模型时,叶子值在树构建后会刷新。如果在分布式训练中使用,叶子值计算为所有工作节点上的平均值,这不能保证是最优的。

    版本添加: 1.7.0

  • "reg:quantileerror": 分位数损失,也称为 "pinball loss"。有关其参数的后续章节,以及分位数回归的示例。

    版本添加: 2.0.0

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

  • "binary:logitraw": 用于二元分类的 logistic 回归,输出 logistic 转换前的分数

  • "binary:hinge": 用于二元分类的 hinge loss。这会生成 0 或 1 的预测,而不是生成概率。

  • "count:poisson": 用于计数数据的 Poisson 回归,输出 Poisson 分布的均值。在 Poisson 回归中,"max_delta_step" 默认设置为 0.7 (用于保护优化)

  • "survival:cox": 用于右截尾生存时间数据的 Cox 回归 (负值被认为是右截尾)。

    请注意,预测结果以风险比率 (hazard ratio) 尺度返回 (即,在比例风险函数 h(t) = h0(t) * HR 中,HR = exp(边际预测))。

  • "survival:aft": 用于截尾生存时间数据的加速失效时间模型 (Accelerated failure time model)。详情请参阅使用加速失效时间的生存分析

  • "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": 具有 log-link 的 gamma 回归。输出是 gamma 分布的均值。它可能有用,例如,用于建模保险索赔的严重程度,或用于任何可能呈gamma 分布的结果。

  • "reg:tweedie": 具有 log-link 的 Tweedie 回归。它可能有用,例如,用于建模保险中的总损失,或用于任何可能呈Tweedie 分布的结果。

verbosity

(默认=1) 打印消息的详细程度。有效值为 0 (静默), 1 (警告), 2 (信息), 3 (调试)。有时 XGBoost 会根据启发式方法尝试更改配置,这会显示为警告消息。如果出现意外行为,请尝试增加 verbosity 的值。

nthread

(如果未设置,则默认为可用最大线程数) 运行 XGBoost 使用的并行线程数。选择时,请考虑线程争用和超线程。

seed

随机数种子。如果未指定,将通过 R 自己的 RNG 引擎获取随机种子。

booster

(默认= "gbtree") 使用哪个 booster。可以是 "gbtree", "gblinear""dart""gbtree""dart" 使用基于树的模型,而 "gblinear" 使用线性函数。

eta, learning_rate

(同一参数的两个别名) 更新中使用的步长收缩,以防止过拟合。在每次 boosting 步骤后,我们可以直接获得新特征的权重,eta 会缩小特征权重,使 boosting 过程更加保守。

  • 范围: \([0,1]\)

  • 默认值: 对于基于树的 booster 为 0.3,对于线性 booster 为 0.5。

注意: 应仅传递 etalearning_rate 中的一个。两者指的是同一个参数,因此两者之间没有区别。

gamma, min_split_loss

(同一参数的两个别名) (适用于树 Booster) (默认=0,别名: gamma) 树的叶节点需要进一步分区所需的最小损失减少。min_split_loss 越大,算法就越保守。请注意,未进行任何分割的树仍然可能包含一个具有非零分数的单个终端节点。

范围: \([0, \infty)\)

注意: 应仅传递 gammamin_split_loss 中的一个。两者指的是同一个参数,因此两者之间没有区别。

max_depth

(适用于树 Booster) (默认=6,类型=int32) 树的最大深度。增加此值会使模型更复杂,更容易过拟合。0 表示深度无限制。请注意,XGBoost 在训练深层树时会大量消耗内存。"exact" 树方法需要非零值。

范围: \([0, \infty)\)

min_child_weight

(适用于树 Booster) (默认=1) 子节点所需的实例权重 (hessian) 的最小总和。如果树分区步骤导致叶节点的实例权重总和小于 min_child_weight,则构建过程将放弃进一步分区。在线性回归任务中,这仅对应于每个节点所需的最小实例数。min_child_weight 越大,算法就越保守。

范围: \([0, \infty)\)

max_delta_step

(适用于树 Booster) (默认=0) 我们允许每个叶子输出的最大 delta 步长。如果设置为 0,表示没有约束。如果设置为正值,可以帮助使更新步骤更保守。通常不需要此参数,但在类别极度不平衡的 logistic 回归中可能有用。将其设置为 1-10 的值可能有助于控制更新。

范围: \([0, \infty)\)

subsample

(适用于树 Booster) (默认=1) 训练实例的子样本比例。设置为 0.5 意味着 XGBoost 在生长树之前会随机采样一半的训练数据,这将防止过拟合。子采样将在每次 boosting 迭代中发生一次。

范围: \((0,1]\)

sampling_method

(适用于树 Booster) (默认= "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

(适用于树 Booster) (默认=1) 这是一组用于列子采样的参数。

  • 所有 "colsample_by*" 参数的范围为 \((0, 1]\),默认值为 1,并指定要子采样的列的比例。

  • "colsample_bytree" 是构建每棵树时的列子采样比例。子采样在构建每棵树时发生一次。

  • "colsample_bylevel" 是每个级别 (level) 的列子采样比例。子采样在树中到达每个新深度级别时发生一次。列从为当前树选择的列集中进行子采样。

  • "colsample_bynode" 是每个节点 (分割) 的列子采样比例。子采样在每次评估新分割时发生一次。列从为当前级别选择的列集中进行子采样。精确树方法不支持此功能。

  • "colsample_by*" 参数是累积工作的。例如,对于 64 个特征,组合 {'colsample_bytree'=0.5, 'colsample_bylevel'=0.5, 'colsample_bynode'=0.5} 将在每次分割时从 8 个特征中进行选择。

可以使用 "feature_weights" 为 DMatrix 设置特征权重,以在使用列采样时定义每个特征被选中的概率。

lambda, reg_lambda

(同一参数的两个别名)

  • 对于基于树的 boosters

    • 权重的 L2 正则化项。增加此值会使模型更保守。

    • 默认: 1

    • 范围: \([0, \infty]\)

  • 对于线性 booster

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

    • 默认: 0

    • 范围: \([0, \infty)\)

注意: 应仅传递 lambdareg_lambda 中的一个。两者指的是同一个参数,因此两者之间没有区别。

alpha, reg_alpha

(同一参数的两个别名)

  • 权重的 L1 正则化项。增加此值会使模型更保守。

  • 对于线性 booster,它根据训练样本数进行归一化。

  • 默认: 0

  • 范围: \([0, \infty)\)

注意: 应仅传递 alphareg_alpha 中的一个。两者指的是同一个参数,因此两者之间没有区别。

tree_method

(适用于树 Booster) (默认= "auto") XGBoost 中使用的树构建算法。参见参考论文树方法中的描述。

选择: "auto", "exact", "approx", "hist", 这是常用 updaters 的组合。对于其他 updaters (如 "refresh"),直接设置参数 updater

  • "auto": 与 "hist" 树方法相同。

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

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

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

scale_pos_weight

(适用于树 Booster) (默认=1) 控制正负权重的平衡,对于不平衡类别很有用。一个典型的考虑值是: sum(负实例) / sum(正实例)。更多讨论请参阅参数调优。另请参阅 Higgs Kaggle 竞赛演示示例: R, py1, py2, py3

updater

根据 booster 的类型有不同的含义。

  • 对于基于树的 boosters: 一个逗号分隔的字符串,定义要运行的树 updater 序列,提供一种模块化方式来构建和修改树。这是一个高级参数,通常根据其他一些参数自动设置。但是,用户也可以显式设置。存在以下 updaters:

    • "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 的节点。

  • 对于 booster="gblinear": (默认= "shotgun") 用于拟合线性模型的算法选择

    • "shotgun": 基于 shotgun 算法的并行坐标下降算法。使用 'hogwild' 并行性,因此每次运行时会产生非确定性解。

    • "coord_descent": 普通坐标下降算法。也是多线程的,但仍产生确定性解。当 device 参数设置为 "cuda""gpu" 时,将使用 GPU 变体。

refresh_leaf

(适用于树 Booster) (默认=1) 这是 "refresh" updater 的参数。当此标志为 1 时,会更新树叶以及树节点的统计信息。当为 0 时,仅更新节点统计信息。

grow_policy

(适用于树 Booster) (默认= "depthwise")

  • 控制向树中添加新节点的方式。

  • 当前仅在 tree_method 设置为 "hist""approx" 时支持。

  • 选择: "depthwise", "lossguide"

    • "depthwise": 在距离根节点最近的节点处分割。

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

max_leaves

(适用于树 Booster) (默认=0,类型=int32) 要添加的最大节点数。"exact" 树方法不使用。

max_bin

(适用于树 Booster) (默认=256,类型=int32)

  • 仅在 tree_method 设置为 "hist""approx" 时使用。

  • 用于将连续特征分箱的最大离散箱数。

  • 增加此数字会以更高的计算时间为代价提高分割的最优性。

num_parallel_tree

(适用于树 Booster) (默认=1) 每次迭代中构建的并行树数量。此选项用于支持 boosted random forest。

monotone_constraints

(适用于树 Booster) 变量的单调性约束。更多信息请参见单调约束

interaction_constraints

(适用于树 Booster) 表示允许交互的交互约束。约束必须以嵌套列表的形式指定,例如 list(c(0, 1), c(2, 3, 4)),其中每个内层列表是一组允许相互交互的特征索引 (从 0 开始编号)。更多信息请参见特征交互约束

multi_strategy

(适用于树 Booster) (默认 = "one_output_per_tree") 用于训练多目标模型(包括多目标回归和多类别分类)的策略。更多信息请参见多输出

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

  • "multi_output_tree": 使用多目标树。

版本添加: 2.0.0

注意: 此参数正在开发中。

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

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

  • 如果提供了 base_margin,则不会添加 base_score

  • 对于足够多的迭代次数,更改此值不会产生太大影响。

eval_metric

(根据目标默认)

  • 验证数据的评估指标,将根据目标分配默认指标 (回归为 rmse,分类为 logloss,rank:mapmean average precision 等)。

  • 用户可以添加多个评估指标。

  • 选择列于下方

    • "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 误差 (mean Pseudo Huber error)。"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 曲线下面积 (Area under the PR curve)。适用于分类和排序任务。

      XGBoost 1.6 版本后,在分类问题中使用 "aucpr" 的要求和限制与 "auc" 类似。对于排序任务,仅支持二元相关性标签 \(y \in [0, 1]\)。与 "map" (平均精度) 不同,"aucpr" 使用连续插值计算精度-召回曲线下的插值面积。

    • "pre": \(k\) 位置的精度。仅支持学习排序任务。

    • "ndcg": 归一化折损累积增益 (Normalized Discounted Cumulative Gain)

    • "map": 平均精度 (Mean Average Precision)

      average precision 定义为

      \(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\) 是相关文档的总数。最后,mean average precision 定义为所有查询的加权平均。

    • "ndcg@n", "map@n", "pre@n": \(n\) 可以指定为一个整数,用于截断列表中的顶部位置进行评估。

    • "ndcg-", "map-", "ndcg@n-", "map@n-": 在 XGBoost 中,NDCG 和 MAP 将不含正样本的列表的分数评估为 \(1\)。通过在评估指标名称后附加 "-",我们可以要求 XGBoost 将这些分数评估为 \(0\),以便在某些条件下保持一致。

    • "poisson-nloglik": Poisson 回归的负对数似然

    • "gamma-nloglik": gamma 回归的负对数似然

    • "cox-nloglik": Cox 比例风险回归的负偏对数似然

    • "gamma-deviance": gamma 回归的残差偏差

    • "tweedie-nloglik": Tweedie 回归的负对数似然 (在 tweedie_variance_power 参数的指定值下)

    • "aft-nloglik": 加速失效时间模型的负对数似然。更多信息请参阅使用加速失效时间的生存分析

    • "interval-regression-accuracy": 预测标签落在区间截尾标签中的数据点比例。仅适用于区间截尾数据。更多信息请参阅使用加速失效时间的生存分析

seed_per_iteration

(默认= FALSE) 通过迭代器编号确定性地设置 PRNG 种子。

device

(默认= "cpu") XGBoost 运行的设备。用户可以将其设置为以下值之一

  • "cpu": 使用 CPU。

  • "cuda": 使用 GPU (CUDA 设备)。

  • "cuda:<序号>": <序号> 是一个整数,指定 GPU 的序号 (如果您有多个设备,想使用哪个 GPU)。

  • "gpu": 从可用和支持的设备列表中选择默认 GPU 设备。目前仅支持 "cuda" 设备。

  • "gpu:<序号>": 从可用和支持的设备列表中选择默认 GPU 设备。目前仅支持 "cuda" 设备。

更多关于 GPU 加速的信息,请参阅XGBoost GPU 支持。在分布式环境中,序号选择由分布式框架处理,而不是 XGBoost。因此,使用 "cuda:<ordinal>" 将导致错误。请改用 "cuda"

版本添加: 2.0.0

注意: 如果 XGBoost 是从 CRAN 安装的,它不会启用 GPU 支持,因此只有 "cpu" 可用。要获得 GPU 支持,必须从源代码或 GitHub 发行版安装 XGBoost 的 R 包 - 请参阅说明

disable_default_eval_metric

(默认= FALSE) 禁用默认指标的标志。设置为 1 或 TRUE 以禁用。

use_rmm

是否使用 RAPIDS Memory Manager (RMM) 分配缓存 GPU 内存。当 XGBoost 构建 (编译) 时启用 RMM 插件后,主内存总是分配在 RMM 池上。有效值为 TRUEFALSE。详情请参阅将 XGBoost 与 RAPIDS Memory Manager (RMM) 插件配合使用

max_cached_hist_node

(适用于非精确树方法) (默认 = 65536) 直方图的最大缓存节点数。这可以与 "hist""approx" 树方法一起使用。

版本添加: 2.0.0

  • 在大多数情况下,除了生长深层树外,不应设置此参数。3.0 版本后,此参数也会影响 GPU 算法。

extmem_single_page

(适用于非精确树方法) (默认 = FALSE) 此参数仅用于 tree_method="hist"device="cuda"subsample != 1.0 时。在 3.0 版本之前,页面总是连接在一起的。

版本添加: 3.0.0

基于 GPU 的 "hist" 树方法是否应将训练数据连接成单个批次,而不是在使用外部内存时按需获取数据。对于不支持地址转换服务的 GPU 设备,外部内存训练代价较高。此参数可以与 subsampling 结合使用,以在没有明显开销的情况下减少总体内存使用量。更多信息请参阅使用 XGBoost 外部内存版本

max_cat_to_onehot

(适用于非精确树方法) 决定 XGBoost 是否对分类数据使用 one-hot 编码分割的阈值。当类别数量小于阈值时,选择 one-hot 编码,否则类别将被分区到子节点中。

版本添加: 1.6.0

max_cat_threshold

(适用于非精确树方法) 每次分割考虑的最大类别数。仅用于基于分区的分割,以防止过拟合。

版本添加: 1.7.0

sample_type

(适用于 Dart Booster) (默认= "uniform") 采样算法类型。

  • "uniform": 均匀选择丢弃的树。

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

normalize_type

(适用于 Dart Booster) (默认= "tree") 归一化算法类型。

  • "tree": 新树的权重与每个丢弃的树的权重相同。

    • 新树的权重为 1 / (k + learning_rate)

    • 丢弃的树缩放因子为 k / (k + learning_rate)

  • "forest": 新树的权重与丢弃的树 (森林) 的总和权重相同。

    • 新树的权重为 1 / (1 + learning_rate)

    • 丢弃的树缩放因子为 1 / (1 + learning_rate)

rate_drop

(适用于 Dart Booster) (默认=0.0) Dropout 率 (在 dropout 期间丢弃的先前树的比例)。

范围: \([0.0, 1.0]\)

one_drop

(适用于 Dart Booster) (默认=0) 当此标志启用时,在 dropout 期间总是至少丢弃一棵树 (允许 Binomial-plus-one 或 epsilon-dropout,来自原始 DART 论文)。

skip_drop

(适用于 Dart Booster) (默认=0.0) 在 boosting 迭代期间跳过 dropout 过程的概率。

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

  • 请注意,非零的 skip_drop 优先级高于 rate_dropone_drop

范围: \([0.0, 1.0]\)

feature_selector

(适用于线性 Booster) (默认= "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

(适用于线性 Booster) (默认=0) 在 greedythrifty 特征选择器中选择的顶部特征数量。值为 0 表示使用所有特征。

num_class

使用多类分类目标 (例如 objective="multi:softprob") 时的类别数量。

tweedie_variance_power

(适用于 Tweedie 回归 ("objective=reg:tweedie")) (默认=1.5)

  • 控制 Tweedie 分布方差的参数 var(y) ~ E(y)^tweedie_variance_power

  • 范围: \((1,2)\)

  • 设置接近 2 会偏向 gamma 分布

  • 设置接近 1 会偏向 Poisson 分布。

huber_slope

(用于使用伪 Huber 损失 ("reg:pseudohubererror")) (默认 = 1.0) 用于伪 Huber 损失定义 \(\delta\) 项的参数。

quantile_alpha

(用于使用分位数损失 ("reg:quantileerror")) 目标分位数的标量或列表 (作为数值向量传递)。

版本添加: 2.0.0

aft_loss_distribution

(用于使用 AFT 生存损失 ("survival:aft") 和 AFT 负对数似然指标 ("aft-nloglik")) 概率密度函数,可以是 "normal", "logistic", 或 "extreme"

lambdarank_pair_method

(适用于学习排序 ("rank:ndcg", "rank:map", "rank:pairwise")) (默认 = "topk") 如何构建用于成对学习的对。

  • "mean": 对于查询列表中的每个文档,采样 lambdarank_num_pair_per_sample 对。

  • "topk": 关注顶部 lambdarank_num_pair_per_sample 个文档。对于模型排名靠前的顶部 lambdarank_num_pair_per_sample 个文档,为每个文档构建 \(|query|\) 对。

lambdarank_num_pair_per_sample

(适用于学习排序 ("rank:ndcg", "rank:map", "rank:pairwise")) 指定当 pair method 为 "mean" 时,每个文档采样的对数,或当 pair method 为 "topk" 时查询的截断级别。例如,要使用 ndcg@6 进行训练,将 "lambdarank_num_pair_per_sample" 设置为 \(6\),并将 lambdarank_pair_method 设置为 "topk"

范围 = \([1, \infty)\)

lambdarank_normalization

(适用于学习排序 ("rank:ndcg", "rank:map", "rank:pairwise")) (默认 = TRUE) 是否按 lambda 梯度归一化叶子值。这有时会阻碍训练进展。

版本添加: 2.1.0

lambdarank_score_normalization

是否按预测分数差归一化 delta 指标。这有时会阻碍训练进展。通过成对排序,我们可以使用每对样本之间的差异来归一化梯度,以减少排名分数差异较大的对的影响。这有助于我们正则化模型,减少偏差并防止过拟合。与其他正则化技术类似,这可能会阻止训练收敛。

在 2.0 版本之前没有归一化。在 2.0 及更高版本中默认使用此功能。在 3.0 版本中,我们将其作为一个用户可以禁用的选项。

版本添加: 3.0.0

lambdarank_unbiased

(适用于学习排序 ("rank:ndcg", "rank:map", "rank:pairwise")) (默认 = FALSE) 指定是否需要对输入点击数据进行去偏。

lambdarank_bias_norm

(适用于学习排序 ("rank:ndcg", "rank:map", "rank:pairwise")) (默认 = 2.0) 用于位置去偏的 \(L_p\) 归一化,默认为 \(L_2\)。仅在 lambdarank_unbiased 设置为 TRUE 时相关。

ndcg_exp_gain

(适用于学习排序 ("rank:ndcg", "rank:map", "rank:pairwise")) (默认 = TRUE) 我们是否应该对 NDCG 使用指数增益函数。NDCG 有两种形式的增益函数,一种是直接使用相关性值,另一种是使用 \(2^{rel} - 1\) 来强调检索相关文档。当 ndcg_exp_gainTRUE (默认值) 时,相关性程度不能大于 31。

返回值

一个列表,包含传递了非 NULL 值的条目。旨在作为参数 params 传递给 xgb.train()xgb.cv()