在运行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, updategrow_policy [默认值= depthwise]depthwise: 在最靠近根部的节点处拆分lossguide: 在损失变化最大的节点处拆分tree_method 设置为 hist 或 approx 时受支持。depthwise, lossguidemax_leaves [默认值=0]max_bin [默认值=256] tree_method 设置为 hist 或 approx 时使用bin 数量num_parallel_tree [默认值=1]monotone_constraintsinteraction_constraintsone_output_per_tree: 每个目标一个模型。multi_output_tree: 使用多目标树。max_cached_hist_node [默认值= 65536]max_cat_to_onehotmax_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_scorebase_margin,则不会添加 base_scoreeval_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_powerhuber_slope:用于定义的Pseudo-Huber损失的参数。[默认值=1.0]
quantile_alpha:一个标量或目标分位数的列表aft_loss_distribution:概率密度函数,可以是normal、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、dumptrain:使用数据进行训练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、jsonname_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)