参数

本页面包含 LightGBM 中所有参数的描述。

其他有用链接列表

参数格式

参数格式为 key1=value1 key2=value2 ...。参数可以在配置文件和命令行中设置。通过命令行使用时,参数在 = 前后不应有空格。通过配置文件使用时,每行只能包含一个参数。你可以使用 # 进行注释。

如果一个参数同时出现在命令行和配置文件中,LightGBM 将使用命令行中的参数。

对于Python和R包,任何接受值列表的参数(通常它们具有 multi-xxx 类型,例如 multi-intmulti-double)都可以在这些语言的默认数组类型中指定。例如, monotone_constraints 可以如下指定。

Python

params = {
   "monotone_constraints": [-1, 0, 1]
}

R

params <- list(
   monotone_constraints = c(-1, 0, 1)
)

核心参数

  • config 🔗︎, 默认值 = "", 类型 = 字符串, 别名: config_file

    • 配置文件的路径

    • 注意:只能在CLI版本中使用

  • task 🔗︎,默认值 = train,类型 = 枚举,选项: trainpredictconvert_modelrefit,别名: task_type

    • train,用于训练,别名:training

    • predict,用于预测,别名: prediction, test

    • convert_model,用于将模型文件转换为if-else格式,更多信息请参见 转换参数

    • refit 用于使用新数据重新拟合现有模型,别名:refit_tree

    • save_binary,加载训练(和验证)数据,然后将数据集保存为二进制文件。典型用法:首先 save_binary,然后使用保存的二进制文件并行运行多个 train 任务。

    • 注意:只能在CLI版本中使用;对于特定语言的包,您可以使用相应的函数

  • objective 🔗︎, 默认值 = regression, 类型 = 枚举, 选项: regression, regression_l1, huber, fair, poisson, quantile, mape, gamma, tweedie, binary, multiclass, multiclassova, cross_entropy, cross_entropy_lambda, lambdarank, rank_xendcg, 别名: objective_type, app, application, loss

    • 回归应用

      • regression,L2 损失,别名:regression_l2l2mean_squared_errormsel2_rootroot_mean_squared_errorrmse

      • regression_l1,L1 损失,别名:l1mean_absolute_errormae

      • huberHuber 损失

      • fairFair 损失

      • poisson, 泊松回归

      • quantile分位数回归

      • mape, MAPE 损失, 别名: mean_absolute_percentage_error

      • gamma,使用对数链接的伽玛回归。它可能有用,例如,用于建模保险索赔的严重程度,或用于任何可能是 伽玛分布的 目标。

      • tweedie,使用对数链接的 Tweedie 回归。它可能很有用,例如,用于建模保险中的总损失,或用于任何可能 tweedie 分布 的目标。

    • 二元分类应用

      • binary,二元 对数损失 分类(或逻辑回归)

      • 需要标签为 {0, 1};参见 交叉熵 应用中 [0, 1] 范围内的一般概率标签

    • 多类分类应用

      • multiclass, softmax 目标函数, 别名: softmax

      • multiclassova一对多 二元目标函数,别名:multiclass_ovaovaovr

      • num_class 也应该设置

    • 交叉熵应用

      • cross_entropy,交叉熵的目标函数(可选的线性权重),别名:xentropy

      • cross_entropy_lambda,交叉熵的替代参数化方法,别名:xentlambda

      • label 是区间 [0, 1] 中的任何值

    • 排名应用

      • lambdaranklambdarank 目标。可以使用 label_gain 来设置 int 标签的增益(权重),并且 label 中的所有值必须小于 label_gain 中元素的数量。

      • rank_xendcgXE_NDCG_MART 排名目标函数,别名:xendcgxe_ndcgxe_ndcg_martxendcg_mart

      • rank_xendcglambdarank 更快,并且能达到相似的性能。

      • 标签应为 int 类型,数字越大表示相关性越高(例如 0:差,1:一般,2:好,3:完美)

    • 自定义目标函数(梯度和Hessian不由LightGBM直接计算)

      • custom

      • 注意: 在CLI版本中不支持

      • 必须在C API中通过参数显式传递

  • boosting 🔗︎,默认值 = gbdt,类型 = 枚举,选项: gbdtrfdart,别名: boosting_typeboost

  • data_sample_strategy 🔗︎, 默认值 = bagging, 类型 = 枚举, 选项: bagging, goss

    • bagging, 随机袋装采样

      • 注意: bagging 仅在 bagging_freq > 0bagging_fraction < 1.0 时有效

    • goss, 基于梯度的一侧采样

    • 新版本 4.0.0

  • data 🔗︎, 默认值 = "", 类型 = 字符串, 别名: train, train_data, train_data_file, data_filename

    • 训练数据的路径,LightGBM 将从此数据进行训练

    • 注意:只能在CLI版本中使用

  • valid 🔗︎, 默认值 = "", 类型 = 字符串, 别名: test, valid_data, valid_data_file, test_data, test_data_file, valid_filenames

    • 验证/测试数据的路径,LightGBM 将输出这些数据的指标

    • 支持多个验证数据,用 , 分隔

    • 注意:只能在CLI版本中使用

  • num_iterations 🔗︎, 默认值 = 100, 类型 = int, 别名: num_iteration, n_iter, num_tree, num_trees, num_round, num_rounds, nrounds, num_boost_round, n_estimators, max_iter, 约束: num_iterations >= 0

    • 提升迭代的次数

    • 注意:在内部,LightGBM 为多类分类问题构建了 num_class * num_iterations 棵树

  • learning_rate 🔗︎, 默认值 = 0.1, 类型 = 双精度, 别名: shrinkage_rate, eta, 约束: learning_rate > 0.0

    • 收缩率

    • dart 中,它还会影响被丢弃树的归一化权重

  • num_leaves 🔗︎, 默认值 = 31, 类型 = int, 别名: num_leaf, max_leaves, max_leaf, max_leaf_nodes, 约束: 1 < num_leaves <= 131072

    • 一棵树中的最大叶子数

  • tree_learner 🔗︎, 默认 = serial, 类型 = 枚举, 选项: serial, feature, data, voting, 别名: tree, tree_type, tree_learner_type

    • serial, 单机树学习器

    • feature,特征并行树学习器,别名:feature_parallel

    • data,数据并行树学习器,别名:data_parallel

    • voting,投票并行树学习器,别名:voting_parallel

    • 参考 分布式学习指南 以获取更多详情

  • num_threads 🔗︎, 默认值 = 0, 类型 = int, 别名: num_thread, nthread, nthreads, n_jobs

    • 仅在 trainpredictionrefit 任务中使用,或在特定语言包的相应函数中使用

    • LightGBM 的线程数

    • 0 表示 OpenMP 中的默认线程数

    • 为了获得最佳速度,请将其设置为 真实CPU核心数,而不是线程数(大多数CPU使用 超线程 技术,每个CPU核心生成2个线程)

    • 如果你的数据集很小(例如,不要对一个有10,000行的数据集使用64个线程),不要设置得太大。

    • 请注意,任务管理器或任何类似的CPU监控工具可能会报告核心未被充分利用。这是正常的

    • 对于分布式学习,不要使用所有CPU核心,因为这会导致网络通信性能不佳。

    • 注意:在训练期间请 不要 更改此项,尤其是在通过外部包同时运行多个作业时,否则可能会导致不希望的错误。

  • device_type 🔗︎, 默认值 = cpu, 类型 = 枚举, 选项: cpu, gpu, cuda, 别名: device

    • 用于树学习的设备

    • cpu 支持所有 LightGBM 功能,并且可以在最广泛的操作系统和硬件上移植。

    • cudagpucpu 提供更快的训练速度,但仅适用于支持CUDA的GPU。

    • gpu 可以比 cpu 更快,并且在比 CUDA 更广泛的 GPU 范围内工作。

    • 注意:建议使用较小的 ``max_bin``(例如 63)以获得更好的加速效果

    • 注意:为了更快的速度,GPU 默认使用 32 位浮点数进行求和,因此这可能会影响某些任务的精度。您可以设置 gpu_use_dp=true 以启用 64 位浮点数,但这会减慢训练速度。

    • 注意:请参考 安装指南 以构建支持GPU的LightGBM

  • seed 🔗︎, 默认值 = None, 类型 = int, 别名: random_seed, random_state

    • 这个种子用于生成其他种子,例如 data_random_seedfeature_fraction_seed 等。

    • 默认情况下,此种子未被使用,而是优先使用其他种子的默认值。

    • 这个种子相对于其他种子具有较低的优先级,这意味着如果你明确设置了其他种子,它将被覆盖。

  • deterministic 🔗︎, 默认 = false, 类型 = bool

    • 仅用于 cpu 设备类型

    • 将此设置为 true 应在使用相同数据和相同参数(以及不同的 num_threads)时确保稳定的结果

    • 当你使用不同的种子、不同版本的 LightGBM、由不同编译器编译的二进制文件,或在不同的系统中,结果预计会有所不同。

    • 当你遇到不稳定的结果时,可以在 LightGBM GitHub 仓库中 提出问题

    • 注意:将其设置为 true 可能会减慢训练速度

    • 注意:为了避免由于数值问题导致的潜在不稳定性,请在设置 deterministic=true 时,同时设置 force_col_wise=trueforce_row_wise=true

学习控制参数

  • force_col_wise 🔗︎, 默认 = false, 类型 = bool

    • 仅用于 cpu 设备类型

    • 将此设置为 true 以强制按列构建直方图

    • 当以下情况时,建议启用此功能:

      • 列数较多,或者总箱数较多

      • num_threads 很大,例如 > 20

      • 你想减少内存开销

    • 注意:当 force_col_wiseforce_row_wise 都为 false 时,LightGBM 会首先尝试两者,然后使用速度更快的那一个。为了消除测试的开销,请手动将速度更快的那一个设置为 true

    • 注意:此参数不能与 force_row_wise 同时使用,请选择其中之一。

  • force_row_wise 🔗︎, 默认值 = false, 类型 = bool

    • 仅用于 cpu 设备类型

    • 将此设置为 true 以强制按行构建直方图

    • 当以下情况时,建议启用此功能:

      • 数据点的数量很大,而总箱数相对较少

      • num_threads 相对较小,例如 <= 16

      • 您想使用小的 bagging_fractiongoss 采样策略来加速

    • 注意:将其设置为 true 将使 Dataset 对象的内存成本翻倍。如果内存不足,可以尝试设置 force_col_wise=true

    • 注意:当 force_col_wiseforce_row_wise 都为 false 时,LightGBM 会首先尝试两者,然后使用速度更快的那一个。为了消除测试的开销,请手动将速度更快的那一个设置为 true

    • 注意: 此参数不能与 force_col_wise 同时使用,请选择其中之一。

  • histogram_pool_size 🔗︎, 默认值 = -1.0, 类型 = double, 别名: hist_pool_size

    • 历史直方图的最大缓存大小(以MB为单位)

    • < 0 表示没有限制

  • max_depth 🔗︎, 默认值 = -1, 类型 = int

    • 限制树模型的最大深度。这在 #数据 较少时用于处理过拟合问题。树仍然以叶向方式生长。

    • <= 0 表示没有限制

  • min_data_in_leaf 🔗︎, 默认值 = 20, 类型 = int, 别名: min_data_per_leaf, min_data, min_child_samples, min_samples_leaf, 约束: min_data_in_leaf >= 0

    • 一个叶子中数据的最小数量。可以用来处理过拟合问题。

    • 注意:这是基于Hessian的一个近似值,因此偶尔你可能会观察到分裂,产生少于这个数量观察值的叶节点

  • min_sum_hessian_in_leaf 🔗︎, 默认值 = 1e-3, 类型 = double, 别名: min_sum_hessian_per_leaf, min_sum_hessian, min_hessian, min_child_weight, 约束: min_sum_hessian_in_leaf >= 0.0

    • 单叶中的最小和Hessian。类似于 min_data_in_leaf,它可以用于处理过拟合。

  • bagging_fraction 🔗︎, 默认值 = 1.0, 类型 = double, 别名: sub_row, subsample, bagging, 约束条件: 0.0 < bagging_fraction <= 1.0

    • 类似于 feature_fraction,但这将随机选择部分数据而不进行重采样。

    • 可以用来加速训练

    • 可用于处理过拟合

    • 注意: 要启用装袋,bagging_freq 应设置为非零值。

  • pos_bagging_fraction 🔗︎, 默认值 = 1.0, 类型 = double, 别名: pos_sub_row, pos_subsample, pos_bagging, 约束: 0.0 < pos_bagging_fraction <= 1.0

    • 仅在 binary 应用程序中使用

    • 用于不平衡的二分类问题,将在bagging中随机采样 #pos_samples * pos_bagging_fraction 个正样本。

    • 应与 neg_bagging_fraction 一起使用

    • 将此设置为 1.0 以禁用

    • 注意:要启用此功能,您需要设置 bagging_freqneg_bagging_fraction

    • 注意:如果 pos_bagging_fractionneg_bagging_fraction 都设置为 1.0,则平衡装袋功能将被禁用

    • 注意:如果启用了平衡装袋,bagging_fraction 将被忽略

  • neg_bagging_fraction 🔗︎, 默认值 = 1.0, 类型 = double, 别名: neg_sub_row, neg_subsample, neg_bagging, 约束: 0.0 < neg_bagging_fraction <= 1.0

    • 仅在 binary 应用程序中使用

    • 用于不平衡的二分类问题,将在bagging中随机采样 #neg_samples * neg_bagging_fraction 个负样本。

    • 应与 pos_bagging_fraction 一起使用

    • 将此设置为 1.0 以禁用

    • 注意:要启用此功能,您需要设置 bagging_freqpos_bagging_fraction

    • 注意:如果 pos_bagging_fractionneg_bagging_fraction 都设置为 1.0,则平衡装袋功能将被禁用

    • 注意:如果启用了平衡装袋,bagging_fraction 将被忽略

  • bagging_freq 🔗︎, 默认值 = 0, 类型 = int, 别名: subsample_freq

    • bagging 的频率

    • 0 表示禁用 bagging;k 表示在每 k 次迭代时执行 bagging。每第 k 次迭代时,LightGBM 将随机选择 bagging_fraction * 100 % 的数据用于接下来的 k 次迭代。

    • 注意: 只有在 0.0 < bagging_fraction < 1.0 时,bagging 才有效。

  • bagging_seed 🔗︎, 默认值 = 3, 类型 = int, 别名: bagging_fraction_seed

    • bagging 的随机种子

  • feature_fraction 🔗︎, 默认值 = 1.0, 类型 = double, 别名: sub_feature, colsample_bytree, 约束: 0.0 < feature_fraction <= 1.0

    • 如果 feature_fraction 小于 1.0,LightGBM 将在每次迭代(树)时随机选择特征的子集。例如,如果您将其设置为 0.8,LightGBM 将在训练每棵树之前选择 80% 的特征。

    • 可以用来加速训练

    • 可用于处理过拟合

  • feature_fraction_bynode 🔗︎, 默认值 = 1.0, 类型 = double, 别名: sub_feature_bynode, colsample_bynode, 约束: 0.0 < feature_fraction_bynode <= 1.0

    • 如果 feature_fraction_bynode 小于 1.0,LightGBM 将在每个树节点随机选择一个特征子集。例如,如果你将其设置为 0.8,LightGBM 将在每个树节点选择 80% 的特征。

    • 可用于处理过拟合

    • 注意:与 feature_fraction 不同,这不能加快训练速度

    • 注意:如果 feature_fractionfeature_fraction_bynode 都小于 1.0,每个节点的最终比例是 feature_fraction * feature_fraction_bynode

  • feature_fraction_seed 🔗︎, default = 2, type = int

    • feature_fraction 的随机种子

  • extra_trees 🔗︎, 默认值 = false, 类型 = bool, 别名: extra_tree

    • 使用极度随机化树

    • 如果设置为 true,在评估节点分裂时,LightGBM 将仅检查每个特征的一个随机选择的阈值。

    • 可以用来加速训练

    • 可用于处理过拟合

  • extra_seed 🔗︎, 默认值 = 6, 类型 = int

    • extra_trees 为真时,选择阈值的随机种子

  • early_stopping_round 🔗︎, 默认值 = 0, 类型 = int, 别名: early_stopping_rounds, early_stopping, n_iter_no_change

    • 如果在最近的 early_stopping_round 轮中,一个验证数据的某个指标没有改善,将停止训练。

    • <= 0 表示禁用

    • 可以用来加速训练

  • early_stopping_min_delta 🔗︎, 默认值 = 0.0, 类型 = double, 约束: early_stopping_min_delta >= 0.0

    • 当使用早停时(即 early_stopping_round > 0),要求早停指标至少提高这个增量才能被视为改进

    • 新版本 4.4.0

  • first_metric_only 🔗︎, 默认值 = false, 类型 = bool

    • LightGBM 允许你提供多个评估指标。如果你想仅使用第一个指标进行早停,请将此设置为 true

  • max_delta_step 🔗︎, 默认值 = 0.0, 类型 = double, 别名: max_tree_output, max_leaf_output

    • 用于限制树枝的最大输出

    • <= 0 表示没有约束

    • 叶子的最终最大输出是 learning_rate * max_delta_step

  • lambda_l1 🔗︎, 默认值 = 0.0, 类型 = 双精度, 别名: reg_alpha, l1_regularization, 约束: lambda_l1 >= 0.0

    • L1 正则化

  • lambda_l2 🔗︎, 默认值 = 0.0, 类型 = double, 别名: reg_lambda, lambda, l2_regularization, 约束: lambda_l2 >= 0.0

    • L2 正则化

  • linear_lambda 🔗︎, 默认值 = 0.0, 类型 = 双精度, 约束: linear_lambda >= 0.0

  • min_gain_to_split 🔗︎, 默认值 = 0.0, 类型 = double, 别名: min_split_gain, 约束: min_gain_to_split >= 0.0

    • 执行分割的最小增益

    • 可以用来加速训练

  • drop_rate 🔗︎,默认值 = 0.1,类型 = 双精度,别名: rate_drop,约束: 0.0 <= drop_rate <= 1.0

    • 仅在 dart 中使用

    • dropout 率:在 dropout 过程中丢弃的前几棵树的比例

  • max_drop 🔗︎, 默认值 = 50, 类型 = int

    • 仅在 dart 中使用

    • 在一次提升迭代中丢弃的最大树数

    • <=0 表示没有限制

  • skip_drop 🔗︎, 默认值 = 0.5, 类型 = 双精度, 约束: 0.0 <= skip_drop <= 1.0

    • 仅在 dart 中使用

    • 在提升迭代过程中跳过dropout程序的概率

  • xgboost_dart_mode 🔗︎, default = false, type = bool

    • 仅在 dart 中使用

    • 如果你想使用 xgboost dart 模式,请将此设置为 true

  • uniform_drop 🔗︎, 默认 = false, 类型 = bool

    • 仅在 dart 中使用

    • 如果你想使用统一掉落,请将此设置为 true

  • drop_seed 🔗︎, 默认值 = 4, 类型 = int

    • 仅在 dart 中使用

    • 随机种子以选择丢弃模型

  • top_rate 🔗︎, 默认值 = 0.2, 类型 = 双精度, 约束: 0.0 <= top_rate <= 1.0

    • 仅在 goss 中使用

    • 大梯度数据的保留率

  • other_rate 🔗︎,默认值 = 0.1,类型 = 双精度,约束条件: 0.0 <= other_rate <= 1.0

    • 仅在 goss 中使用

    • 小梯度数据的保留率

  • min_data_per_group 🔗︎, 默认值 = 100, 类型 = int, 约束: min_data_per_group > 0

    • 每个分类组的最小数据量

  • max_cat_threshold 🔗︎, 默认值 = 32, 类型 = int, 约束: max_cat_threshold > 0

  • cat_l2 🔗︎, 默认值 = 10.0, 类型 = 双精度, 约束: cat_l2 >= 0.0

    • 用于分类特征

    • 类别分割中的L2正则化

  • cat_smooth 🔗︎, 默认值 = 10.0, 类型 = 双精度, 约束: cat_smooth >= 0.0

    • 用于分类特征

    • 这可以减少分类特征中噪声的影响,特别是对于数据较少的类别

  • max_cat_to_onehot 🔗︎, 默认值 = 4, 类型 = int, 约束: max_cat_to_onehot > 0

    • 当一个特征的类别数量小于或等于 max_cat_to_onehot 时,将使用一对一的分割算法。

  • top_k 🔗︎, 默认值 = 20, 类型 = int, 别名: topk, 约束: top_k > 0

    • 仅在 voting 树学习器中使用,参考 投票并行

    • 将此值设置得更大以获得更准确的结果,但这会减慢训练速度

  • monotone_constraints 🔗︎, 默认 = None, 类型 = 多整数, 别名: mc, monotone_constraint, monotonic_cst

    • 用于单调特征的约束

    • 1 表示增加,-1 表示减少,0 表示无约束

    • 你需要按顺序指定所有特征。例如,mc=-1,0,1 表示第一个特征递减,第二个特征无约束,第三个特征递增。

  • monotone_constraints_method 🔗︎, 默认 = basic, 类型 = 枚举, 选项: basic, intermediate, advanced, 别名: monotone_constraining_method, mc_method

    • 仅在 monotone_constraints 设置时使用

    • 单调约束方法

      • basic,最基本的单调约束方法。它完全不会拖慢库的速度,但会过度约束预测。

      • intermediate,一种 更高级的方法,可能会稍微减慢库的速度。然而,这种方法比基本方法的限制要小得多,应该会显著改善结果。

      • advanced,一个 更高级的方法,可能会减慢库的速度。然而,这种方法比中级方法的限制更少,应该会再次显著改善结果

  • monotone_penalty 🔗︎, 默认值 = 0.0, 类型 = double, 别名: monotone_splits_penalty, ms_penalty, mc_penalty, 约束: monotone_penalty >= 0.0

    • 仅在 monotone_constraints 设置时使用

    • 单调惩罚: 惩罚参数 X 禁止在树的前 X(向下取整)层进行任何单调分割。应用于给定深度的单调分割的惩罚是一个连续的、递增的函数,该函数依赖于惩罚参数

    • 如果 0.0 (默认值),则不应用惩罚。

  • feature_contri 🔗︎, 默认值 = None, 类型 = 多重双精度, 别名: feature_contrib, fc, fp, feature_penalty

    • 用于控制特征的分割增益,将使用 gain[i] = max(0, feature_contri[i]) * gain[i] 来替换第 i 个特征的分割增益

    • 您需要指定所有功能

  • forcedsplits_filename 🔗︎, 默认值 = "", 类型 = 字符串, 别名: fs, forced_splits_filename, forced_splits_file, forced_splits

    • 指定在最佳优先学习开始之前,在每个决策树顶部强制分割的 .json 文件的路径

    • .json 文件可以任意嵌套,每个分割包含 featurethreshold 字段,以及表示子分割的 leftright 字段。

    • 分类分割以独热编码方式强制进行,其中 left 表示包含特征值的分割,right 表示其他值。

    • 注意:如果分割会使增益变差,强制分割逻辑将被忽略。

    • 参见 此文件 作为示例

  • refit_decay_rate 🔗︎, 默认值 = 0.9, 类型 = double, 约束: 0.0 <= refit_decay_rate <= 1.0

    • refit 任务的衰减率,将使用 leaf_output = refit_decay_rate * old_leaf_output + (1.0 - refit_decay_rate) * new_leaf_output 来重训练树

    • 仅在CLI版本的``refit``任务中使用,或在特定语言包的``refit``函数中作为参数使用。

  • cegb_tradeoff 🔗︎, 默认值 = 1.0, 类型 = 双精度浮点数, 约束条件: cegb_tradeoff >= 0.0

    • 所有惩罚的成本效益梯度提升乘数

  • cegb_penalty_split 🔗︎, 默认值 = 0.0, 类型 = 双精度浮点数, 约束: cegb_penalty_split >= 0.0

    • 节点分裂的成本效益梯度提升惩罚

  • cegb_penalty_feature_lazy 🔗︎, 默认值 = 0,0,...,0, 类型 = 多重双精度

    • 使用特征的成本效益梯度提升惩罚

    • 应用于每个数据点

  • cegb_penalty_feature_coupled 🔗︎, 默认值 = 0,0,...,0, 类型 = 多重双精度

    • 使用特征的成本效益梯度提升惩罚

    • 每片森林应用一次

  • path_smooth 🔗︎, 默认值 = 0, 类型 = 双精度, 约束: path_smooth >=  0.0

    • 应用于树节点的平滑控制

    • 有助于防止在样本较少的叶子上过度拟合

    • 如果设置为零,则不应用平滑处理

    • 如果 path_smooth > 0 那么 min_data_in_leaf 必须至少为 2

    • 较大的值提供更强的正则化

      • 每个节点的权重为 w * (n / path_smooth) / (n / path_smooth + 1) + w_p / (n / path_smooth + 1),其中 n 是节点中的样本数,w 是使损失最小化的最优节点权重(大约为 -sum_gradients / sum_hessians),w_p 是父节点的权重。

      • 注意,父输出 w_p 本身已应用平滑处理,除非它是根节点,因此平滑效果会随着树的深度累积。

  • interaction_constraints 🔗︎, 默认值 = "", 类型 = 字符串

    • 控制哪些功能可以出现在同一分支中

    • 默认情况下,交互约束是禁用的,要启用它们,您可以指定

      • 对于CLI,用逗号分隔的列表,例如 [0,1,2],[2,3]

      • 对于Python包,列表的列表,例如 [[0, 1, 2], [2, 3]]

      • 对于 R 包,可以是字符向量或数值向量的列表,例如 list(c("var1", "var2", "var3"), c("var3", "var4"))list(c(1L, 2L, 3L), c(3L, 4L))。数值向量应使用基于 1 的索引,其中 1L 是第一个特征,2L 是第二个特征,依此类推。

    • 任意两个特征只能出现在同一个分支中,当且仅当存在一个包含这两个特征的约束。

  • verbosity 🔗︎, 默认值 = 1, 类型 = int, 别名: verbose

    • 控制 LightGBM 的详细程度

    • < 0: 致命, = 0: 错误 (警告), = 1: 信息, > 1: 调试

  • input_model 🔗︎, 默认值 = "", 类型 = 字符串, 别名: model_input, model_in

    • 输入模型的文件名

    • 对于 预测 任务,此模型将应用于预测数据

    • 对于 train 任务,训练将从该模型继续进行

    • 注意:只能在CLI版本中使用

  • output_model 🔗︎, 默认值 = LightGBM_model.txt, 类型 = 字符串, 别名: model_output, model_out

    • 训练中输出模型的文件名

    • 注意:只能在CLI版本中使用

  • saved_feature_importance_type 🔗︎, 默认值 = 0, 类型 = int

    • 保存的模型文件中的特征重要性类型

    • 0: 基于计数的特征重要性(分割次数被计数);1: 基于增益的特征重要性(增益值被计数)

    • 注意:只能在CLI版本中使用

  • snapshot_freq 🔗︎,默认值 = -1,类型 = int,别名: save_period

    • 保存模型文件快照的频率

    • 将此设置为正值以启用此功能。例如,如果 snapshot_freq=1,模型文件将在每次迭代时进行快照。

    • 注意:只能在CLI版本中使用

  • use_quantized_grad 🔗︎, 默认值 = false, 类型 = bool

    • 是否在训练时使用梯度量化

    • 启用此功能将把梯度和海森矩阵离散化(量化)为 num_grad_quant_bins 个区间。

    • 在量化训练中,训练过程中的大多数算术运算将是整数运算。

    • 梯度量化可以在大多数情况下加速训练,且精度损失很小。

    • 注意:只能与 device_type = cpudevice_type=cuda 一起使用

    • 新版本 4.0.0

  • num_grad_quant_bins 🔗︎, default = 4, type = int

    • 量化梯度和Hessian的箱数

    • 随着分箱数量增加,量化训练将更接近全精度训练

    • 注意:只能与 device_type = cpudevice_type=cuda 一起使用

    • 新版本 4.0.0

  • quant_train_renew_leaf 🔗︎, 默认 = false, 类型 = bool

    • 在量化训练时是否用原始梯度更新叶子节点的值

    • 更新对于提高用于排序目标的良好量化训练准确性非常有帮助

    • 注意:只能与 device_type = cpudevice_type=cuda 一起使用

    • 新版本 4.0.0

  • stochastic_rounding 🔗︎, 默认 = true, 类型 = bool

    • 是否在梯度量化中使用随机舍入

    • 注意:只能与 device_type = cpudevice_type=cuda 一起使用

    • 新版本 4.0.0

IO 参数

数据集参数

  • linear_tree 🔗︎, 默认值 = false, 类型 = bool, 别名: linear_trees

    • 拟合分段线性梯度提升树

      • 树的分裂按常规方式选择,但每个叶节点的模型是线性的,而不是常数。

      • 每个叶子节点中的线性模型包括该叶子分支中的所有数值特征

      • 第一棵树的叶子值是常量

      • 分类特征像往常一样用于分割,但不用于线性模型

      • 缺失值不应编码为 0。对于 Python,使用 np.nan;对于 CLI,使用 NA;对于 R,使用 NANA_real_NA_integer_

      • 建议在训练前对数据进行重新缩放,以便特征具有相似的均值和标准差

      • 注意:仅适用于 CPU 和 serial 树学习器

      • 注意: regression_l1 目标函数不支持线性树提升

      • 注意:设置 linear_tree=true 会显著增加 LightGBM 的内存使用。

      • 注意:如果你指定了 monotone_constraints,约束将在选择分割点时被强制执行,但在叶子上的线性模型拟合时不会被强制执行。

  • max_bin 🔗︎, 默认值 = 255, 类型 = int, 别名: max_bins, 约束: max_bin > 1

    • 特征值将被分桶的最大桶数

    • 较少的箱子数量可能会降低训练精度,但可能会提高泛化能力(处理过拟合)

    • LightGBM 将根据 max_bin 自动压缩内存。例如,如果 max_bin=255,LightGBM 将使用 uint8_t 作为特征值。

  • max_bin_by_feature 🔗︎, 默认值 = None, 类型 = multi-int

    • 每个特征的最大箱数

    • 如果未指定,将使用 max_bin 作为所有特征的值

  • min_data_in_bin 🔗︎, 默认值 = 3, 类型 = int, 约束: min_data_in_bin > 0

    • 一个箱子内的最小数据量

    • 使用此方法以避免一数据一箱(潜在的过拟合)

  • bin_construct_sample_cnt 🔗︎, 默认值 = 200000, 类型 = int, 别名: subsample_for_bin, 约束: bin_construct_sample_cnt > 0

    • 用于构建特征离散区间的采样数据数量

    • 将此设置为更大的值将获得更好的训练结果,但可能会增加数据加载时间

    • 如果数据非常稀疏,请将此值设置得更大。

    • 注意:不要将此设置为较小的值,否则,您可能会遇到意外错误和较低的准确性

  • data_random_seed 🔗︎, 默认值 = 1, 类型 = int, 别名: data_seed

    • 用于采样数据构建直方图箱的随机种子

  • is_enable_sparse 🔗︎, 默认值 = true, 类型 = bool, 别名: is_sparse, enable_sparse, sparse

    • 用于启用/禁用稀疏优化

  • enable_bundle 🔗︎, 默认值 = true, 类型 = bool, 别名: is_enable_bundle, bundle

  • use_missing 🔗︎, 默认值 = true, 类型 = bool

    • 将此设置为 false 以禁用对缺失值的特殊处理

  • zero_as_missing 🔗︎, 默认值 = false, 类型 = bool

    • 将此设置为 true 以将所有零视为缺失值(包括 LibSVM / 稀疏矩阵中未显示的值)

    • 将此设置为 false 以使用 na 表示缺失值

  • feature_pre_filter 🔗︎, 默认值 = true, 类型 = bool

    • 将此设置为 true (默认值)以告知 LightGBM 忽略基于 min_data_in_leaf 不可分割的特征。

    • 由于数据集对象仅初始化一次且之后无法更改,因此在使用 min_data_in_leaf 搜索参数时,您可能需要将其设置为 false,否则如果您不重新构建数据集对象,特征将首先被 min_data_in_leaf 过滤。

    • 注意:将此设置为 false 可能会减慢训练速度

  • pre_partition 🔗︎,默认值 = false,类型 = bool,别名:is_pre_partition

    • 用于分布式学习(不包括 feature_parallel 模式)

    • 如果训练数据是预先分区的,并且不同的机器使用不同的分区,则为 true

  • two_round 🔗︎, 默认值 = false, 类型 = bool, 别名: two_round_loading, use_two_round_loading

    • 如果数据文件太大无法放入内存,请将此设置为 true

    • 默认情况下,LightGBM 会将数据文件映射到内存并从内存中加载特征。这将提供更快的数据加载速度,但在数据文件非常大时可能会导致内存不足错误。

    • 注意: 仅在直接从文本文件加载数据时有效

  • header 🔗︎,默认值 = false,类型 = bool,别名: has_header

    • 如果输入数据有标题,请将此设置为 true

    • 注意: 仅在直接从文本文件加载数据时有效

  • label_column 🔗︎, 默认 = "", 类型 = int 或 string, 别名: label

    • 用于指定标签列

    • 使用数字作为索引,例如 label=0 表示 column_0 是标签

    • 为列名添加前缀 name:,例如 label=name:is_click

    • 如果省略,训练数据中的第一列将用作标签

    • 注意: 仅在直接从文本文件加载数据时有效

  • weight_column 🔗︎, 默认值 = "", 类型 = int 或 string, 别名: weight

    • 用于指定权重列

    • 使用数字作为索引,例如 weight=0 表示 column_0 是权重

    • 为列名添加前缀 name:,例如 weight=name:weight

    • 注意: 仅在直接从文本文件加载数据时有效

    • 注意:索引从 0 开始,并且在传递类型为 int 时,不计算标签列,例如当标签是 column_0,权重是 column_1 时,正确的参数是 weight=0

    • 注意: 权重应为非负数

  • group_column 🔗︎, 默认值 = "", 类型 = int 或 string, 别名: group, group_id, query_column, query, query_id

    • 用于指定查询/组ID列

    • 使用数字作为索引,例如 query=0 表示 column_0 是查询 ID

    • 为列名添加前缀 name:,例如 query=name:query_id

    • 注意: 仅在直接从文本文件加载数据时有效

    • 注意:数据应按 query_id 分组,更多信息请参见 查询数据

    • 注意:索引从 0 开始,并且在传递类型为 int 时不计标签列,例如当标签为 column_0 且查询 ID 为 column_1 时,正确的参数是 query=0

  • ignore_column 🔗︎, 默认值 = "", 类型 = 多整数或字符串, 别名: ignore_feature, blacklist

    • 用于指定训练中忽略的某些列

    • 使用数字作为索引,例如 ignore_column=0,1,2 表示将忽略第0列、第1列和第2列

    • 为列名添加前缀 name:,例如 ignore_column=name:c1,c2,c3 表示 c1, c2 和 c3 将被忽略

    • 注意: 仅在直接从文本文件加载数据时有效

    • 注意: 索引从 0 开始,并且在传递类型为 int 时不计算标签列。

    • 注意:尽管在训练过程中指定的列将被完全忽略,但它们仍应具有有效的格式,以允许 LightGBM 成功加载文件。

  • categorical_feature 🔗︎, 默认值 = "", 类型 = 多整数或字符串, 别名: cat_feature, categorical_column, cat_column, categorical_features

    • 用于指定分类特征

    • 使用数字作为索引,例如 categorical_feature=0,1,2 表示 column_0、column_1 和 column_2 是分类特征

    • 为列名添加前缀 name:,例如 categorical_feature=name:c1,c2,c3 表示 c1, c2 和 c3 是分类特征

    • 注意: 所有值将被转换为 int32 (在 Python 包中,将从 pandas 分类中提取整数码)

    • 注意: 索引从 0 开始,并且在传递类型为 int 时不计算标签列。

    • 注意: 所有值应小于 Int32.MaxValue (2147483647)

    • 注意:使用大值可能会消耗大量内存。树决策规则在分类特征以从零开始的连续整数表示时效果最佳。

    • 注意:所有负值将被视为 缺失值

    • 注意:输出不能相对于分类特征进行单调约束

    • 注意:分类特征中的浮点数将被四舍五入至0

  • forcedbins_filename 🔗︎, 默认值 = "", 类型 = 字符串

    • 指定某些或所有特征的二进制上限的 .json 文件路径

    • .json 文件应包含一个对象数组,每个对象包含 ``feature``(整数特征索引)和 ``bin_upper_bound``(分箱的阈值数组)

    • 参见 此文件 作为示例

  • save_binary 🔗︎, 默认值 = false, 类型 = bool, 别名: is_save_binary, is_save_binary_file

    • 如果 true,LightGBM 将把数据集(包括验证数据)保存到一个二进制文件中。这会加快下次加载数据的速度。

    • 注意: init_score 不会保存在二进制文件中

    • 注意:只能在CLI版本中使用;对于特定语言的包,您可以使用相应的函数

  • precise_float_parser 🔗︎, 默认值 = false, 类型 = bool

    • 使用精确的浮点数解析文本解析器(例如 CSV、TSV、LibSVM 输入)

    • 注意: 将此设置为 true 可能会导致文本解析速度大大降低

  • parser_config_file 🔗︎,默认值 = "",类型 = 字符串

    • 指向一个 .json 文件的路径,该文件指定了自定义解析器的初始化配置

    • 参见 lightgbm-transform 以获取使用示例

    • 注意: lightgbm-transform 不是由 LightGBM 的维护者维护的。错误报告或功能请求应提交到 问题页面

    • 新版本 4.0.0

预测参数

  • start_iteration_predict 🔗︎, 默认值 = 0, 类型 = int

    • 仅用于 预测 任务

    • 用于指定从哪一次迭代开始进行预测

    • <= 0 表示从第一次迭代开始

  • num_iteration_predict 🔗︎, 默认值 = -1, 类型 = int

    • 仅用于 预测 任务

    • 用于指定在预测中将使用多少次训练迭代

    • <= 0 表示没有限制

  • predict_raw_score 🔗︎, 默认 = false, 类型 = bool, 别名: is_predict_raw_score, predict_rawscore, raw_score

    • 仅用于 预测 任务

    • 将此设置为 true 以仅预测原始分数

    • 将此设置为 false 以预测转换后的分数

  • predict_leaf_index 🔗︎, default = false, type = bool, aliases: is_predict_leaf_index, leaf_index

    • 仅用于 预测 任务

    • 将此设置为 true 以预测所有树的叶索引

  • predict_contrib 🔗︎, 默认 = false, 类型 = bool, 别名: is_predict_contrib, contrib

    • 仅用于 预测 任务

    • 将此设置为 true 以估计 SHAP 值,这些值表示每个特征如何对每个预测做出贡献。

    • 生成 #features + 1 个值,其中最后一个值是模型输出在训练数据上的期望值。

    • 注意:如果你想通过使用 SHAP 值(如 SHAP 交互值)来获得模型预测的更多解释,你可以安装 shap 包

    • 注意:与 shap 包不同,使用 predict_contrib 时,我们返回一个包含额外列的矩阵,其中最后一列是期望值。

    • 注意: 此功能不适用于线性树

  • predict_disable_shape_check 🔗︎, 默认 = false, 类型 = bool

    • 仅用于 预测 任务

    • 控制当你尝试在具有与训练数据不同数量的特征的数据上进行预测时,LightGBM是否引发错误

    • 如果 ``false``(默认),如果你预测的数据集中的特征数量与训练期间看到的数量不同,将会引发致命错误。

    • 如果 true,LightGBM 将尝试预测你提供的任何数据。这是危险的,因为你可能会得到不正确的预测,但在某些情况下可以使用它,例如生成某些特征非常困难或昂贵,并且你非常确信这些特征从未在模型中被选择用于分割。

    • 注意:将此参数设置为 true 时要非常小心

  • pred_early_stop 🔗︎, default = false, type = bool

    • 仅用于 预测 任务

    • 仅用于 分类排序 应用

    • 仅用于预测正常或原始分数

    • 如果 true ,将使用提前停止来加速预测。可能会影响准确性。

    • 注意:不能与 rf 提升类型或自定义目标函数一起使用

  • pred_early_stop_freq 🔗︎, default = 10, type = int

    • 仅用于 预测 任务

    • 检查早期停止预测的频率

  • pred_early_stop_margin 🔗︎, 默认值 = 10.0, 类型 = double

    • 仅用于 预测 任务

    • 早期停止预测中的边际阈值

  • output_result 🔗︎, 默认值 = LightGBM_predict_result.txt, 类型 = 字符串, 别名: predict_result, prediction_result, predict_name, prediction_name, pred_name, name_pred

    • 仅用于 预测 任务

    • 预测结果的文件名

    • 注意:只能在CLI版本中使用

转换参数

  • convert_model_language 🔗︎, 默认值 = "", 类型 = 字符串

    • 仅在 convert_model 任务中使用

    • 仅支持 cpp;如需将模型转换为其他语言,请考虑使用 m2cgen 工具

    • 如果设置了 convert_model_language 并且 task=train,模型也将被转换

    • 注意:只能在CLI版本中使用

  • convert_model 🔗︎, 默认值 = gbdt_prediction.cpp, 类型 = 字符串, 别名: convert_model_file

    • 仅在 convert_model 任务中使用

    • 转换模型的输出文件名

    • 注意:只能在CLI版本中使用

目标参数

  • objective_seed 🔗︎, 默认值 = 5, 类型 = int

    • 仅在 rank_xendcg 目标中使用

    • 目标的随机种子,如果需要随机过程

  • num_class 🔗︎, 默认值 = 1, 类型 = int, 别名: num_classes, 约束: num_class > 0

    • 仅用于 多类 分类应用

  • is_unbalance 🔗︎, 默认值 = false, 类型 = bool, 别名: unbalance, unbalanced_sets

    • 仅在 binarymulticlassova 应用中使用

    • 如果训练数据不平衡,请将此设置为 true

    • 注意:虽然启用此功能应能提高模型的整体性能指标,但它也会导致各个类别概率的估计不准确。

    • 注意:此参数不能与 scale_pos_weight 同时使用,请仅选择 其中一个

  • scale_pos_weight 🔗︎, 默认 = 1.0, 类型 = 双精度, 约束: scale_pos_weight > 0.0

    • 仅在 binarymulticlassova 应用中使用

    • 正类标签的权重

    • 注意:虽然启用此功能应能提高模型的整体性能指标,但它也会导致各个类别概率的估计不准确。

    • 注意:此参数不能与 is_unbalance 同时使用,请仅选择 其中一个

  • sigmoid 🔗︎, 默认值 = 1.0, 类型 = double, 约束: sigmoid > 0.0

    • 仅在 binarymulticlassova 分类以及 lambdarank 应用中使用

    • sigmoid 函数的参数

  • boost_from_average 🔗︎, 默认值 = true, 类型 = bool

    • 仅用于 回归二分类多分类ova交叉熵 应用

    • 调整初始分数为标签的均值以加快收敛

  • reg_sqrt 🔗︎, 默认值 = false, 类型 = bool

    • 仅在 回归 应用中使用

    • 用于拟合 sqrt(label) 而不是原始值,预测结果也将自动转换为 prediction^2

    • 在处理大范围标签时可能会有用

  • alpha 🔗︎, 默认值 = 0.9, 类型 = 双精度, 约束: alpha > 0.0

  • fair_c 🔗︎, 默认值 = 1.0, 类型 = 双精度, 约束: fair_c > 0.0

    • 仅用于 fair regression 应用

    • Fair loss 的参数

  • poisson_max_delta_step 🔗︎, 默认值 = 0.7, 类型 = 双精度, 约束: poisson_max_delta_step > 0.0

    • 仅用于 poisson 回归 应用

    • 用于 泊松回归 的参数以保障优化

  • tweedie_variance_power 🔗︎, 默认值 = 1.5, 类型 = double, 约束: 1.0 <= tweedie_variance_power < 2.0

    • 仅用于 tweedie 回归 应用

    • 用于控制tweedie分布的方差

    • 将此值设置得更接近 2 以偏向于 Gamma 分布

    • 将此值设置得更接近 1 以趋向于 泊松 分布

  • lambdarank_truncation_level 🔗︎, 默认值 = 30, 类型 = int, 约束: lambdarank_truncation_level > 0

    • 仅在 lambdarank 应用中使用

    • 控制训练期间关注的顶级结果数量,请参阅 LambdaMART 论文 第 3 节中的“截断级别”。

    • 此参数与我们在优化排名器时所追求的指标 NDCG@k 中的理想截止值 k 密切相关。此参数的最佳设置可能略高于 k``(例如,``k + 3),以包含更多文档对进行训练,但可能不会太高,以避免偏离目标指标 NDCG@k 太多。

  • lambdarank_norm 🔗︎, 默认 = true, 类型 = bool

    • 仅在 lambdarank 应用中使用

    • 将此设置为 true 以规范化不同查询的lambda,并提高不平衡数据的性能

    • 将此设置为 false 以强制执行原始的 lambdarank 算法

  • label_gain 🔗︎, 默认值 = 0,1,3,7,15,31,63,...,2^30-1, 类型 = 多重双精度

    • 仅在 lambdarank 应用中使用

    • 标签的相关增益。例如,在默认标签增益的情况下,标签 2 的增益是 3

    • , 分隔

  • lambdarank_position_bias_regularization 🔗︎, 默认值 = 0.0, 类型 = double, 约束: lambdarank_position_bias_regularization >= 0.0

    • 仅在 lambdarank 应用中使用,当提供位置信息并建模位置偏差时。较大的值会减少推断的位置偏差因子。

    • 新版本 4.1.0

度量参数

  • metric 🔗︎, 默认值 = "", 类型 = 多选枚举, 别名: metrics, metric_types

    • 要在评估集上评估的指标

      • ``””``(空字符串或未指定)表示将使用与指定``objective``对应的指标(这仅适用于预定义的目标函数,否则不会添加评估指标)

      • "None" (字符串,不是 None 值) 意味着不会注册任何指标,别名: na, null, custom

      • l1,绝对损失,别名:mean_absolute_errormaeregression_l1

      • l2,平方损失,别名:mean_squared_errormseregression_l2regression

      • rmse, 均方根误差, 别名: root_mean_squared_error, l2_root

      • quantile分位数回归

      • mape, MAPE 损失, 别名: mean_absolute_percentage_error

      • huberHuber 损失

      • fairFair 损失

      • poisson泊松回归 的负对数似然

      • gammaGamma 回归的负对数似然

      • gamma_devianceGamma 回归的残差偏差

      • tweedie, Tweedie 回归的负对数似然

      • ndcg, NDCG, 别名: lambdarank, rank_xendcg, xendcg, xe_ndcg, xe_ndcg_mart, xendcg_mart

      • mapMAP,别名:mean_average_precision

      • auc, AUC

      • average_precision, 平均精度分数

      • binary_logloss对数损失,别名:binary

      • binary_error,对于一个样本:0 表示正确分类,1 表示错误分类

      • auc_muAUC-mu

      • multi_logloss,多类分类的对数损失,别名:multiclasssoftmaxmulticlassovamulticlass_ovaovaovr

      • multi_error,多类别分类的错误率

      • cross_entropy,交叉熵(可选线性权重),别名:xentropy

      • cross_entropy_lambda,“强度加权”交叉熵,别名:xentlambda

      • kullback_leiblerKullback-Leibler 散度,别名: kldiv

    • 支持多个指标,用 , 分隔

  • metric_freq 🔗︎, 默认值 = 1, 类型 = int, 别名: output_freq, 约束: metric_freq > 0

    • 指标输出的频率

    • 注意:只能在CLI版本中使用

  • is_provide_training_metric 🔗︎, 默认值 = false, 类型 = bool, 别名: training_metric, is_training_metric, train_metric

    • 将此设置为 true 以输出训练数据集上的指标结果

    • 注意:只能在CLI版本中使用

  • eval_at 🔗︎, 默认值 = 1,2,3,4,5, 类型 = multi-int, 别名: ndcg_eval_at, ndcg_at, map_eval_at, map_at

    • 仅用于 ndcgmap 指标

    • NDCGMAP 评估位置,用 , 分隔

  • multi_error_top_k 🔗︎, 默认 = 1, 类型 = int, 约束: multi_error_top_k > 0

    • 仅与 multi_error 指标一起使用

    • top-k 多错误指标的阈值

    • 如果真实类别在 multi_error_top_k 预测中,则每个样本的错误为 0,否则为 1

      • 更准确地说,如果至少有 num_classes - multi_error_top_k 个预测严格小于真实类别的预测,样本上的错误为 0

    • multi_error_top_k=1 时,这等同于通常的多错误指标

  • auc_mu_weights 🔗︎, 默认值 = None, 类型 = 多重双精度

    • 仅与 auc_mu 指标一起使用

    • 表示扁平化矩阵(按行优先顺序)的列表,给出分类错误的损失权重

    • 列表应包含 n * n 个元素,其中 n 是类的数量

    • 矩阵坐标 [i, j] 应对应于列表的第 i * n + j 个元素

    • 如果未指定,将对所有类别使用相等的权重

网络参数

  • num_machines 🔗︎, 默认值 = 1, 类型 = int, 别名: num_machine, 约束: num_machines > 0

    • 分布式学习应用的机器数量

    • 此参数需要在 socketmpi 版本中都进行设置

  • local_listen_port 🔗︎, 默认值 = 12400 (Dask-package 为随机), 类型 = int, 别名: local_port, port, 约束: local_listen_port > 0

    • 本地机器的TCP监听端口

    • 注意:在训练之前,别忘了在防火墙设置中允许此端口

  • time_out 🔗︎,默认值 = 120,类型 = int,约束条件: time_out > 0

    • socket 超时时间(分钟)

  • machine_list_filename 🔗︎, 默认值 = "", 类型 = 字符串, 别名: machine_list_file, machine_list, mlist

    • 列出此分布式学习应用程序机器的文件路径

    • 每行包含一个IP和一个端口,对应一台机器。格式为 ``ip port``(空格作为分隔符)

    • 注意:只能在CLI版本中使用

  • machines 🔗︎, 默认值 = "", 类型 = 字符串, 别名: workers, nodes

    • 以下格式的机器列表:ip1:port1,ip2:port2

GPU 参数

  • gpu_platform_id 🔗︎, 默认值 = -1, 类型 = int

    • OpenCL 平台 ID。通常每个 GPU 供应商会暴露一个 OpenCL 平台

    • -1 表示系统范围内的默认平台

    • 注意: 更多详情请参阅 GPU 目标

  • gpu_device_id 🔗︎,默认值 = -1,类型 = int

    • 指定平台中的OpenCL设备ID。所选平台中的每个GPU都有一个唯一的设备ID

    • -1 表示所选平台中的默认设备

    • 注意: 更多详情请参阅 GPU 目标

  • gpu_use_dp 🔗︎, 默认值 = false, 类型 = bool

    • 将此设置为 true 以在 GPU 上使用双精度数学(默认使用单精度)

    • 注意:只能在 OpenCL 实现中使用,在 CUDA 实现中目前仅支持双精度。

  • num_gpu 🔗︎, 默认值 = 1, 类型 = int, 约束: num_gpu > 0

    • GPU 数量

    • 注意:仅可在CUDA实现中使用

其他

继续训练与输入分数

LightGBM 支持使用初始分数进行连续训练。它使用一个额外的文件来存储这些初始分数,如下所示:

0.5
-0.1
0.9
...

这意味着第一行数据的初始分数是 0.5,第二行是 -0.1,依此类推。初始分数文件与数据文件逐行对应,每行有一个分数。

如果数据文件名为 train.txt,初始分数文件应命名为 train.txt.init 并放置在与数据文件相同的文件夹中。在这种情况下,如果初始分数文件存在,LightGBM 将自动加载它。

如果原始数据文件 train.txt 存在二进制数据文件,例如名为 train.txt.bin,那么初始分数文件应命名为 train.txt.bin.init

重量数据

LightGBM 支持加权训练。它使用一个额外的文件来存储权重数据,如下所示:

1.0
0.5
0.8
...

这意味着第一行数据的权重是 1.0,第二行是 0.5,依此类推。权重应为非负数。

权重文件与数据文件逐行对应,每行有一个权重。

如果数据文件名为 train.txt,则权重文件应命名为 train.txt.weight 并放置在与数据文件相同的文件夹中。在这种情况下,如果权重文件存在,LightGBM 将自动加载它。

此外,您可以在数据文件中包含权重列。请参考上述的 weight_column 参数

查询数据

对于学习排序,它需要查询信息作为训练数据。

LightGBM 使用一个额外的文件来存储查询数据,如下所示:

27
18
67
...

对于像Python和R中的包装库,这些信息也可以通过数据集参数 group 以类似数组的方式提供。

[27, 18, 67, ...]

例如,如果你有一个包含112个文档的数据集,且 group = [27, 18, 67],这意味着你有3个组,其中前27条记录在第一组,记录28-45在第二组,记录46-112在第三组。

注意:数据应按查询排序。

如果数据文件名为 train.txt,查询文件应命名为 train.txt.query 并放置在与数据文件相同的文件夹中。在这种情况下,如果查询文件存在,LightGBM 将自动加载它。

此外,您可以在数据文件中包含查询/组ID列。请参考上面的 group_column 参数