XGBoost 参数
在运行 XGBoost 之前,我们必须设置三种类型的参数:通用参数、Booster 参数和任务参数。
通用参数 与我们用于提升的 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 Memory Manager (RMM) 分配缓存 GPU 内存。当 XGBoost 启用 RMM 插件构建(编译)时,主内存始终在 RMM 池上分配。有效值为true
和false
。详情请参见 将 XGBoost 与 RAPIDS Memory Manager (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 会尝试基于启发式方法更改配置,这会显示为警告消息。如果出现意外行为,请尝试增加详细程度的值。
validate_parameters
[默认为false
,Python、R 和 CLI 接口除外]设置为 True 时,XGBoost 将执行输入参数验证,检查参数是否被使用。当存在未知参数时,会发出警告。
nthread
[未设置时默认为最大可用线程数]运行 XGBoost 使用的并行线程数。选择时,请考虑线程竞争和超线程。
disable_default_eval_metric
[默认值=false
]禁用默认指标的标志。设置为 1 或
true
禁用。
树 Booster 参数
eta
[默认值=0.3,别名:learning_rate
]更新中使用的步长收缩,以防止过拟合。在每次提升步骤后,我们可以直接获得新特征的权重,
eta
会收缩特征权重,使提升过程更加保守。范围: [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 在生成树之前会随机抽取一半的训练数据,这可以防止过拟合。子采样会在每次提升迭代中进行一次。
范围: (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*
参数是累积生效的。例如,在 64 个特征的情况下,组合{'colsample_bytree':0.5, 'colsample_bylevel':0.5, 'colsample_bynode':0.5}
将在每个分割时留下 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]更新器
一个逗号分隔的字符串,定义要运行的树更新器序列,提供了一种模块化的方式来构建和修改树。这是一个高级参数,通常根据其他一些参数自动设置。但是,用户也可以显式设置。存在以下更新器
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
]要运行的提升过程类型。
选项:
default
,update
default
: 创建新树的正常提升过程。update
: 从现有模型开始,只更新其树。在每次提升迭代中,从初始模型中取出一棵树,为该树运行指定的更新器序列,然后将修改后的树添加到新模型中。新模型将具有相同或更少的树数量,取决于执行的提升迭代次数。目前,以下内置更新器可以有意义地与此过程类型一起使用:refresh
,prune
。使用process_type=update
时,不能使用创建新树的更新器。
grow_policy
[默认值=depthwise
]控制向树中添加新节点的方式。
目前仅在
tree_method
设置为hist
或approx
时支持。选项:
depthwise
,lossguide
depthwise
: 在最靠近根节点的节点处进行分割。lossguide
: 在损失变化最大的节点处进行分割。
max_leaves
[默认值=0, 类型=int32]要添加的最大节点数。
exact
树方法不使用此参数。
max_bin
, [默认值=256, 类型=int32]仅当
tree_method
设置为hist
或approx
时使用。对连续特征进行分箱的最大离散箱数。
增加此数量会提高分割的最优性,但计算时间会增加。
num_parallel_tree
, [默认值=1]每次迭代构建的并行树数量。此选项用于支持提升随机森林。
单调约束
变量单调性的约束。更多信息请参见单调约束。
交互约束
表示允许交互的交互约束。约束必须以嵌套列表的形式指定,例如
[[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
]此参数仅用于
device=cuda
且subsample != 1.0
的hist
树方法。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]在提升迭代中跳过 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
]更新中使用的步长收缩,以防止过拟合。在每次提升步骤后,我们可以直接获得新特征的权重,
eta
会收缩特征权重,使提升过程更加保守。范围: [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
: 使用 log-link 的 gamma 回归。输出是 gamma 分布的均值。例如,这可能对建模保险索赔严重性,或任何可能呈gamma 分布的结果有用。reg:tweedie
: 使用 log-link 的 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
: 多类 logloss。auc
: 受试者工作特征曲线下面积。适用于分类和学习排序任务。用于二分类时,目标应为
binary:logistic
或类似处理概率的函数。用于多类分类时,目标应为
multi:softprob
而不是multi:softmax
,因为后者不输出概率。此外,AUC 通过 1-vs-rest 计算,并根据类别的普遍程度对参考类别进行加权。用于 LTR(学习排序)任务时,通过比较文档对来计算 AUC,以统计正确排序的对。这对应于成对学习排序。此实现在处理组周围的平均 AUC 和分布式 workers 定义不明确方面存在一些问题。
在单机上,AUC 计算是精确的。在分布式环境中,AUC 是每个节点上训练行 AUC 的加权平均值——因此,分布式 AUC 是一种近似值,对数据在 worker 之间的分布敏感。如果在分布式环境中精度和可重复性很重要,请使用其他指标。
当输入数据集仅包含负样本或正样本时,输出为 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
: gamma 回归的负对数似然cox-nloglik
: Cox 比例风险回归的负偏对数似然gamma-deviance
: gamma 回归的残差偏差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 时倾向于 gamma 分布
接近 1 时倾向于泊松分布。
使用 Pseudo-Huber 的参数 (reg:pseudohubererror
)
huber_slope
: 用于 Pseudo-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]\)]它指定当 pair 方法为
mean
时每个文档采样的对数,或当 pair 方法为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_round
提升轮数
data
训练数据路径
test:data
用于预测的测试数据路径
save_period
[默认值=0]保存模型的周期。设置
save_period=10
意味着每 10 轮 XGBoost 将保存模型。设置为 0 表示在训练期间不保存任何模型。
task
[默认值=train
] 选项:train
,pred
,eval
,dump
train
: 使用数据进行训练pred
: 对 test:data 进行预测eval
: 用于评估由eval[name]=filename
指定的统计信息dump
: 用于将学习到的模型导出为文本格式
model_in
[默认值=NULL]输入模型的路径,
test
、eval
、dump
任务需要。如果在训练中指定,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 模式中使用
pred_margin
[默认值=0]预测 margin 而不是转换后的概率