用于生成命名 XGBoost 参数列表的便捷函数,该列表可作为 params 参数传递给 xgb.train()。有关更多详细信息,请参阅在线文档。
此函数的目的是启用 IDE 自动完成,并为 XGBoost 接受的所有可能参数提供包内文档。此函数的输出只是一个常规的 R 列表,其中包含设置为非默认值的参数。请注意,此函数不会对提供的参数执行任何验证。
如果为给定参数传递 NULL(所有参数的默认值),则将使用该参数的默认值。默认值由 XGBoost 核心库在调用 xgb.train() 或 xgb.cv() 时自动确定,并且可能会随着 XGBoost 库版本的变化而变化。其中一些可能因助推器类型而异(例如,线性助推器和基于树的助推器的正则化默认值不同)。
用法
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
(default=
"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": 分位数损失,也称为“弹子损失”。有关其参数,请参阅后续部分,并参阅分位数回归以获取一个工作示例。版本添加: 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 分布的结果。
- verbosity
(default=1) 打印消息的详细程度。有效值为 0(静默)、1(警告)、2(信息)、3(调试)。有时 XGBoost 会尝试根据启发式方法更改配置,这会显示为警告消息。如果出现意外行为,请尝试增加 verbosity 的值。
- 线程数
(如果未设置,则默认为可用线程的最大数量) 用于运行 XGBoost 的并行线程数。选择时,请记住线程争用和超线程。
- seed
随机数种子。如果未指定,将通过 R 自己的 RNG 引擎获取随机种子。
- booster
(default=
"gbtree") 要使用的助推器。可以是"gbtree"、"gblinear"或"dart";"gbtree"和"dart"使用基于树的模型,而"gblinear"使用线性函数。- eta, learning_rate
(同一参数的两个别名) 用于更新的步长收缩,以防止过拟合。在每个提升步骤之后,我们可以直接获得新特征的权重,而
eta会收缩特征权重,使提升过程更加保守。范围: \([0,1]\)
默认值: 基于树的助推器为 0.3,线性助推器为 0.5。
注意: 应该只传递
eta或learning_rate中的一个。两者都指同一参数,因此两者之间没有区别。- gamma, min_split_loss
(同一参数的两个别名) (对于树助推器) (default=0, 别名:
gamma) 在树的叶节点上进一步划分所需的最小损失减少。min_split_loss越大,算法将越保守。请注意,即使没有进行任何划分的树也可能包含一个具有非零分数的单个终端节点。范围: \([0, \infty)\)
注意: 应该只传递
gamma或min_split_loss中的一个。两者都指同一参数,因此两者之间没有区别。- max_depth
(对于树助推器) (default=6, type=int32) 树的最大深度。增加此值将使模型更复杂,更容易过拟合。0 表示深度没有限制。请注意,XGBoost 在训练深层树时会大量消耗内存。
"exact"树方法需要非零值。范围: \([0, \infty)\)
- min_child_weight
(对于树助推器) (default=1) 子节点中所需的实例权重(Hessian)的最小和。如果树划分步骤导致叶节点的实例权重和小于
min_child_weight,则构建过程将放弃进一步划分。在线性回归任务中,这仅仅对应于每个节点中所需的最小实例数。min_child_weight越大,算法将越保守。范围: \([0, \infty)\)
- max_delta_step
(对于树助推器) (default=0) 允许每个叶输出的最大 delta 步长。如果该值设置为 0,则表示没有约束。如果设置为正值,则可以帮助使更新步骤更加保守。通常不需要此参数,但当类极度不平衡时,它可能有助于逻辑回归。将其设置为 1-10 的值可能有助于控制更新。
范围: \([0, \infty)\)
- subsample
(对于树助推器) (default=1) 训练实例的子采样比率。将其设置为 0.5 意味着 XGBoost 会在生长树之前随机采样一半的训练数据。这可以防止过拟合。每次提升迭代都会进行一次子采样。
范围: \((0,1]\)
- sampling_method
(对于树助推器) (default=
"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
(对于树助推器) (default=1) 这是一组用于列子采样的参数。
所有
"colsample_by*"参数的范围为 \((0, 1]\),默认值为 1,并指定要子采样的列的比例。"colsample_bytree"是构建每棵树时列的子采样比率。每次构建树时进行一次子采样。"colsample_bylevel"是每个级别的列的子采样比率。每次树中达到新的深度级别时进行一次子采样。从为当前树选择的列集中子采样列。"colsample_bynode"是每个节点(分割)的列的子采样比率。每次评估新分割时进行一次子采样。从为当前级别选择的列集中子采样列。精确树方法不支持此功能。"colsample_by*"参数累积工作。例如,具有 64 个特征的组合{'colsample_bytree'=0.5, 'colsample_bylevel'=0.5, 'colsample_bynode'=0.5}将在每次分割时留下 8 个特征可供选择。
可以使用
feature_weights为 DMatrix 定义在使用列采样时每个特征被选中的概率。- lambda, reg_lambda
(同一参数的两个别名)
对于基于树的助推器
权重的 L2 正则化项。增加此值将使模型更保守。
默认值: 1
范围: \([0, \infty]\)
对于线性助推器
权重的 L2 正则化项。增加此值将使模型更保守。根据训练样本数进行归一化。
默认值: 0
范围: \([0, \infty)\)
注意: 应该只传递
lambda或reg_lambda中的一个。两者都指同一参数,因此两者之间没有区别。- alpha, reg_alpha
(同一参数的两个别名)
权重的 L1 正则化项。增加此值将使模型更保守。
对于线性助推器,它被归一化为训练样本数。
默认值: 0
范围: \([0, \infty)\)
注意: 应该只传递
alpha或reg_alpha中的一个。两者都指同一参数,因此两者之间没有区别。- tree_method
(对于树助推器) (default=
"auto") XGBoost 中使用的树构建算法。请参阅参考论文和树方法中的描述。选项:
"auto"、"exact"、"approx"、"hist",这是常用更新器的组合。对于其他更新器,如"refresh",直接设置参数updater。"auto": 与"hist"树方法相同。"exact": 精确贪婪算法。枚举所有分割候选。"approx": 使用分位数草图和梯度直方图的近似贪婪算法。"hist": 更快的直方图优化近似贪婪算法。
- scale_pos_weight
(对于树助推器) (default=1) 控制正负权重之间的平衡,对于不平衡类很有用。一个典型的考虑值:
sum(负实例) / sum(正实例)。有关更多讨论,请参阅参数调优。此外,请参阅 Higgs Kaggle 竞赛演示以获取示例: R、py1、py2、py3。- 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的节点。
对于
booster="gblinear": (default="shotgun") 拟合线性模型的算法选择"shotgun": 基于 shotgun 算法的并行坐标下降算法。使用“hogwild”并行性,因此在每次运行时会产生非确定性解。"coord_descent": 普通坐标下降算法。也多线程,但仍产生确定性解。当device参数设置为"cuda"或"gpu"时,将使用 GPU 变体。
- refresh_leaf
(对于树助推器) (default=1) 这是
"refresh"更新器的一个参数。当此标志为 1 时,树叶和树节点的统计信息都会更新。当它为 0 时,只更新节点统计信息。- grow_policy
(对于树助推器) (default=
"depthwise")控制向树添加新节点的方式。
目前仅在
tree_method设置为"hist"或"approx"时支持。选项:
"depthwise"、"lossguide""depthwise": 在最接近根的节点处分割。"lossguide": 在损失变化最大的节点处分割。
- max_leaves
(对于树助推器) (default=0, type=int32) 要添加的最大节点数。
"exact"树方法不使用。- 最大 bin 数
(对于树助推器) (default=256, type=int32)
仅在
tree_method设置为"hist"或"approx"时使用。对连续特征进行分桶的最大离散 bin 数。
增加此数量会提高分裂的最优性,但会增加计算时间。
- num_parallel_tree
(对于树助推器) (default=1) 每次迭代期间构建的并行树的数量。此选项用于支持增强随机森林。
- monotone_constraints
(对于树助推器) 变量单调性约束。有关更多信息,请参阅单调约束。
- interaction_constraints
(对于树助推器) 表示允许交互的交互约束。约束必须以嵌套列表的形式指定,例如
list(c(0, 1), c(2, 3, 4)),其中每个内部列表是允许相互交互的特征索引组(基于 0 编号)。有关更多信息,请参阅特征交互约束。- multi_strategy
(对于树助推器) (default =
"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:map为mean 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 误差。"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"(平均精度均值)不同,"aucpr"使用连续插值计算精度召回曲线下的插值面积。"pre": 在 \(k\) 处的精度。仅支持学习排名任务。"ndcg": 归一化折现累积增益"map": 平均精度均值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": 泊松回归的负对数似然"gamma-nloglik": 伽马回归的负对数似然"cox-nloglik": Cox 比例风险回归的负偏对数似然"gamma-deviance": 伽马回归的残差离差"tweedie-nloglik": Tweedie 回归的负对数似然(在tweedie_variance_power参数的指定值处)"aft-nloglik": 加速失效时间模型的负对数似然。有关详细信息,请参阅使用加速失效时间的生存分析。"interval-regression-accuracy": 预测标签落在区间删失标签中的数据点的比例。仅适用于区间删失数据。有关详细信息,请参阅使用加速失效时间的生存分析。
- seed_per_iteration
(default=
FALSE) 通过迭代器编号确定性地播种 PRNG。- device
(default=
"cpu") 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"。版本添加: 2.0.0
注意: 如果 XGBoost 是从 CRAN 安装的,它将不启用 GPU 支持,因此只有
"cpu"可用。要获得 GPU 支持,XGBoost 的 R 包必须从源代码或 GitHub 版本安装 - 请参阅说明。- disable_default_eval_metric
(default=
FALSE) 禁用默认指标的标志。设置为 1 或TRUE以禁用。- use_rmm
是否使用 RAPIDS 内存管理器 (RMM) 分配缓存 GPU 内存。当 XGBoost 使用 RMM 插件构建(编译)时,主内存始终分配在 RMM 池上。有效值为
TRUE和FALSE。有关详细信息,请参阅将 XGBoost 与 RAPIDS 内存管理器 (RMM) 插件一起使用。- max_cached_hist_node
(对于非精确树方法) (default = 65536) 直方图的最大缓存节点数。这可以与
"hist"和"approx"树方法一起使用。版本添加: 2.0.0
大多数情况下,除了生长深层树,不应设置此参数。3.0 版本后,此参数也影响 GPU 算法。
- extmem_single_page
(对于非精确树方法) (default =
FALSE) 此参数仅用于tree_method="hist"且device="cuda"且subsample != 1.0。在 3.0 之前,页面总是连接在一起。版本添加: 3.0.0
基于 GPU 的
"hist"树方法是否应将训练数据连接成单个批次,而不是在使用外部内存时按需获取数据。对于不支持地址转换服务的 GPU 设备,外部内存训练成本高昂。此参数可以与子采样结合使用,以减少总体内存使用量而不会产生显着开销。有关更多信息,请参阅使用 XGBoost 外部内存版本。- max_cat_to_onehot
(对于非精确树方法) 用于决定 XGBoost 是否应对分类数据使用独热编码分割的阈值。当类别数量小于阈值时,选择独热编码,否则类别将被划分为子节点。
版本添加: 1.6.0
- max_cat_threshold
(对于非精确树方法) 每次分割考虑的最大类别数。仅用于基于分区的分割,以防止过拟合。
版本添加: 1.7.0
- sample_type
(对于 Dart 助推器) (default=
"uniform") 采样算法类型。"uniform": 丢弃的树均匀选择。"weighted": 丢弃的树按权重比例选择。
- normalize_type
(对于 Dart 助推器) (default=
"tree") 归一化算法类型。"tree": 新树与每个丢弃的树具有相同的权重。新树的权重为
1 / (k + learning_rate)。丢弃的树按因子
k / (k + learning_rate)进行缩放。
"forest": 新树与丢弃的树的总和(森林)具有相同的权重。新树的权重为
1 / (1 + learning_rate)。丢弃的树按因子
1 / (1 + learning_rate)进行缩放。
- rate_drop
(对于 Dart 助推器) (default=0.0) 丢弃率(在丢弃期间丢弃的先前树的比例)。
范围: \([0.0, 1.0]\)
- one_drop
(对于 Dart 助推器) (default=0) 当此标志启用时,在丢弃期间至少始终丢弃一棵树(允许原始 DART 论文中的二项式加一或 epsilon 丢弃)。
- skip_drop
(对于 Dart 助推器) (default=0.0) 在提升迭代期间跳过丢弃过程的概率。
如果跳过丢弃,则以与
"gbtree"相同的方式添加新树。请注意,非零
skip_drop具有比rate_drop或one_drop更高的优先级。
范围: \([0.0, 1.0]\)
- feature_selector
(对于线性助推器) (default=
"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
(对于线性助推器) (default=0) 在
greedy和thrifty特征选择器中选择的顶部特征数量。值为 0 表示使用所有特征。- num_class
使用多类分类目标时(例如
objective="multi:softprob")的类别数。- tweedie_variance_power
(对于 Tweedie 回归 (
"objective=reg:tweedie")) (default=1.5)控制 Tweedie 分布方差的参数
var(y) ~ E(y)^tweedie_variance_power范围: \((1,2)\)
设置接近 2 以偏向伽马分布
设置接近 1 以偏向泊松分布。
- huber_slope
(用于伪 Huber (
"reg:pseudohubererror")) (default = 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")) (default ="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")) 它指定当对方法为"mean"时,为每个文档采样的对数,或者当对方法为"topk"时查询的截断级别。例如,要使用ndcg@6进行训练,将"lambdarank_num_pair_per_sample"设置为 \(6\) 并将lambdarank_pair_method设置为"topk"。范围 = \([1, \infty)\)
- lambdarank_normalization
(用于学习排名 (
"rank:ndcg","rank:map","rank:pairwise")) (default =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")) (default =FALSE) 指定是否需要对输入点击数据进行去偏。- lambdarank_bias_norm
(用于学习排名 (
"rank:ndcg","rank:map","rank:pairwise")) (default = 2.0) 位置去偏的 \(L_p\) 归一化,默认值为 \(L_2\)。仅在lambdarank_unbiased设置为TRUE时相关。- ndcg_exp_gain
(用于学习排名 (
"rank:ndcg","rank:map","rank:pairwise")) (default =TRUE) 我们是否应该为NDCG使用指数增益函数。NDCG有两种增益函数形式,一种是直接使用相关值,另一种是使用 \(2^{rel} - 1\) 以强调检索相关文档。当ndcg_exp_gain为TRUE(默认值)时,相关度不能大于 31。
值
一个列表,其中包含已传递非 NULL 值的条目。它旨在作为 params 参数传递给 xgb.train() 或 xgb.cv()。