在运行XGBoost之前,必须设置三种类型的参数:通用参数、提升器参数和学习任务参数。
以下参数可以在全局范围内设置,使用 xgboost.config_context()
(Python)或 xgb.set.config()
(R)。
verbosity
: 打印信息的详细程度。有效值为 0(静默),1(warning),2(info),和 3(debug)。use_rmm
: 是否使用 RAPIDS 内存管理器(RMM)来分配 GPU 内存。这个选项仅在 XGBoost 使用 RMM 插件启用时(编译)有效。有效值为 true
和 false
。booster
[default=gbtree
]gbtree
、gblinear
或 dart
;gbtree
和 dart
使用基于树的模型,而 gblinear
使用线性函数。device
[default=cpu
]cpu
: 使用 CPUcuda
: 使用 GPU (CUDA 设备)cuda:<ordinal>: <ordinal>
是一个整数,指定 GPU 的序号gpu
: 从可用和支持的设备列表中选择默认 GPU 设备。目前仅支持 cuda 设备。gpu:<ordinal>
: 从可用和支持的设备列表中选择默认 GPU 设备。目前仅支持 cuda
设备。有关 GPU 加速的更多信息,请参见 XGBoost GPU 支持。在分布式环境中,序号选择由分布式框架而不是 XGBoost 处理。因此,使用 cuda:<ordinal>
将导致错误。请使用 cuda
。
verbosity
[default=1]validate_parameters
[默认为 false,Python、R 和 CLI 接口除外]nthread
[如果未设置,则默认为可用的最大线程数]disable_default_eval_metric
[默认= false
]true
以禁用。eta
[默认值=0.3, 别名: learning_rate
]gamma
[默认值=0, 别名: min_split_loss
]max_depth
[默认值=6]exact tree
方法要求非零值。min_child_weight
[默认值=1]min_child_weight
,则构建过程将放弃进一步分区。在线性回归任务中,这简单地对应于每个节点中需要的最小实例数。min_child_weight
越大,算法越保守。max_delta_step
[默认值=0]subsample
[默认值=1]sampling_method
[默认值= uniform]uniform
: 每个训练实例被选中的概率相等。通常设置 subsample >= 0.5
以获得良好的结果。gradient_based
: 每个训练实例的选择概率与梯度的正则化绝对值成比例()。subsampling
可以设置为低至 0.1 而不会损失模型的准确性。此采样方法仅在tree_method
设置为 hist
且设备为 cuda 时受支持;其他树方法仅支持均匀采样。
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 个特征供选择feature_weights
来定义在使用列采样时每个特征被选中的概率。lambda
[默认值=1, 别名: reg_lambda
]alpha
[默认值=0, 别名: reg_alpha
]tree_method
[字符串,默认值= auto]auto
: 与 hist 树方法相同exact
: 精确的贪心算法。枚举所有分割候选项approx
: 使用分位数草图和梯度直方图的近似贪心算法hist
: 更快的直方图优化近似贪心算法auto
, exact
, approx
, hist
,这是一组常用的更新程序的组合。对于其他更新程序(如 refresh),直接设置更新程序参数。scale_pos_weight [默认值=1]
控制正负权重的平衡,对于不平衡的类别很有用。一个考虑的典型值是:负实例总和 / 正实例总和。更多讨论请参见参数调整。另请参见 Higgs Kaggle 竞赛演示:R,py1,py2,py3。
updater
定义要运行的树更新程序序列的逗号分隔字符串,以一种模块化的方式构建和修改树。这是一个通常根据其他一些参数自动设置的高级参数。但是,用户也可以显式设置它。存在以下更新程序:
process_type
[默认值= default]default
: 创建新树的正常提升过程。update
: 从现有模型开始,仅更新其树。在每个提升迭代中,从初始模型中取出一棵树,为该树运行指定的更新程序序列,然后将修改后的树添加到新模型中。新模型的树数量可能相同或更小,具体取决于执行的提升迭代数。当前,以下内置更新程序可以有意义地与此进程类型一起使用:refresh
、prune
。使用 process_type=update
时,不能使用创建新树的更新程序。default
, update
grow_policy
[默认值= depthwise]depthwise
: 在最靠近根部的节点处拆分lossguide
: 在损失变化最大的节点处拆分tree_method
设置为 hist
或 approx
时受支持。depthwise
, lossguide
max_leaves
[默认值=0]max_bin
[默认值=256] tree_method
设置为 hist
或 approx
时使用bin
数量num_parallel_tree
[默认值=1]monotone_constraints
interaction_constraints
one_output_per_tree
: 每个目标一个模型。multi_output_tree
: 使用多目标树。max_cached_hist_node
[默认值= 65536]max_cat_to_onehot
max_cat_threshold
使用 DART booster 进行预测
如果 booster 对象是 DART 类型,predict()
将执行 dropout 操作,即只有一部分树将被评估。如果数据不是训练数据,这将导致产生不正确的结果。为了在测试集上获得正确的结果,将 iteration_range
设置为非零值,例如:
preds = bst.predict(dtest, iteration_range=(0, num_round))
这里,num_round
是训练期间使用的 boosting 轮数或迭代次数。设置 iteration_range
确保对于预测使用了指定迭代次数之前的所有树。
sample_type
[默认值= uniform
]uniform
: 选择的被丢弃的树是均匀的weighted
: 选择的被丢弃的树与其权重成比例normalize_type
[默认值= tree
]tree
: 新树的权重与每个被丢弃的树相同forest
: 新树的权重与所有被丢弃的树(森林)的权重之和相同。1 / (k + learning_rate)
k / (k + learning_rate)
1 / (1 + learning_rate)
1 / (1 + learning_rate)
rate_drop
[默认值=0.0]dropout
丢弃率(在丢弃期间要丢弃的先前树的比例)one_drop
[默认值=0]skip_drop
[默认值=0.0]gbtree
相同的方式添加skip_drop
具有比 rate_drop
或 one_drop
更高的优先级。lambda
[默认值=0, 别名: reg_lambda
]alpha
[默认值=0, 别名: reg_alpha
]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]指定学习任务以及相应的学习目标。以下是目标选项:
objective
[默认值=reg:squarederror
]reg:squarederror
: 带平方损失的回归reg:squaredlogerror
: 带平方对数损失的回归。要求所有输入标签都大于-1
reg:logistic
: 逻辑回归,输出概率。reg:pseudohubererror
: 带 Pseudo Huber
损失的回归,是绝对损失的两倍可微替代reg:absoluteerror
: 带 L1 误差的回归。当使用树模型时,叶值在树构建后会刷新。如果在分布式训练中使用,则叶值计算为所有工作节点的平均值,不能保证是最优的reg:quantileerror
: 分位数损失,也称为钉扣损失。有关其参数的信息,请参见后续章节和分位数回归,了解实际示例binary:logistic
: 用于二分类的逻辑回归,输出概率binary:logitraw
: 用于二分类的逻辑回归,输出 logistic 转换之前的分数binary:hinge
: 用于二分类的合页损失。这会产生 0 或 1 的预测,而不是生成概率count:poisson
: 用于计数数据的泊松回归,输出泊松分布的均值。survival:cox
: 用于右截尾生存时间数据的 Cox 回归(将负值视为右截尾)。预测以风险比例尺返回(即,在比例风险函数 中作为
)
survival:aft
: 用于截尾生存时间数据的加速失效时间模型multi:softmax
: 使用 softmax 目标让 XGBoost 执行多类别分类,还需要设置 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
:均方根误差rmsle
:均方根对数误差mae
:平均绝对误差mape
:平均绝对百分比误差mphe
:平均伪 Huber 误差logloss
:负对数似然error
:二元分类错误率error@t
:可通过 't' 参数指定不同于 0.5 的二元分类阈值值merror
:多类分类错误率mlogloss
:多类 loglossauc
:ROC 曲线下的面积,可用于分类和学习排序任务aucpr
:PR 曲线下的面积,可用于分类和学习排序任务pre
:Precision at Kndcg
:归一化折现累积增益map
:平均精度均值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 比例风险回归的负偏导数对数似然aft-nloglik
:加速失效时间模型的负对数似然。有关详细信息,请参阅加速失效时间的生存分析interval-regression-accuracy
:预测标签落在区间被审查标签中的数据点的比例。仅适用于区间被审查的数据。有关详细信息,请参阅加速失效时间的生存分析rmse
,分类使用 logloss
,排名使用 rank:map
的均值平均精度等)。seed
[默认值=0]seed_per_iteration
[默认值= false]tweedie_variance_power
[默认值=1.5]var(y) ~ E(y)^tweedie_variance_power
huber_slope
:用于定义的Pseudo-Huber损失的参数。[默认值=1.0]
quantile_alpha
:一个标量或目标分位数的列表aft_loss_distribution
:概率密度函数,可以是norma
l、logistic
或者extreme
这些是特定于学习排名任务的参数。
lambdarank_pair_method
[默认=mean]:构建用于成对学习的对的方法。mean
:为查询列表中的每个文档采样lambdarank_num_pair_per_sample对。topk
:专注于排名在模型排序的前lambdarank_num_pair_per_sample
的文档。为每个文档构建lambdarank_num_pair_per_sample
对。lambdarank_num_pair_per_sample
[range= ]
mean
时为每个文档采样的对数,或者在pair方法为topk
时为查询截断的级别。例如,要使用ndcg@6
进行训练,需将lambdarank_num_pair_per_sample
设置为6,并将lambdarank_pair_method
设置为topk。lambdarank_unbiased
[默认=false
]:指定是否需要对输入点击数据进行去偏。lambdarank_bias_norm
[默认=2.0]:去偏的位置归一化,默认为
。仅在lambdarank_unbiased
设置为true
时相关。
ndcg_exp_gain
[默认=true]:,以便强调检索相关文档。
ndcg_exp_gain为true
(默认值)时,相关度不能大于31以下参数仅用于XGBoost的控制台版本:
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
]:0003.model
,其中0003是提升轮数。model_dir
[默认=models/
]:在训练期间保存模型的输出目录fmap
:特征映射,用于转储模型dump_format
[默认=text
]:选项:text
、json
name_dump
[默认=dump.txt
]:模型转储文件的名称name_pred
[默认=pred.txt
]:预测文件的名称,在pred模式中使用pred_margin
[默认=0]:预测边际而不是转换后的概率booster=dart
)booster=gblinear
)objective=reg:tweedie
)reg:pseudohubererror
)reg:quantileerror
)survival:aft
) and Negative Log Likelihood of AFT metric (aft-nloglik
)rank:ndcg
, rank:map
, rank:pairwise
)